Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2014, 15:08   #1
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию Динамические массивы

Приветствую всех участников форум.Хочу попросить ваше помощи.Столкнулся с проблемой при работе с дин.массивами.
Компилирует нормально все,но при вводе значений n и x при нажатии на Button2 выбивает ошибку,я так понимаю идет какое-то несоответствие типов данных
Безымянный.jpg
Код:
//-------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int n,*ptrmas;


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
Label5->Hide();
Edit3->Hide();
Label6->Hide();
Edit4->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i,j,r,x,el,poz,number = 1,Ras, counter = 0;
const int Rasryad = 10;
const int Position = 100;
randomize();
n=StrToInt(Edit1->Text);
StringGrid1->ColCount=n;
ptrmas=new int[n];
int TempArray[Rasryad][Position] = {0};
for(int i = 0; i < n; i++)
 {
  ptrmas[i]= StrToInt(StringGrid1->Cells[i][0]);
 }
   for(int i = 0; i < 4; i++)
    {
     for(int j = 0; j < n; j++)
      {
       Ras = ptrmas[j] / number % 10;
       TempArray[Ras][j] = ptrmas[j];
      }
       counter = 0;
      for(int a = Rasryad-1; a >=0 ; a--)
      {
       for(int b = 0; b < Position; b++)
        {
         if(TempArray[a][b] != 0)
         {
          ptrmas[counter++] = TempArray[a][b];
          TempArray[a][b] = 0;
         }
        }
      }
       number *= 10;
    }
for (int i=0; i<n; i++)StringGrid1->Cells[i][0]=IntToStr(ptrmas[i]);
//-----------------------------------------------------------------------------
switch (RadioGroup1->ItemIndex)
{
case 0:
x=StrToInt(Edit2->Text);
for (i=0; i<n; i++)
{
if (ptrmas[i]==x)
{
el=true; poz=i+1; break;
}
}
if (el==true)
{
Label5->Show();
Edit3->Show();
Edit3->Text=IntToStr(poz);
}
else
ShowMessage("Элемент не найден");break;
case 1:
int m,x,i_key=0,j_key=n-1;
x=StrToInt(Edit2->Text);
while(i_key< j_key)
{
m = (i_key+ j_key)/2;
if (ptrmas[m] < x)  i_key= m+1;
else         j_key = m;
}
if (ptrmas[i_key]!=x)
{
ShowMessage("Элемент не найден");
}
else
{
Label6->Show();
Edit4->Show();
Edit4->Text=IntToStr(i_key+1);
}
break;
}}
Тут использована корзинная сортировка,программно не понимаю ее реализацию,может кто подкинет материал по этому виду сортировки.Пробовал с пузырьковой все работало.
spectrum988 вне форума Ответить с цитированием
Старый 05.05.2014, 15:23   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Весьма вероятно, что в СтринГриде какое-то поле пустое, а надо число. Попробуйте при создании формы (или где-там еще) инициализировать СтринГрид (забить таблицу нулями). Вариант 2 при получении данных из текстовых полей на форме сначала проверять их на "" и считать это нулем.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.05.2014, 17:07   #3
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Спасибо,нашел решение данной проблемы.Сделал по другому немного и заработало.

Последний раз редактировалось spectrum988; 05.05.2014 в 17:10.
spectrum988 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические массивы C tankograd Помощь студентам 1 14.06.2012 18:11
Динамические массивы Kazik Помощь студентам 3 11.09.2011 10:04
динамические массивы veter_s_morya Общие вопросы C/C++ 2 05.03.2011 17:08
Динамические массивы (c++) vanek1 Помощь студентам 2 20.12.2010 22:50
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09