Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2021, 00:24   #1
gavori
Пользователь
 
Регистрация: 25.04.2021
Сообщений: 10
По умолчанию двумерный массив превратить в динамический массив

Код:
void __fastcall TForm2::FormCreate(TObject *Sender)
{
  for(int i=1; i<=5;i++)StringGrid1->Cells[0][i]=IntToStr(i);
  for(int j=1; j<=6;j++)StringGrid1->Cells[j][0]=IntToStr(j);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
 int A[5][6],max; int i, j, ind_i, ind_j;
 for (i=0;i<5;i++)
 for (j=0;j<6;j++)
 if(StringGrid1->Cells[j+1][i+1] != "")
 A[i][j]=StrToFloat(StringGrid1->Cells[j+1][i+1]);
 else
 { ShowMessage(" ["+IntToStr(i+1)+","+ IntToStr(j+1)+"]"); break; }
max=A[0][0];
ind_i=0; ind_j=0;
for (i=0; i<5; i++)
for (j=0; j<6; j++)
if (A[i][j] > max) { max=A[i][j]; ind_i=i; ind_j=j; }
Edit1->Text=IntToStr(max) + " | " +IntToStr(ind_i+1)+
" строка "+IntToStr(ind_j+1)+" столбец |";
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
 int i, j;
 for (i=0; i<5; i++)
 for (j=0; j<6; j++) StringGrid1->Cells[j+1][i+1]=" ";
 Edit1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button3Click(TObject *Sender)
{
Close();
}
ответ нужен в виде кода или фрагментов кода за ответ буду благодарен!
gavori вне форума Ответить с цитированием
Старый 13.08.2021, 15:07   #2
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Двумерных массивов как таковых не предусмотрено. Есть массивы массивов, ими можно представить массивы любой размерности. Меняем
Цитата:
Сообщение от gavori Посмотреть сообщение
Код:
int A[5][6] , max;
,
на
Код:
int **A=nullptr, max;
. Дальше, надо понять, где брать размер динамического массива. Прототип обработчик щелчка определён и трогать его нельзя, соответственно, принять как параметр нельзя. Пусть размеры прочитаны и помещены в локальные переменные
Код:
size_t Rows;
и
Код:
size_t Columns;
. Счётчики циклов формально тоже должны быть size_t, но с учётом возможностей TStringGrid это, наверное, не актуально, можно, наверное, и Rows и Columns определить типом int. Но вот размеры прочитаны и помещены в переменные Rows и Columns. Теперь по A выделяем массив указателей:
Код:
A=new (std::nowthrow) int* [Columns];
if (A==nullptr)
{
 // Замените данный комментарий на вывод сообщения об ошибке.
}
else
{
 //А вместо этого комментария должно быть всё остальное
 delete []A;
}
. Строка
Код:
 delete A[];
должна быть в конце. Теперь займёмся «остальным». И для начала выделим по элементам A массивы целых:
Код:
A=new (std::nowthrow) int* [Columns];
if (A==nullptr)
{
 // Замените данный комментарий на вывод сообщения об ошибке.
}
else
{
 for (i=0; i<Columns; ++i)
 {
   A[i]=new (std::nowthrow) int[Rows];
   if (A[i]==nullptr)
   {
    // Замените этот комментарий на вывод сообщения об ошибке
    for (; i<Columns; --i)
    {
     delete [] A[i];
    }
    delete []A;
    A=nullptr;
   }
   if (A!=nullptr)
   {
    // А вместо этого комментария вставляем Ваш текст.
   }
 }
 if (A!=nullptr)
 {
  for (i=0; i<Columns; ++i)
  {
   delete [] A[i];
  } 
  delete []A;
}
.
taras-proger77 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный динамический массив C++ Joesidorov Помощь студентам 3 24.12.2015 17:22
Двумерный динамический массив Markuss Помощь студентам 6 07.12.2010 09:29
Двумерный динамический массив Markuss Общие вопросы C/C++ 5 07.12.2010 00:40
Двумерный динамический массив Inna_L Общие вопросы C/C++ 2 01.10.2010 22:27

Реклама для незарегистрированных, регистрация на форуме