51.76K
Категория: ПрограммированиеПрограммирование

Двумерные массивы

1.

Двумерные массивы.

2.

• Тип имя_массивы [кол-во строк][кол-во
столбцов];
• int s [20][50]; - целочисленный двумерный
массив s, в котором максимальное кол-во строк
20, столбцов 50.
• float f [100][200]; - вещественный двумерный
массив f c максимальным кол-вом строк 100,
столбцов 200.
• Для работы с двумерным массивом будем
использовать компонент StringGrid.

3.

• Заполнение массива.
• Свойства для StringGrid:
fixedCols->0;
fixedRows->0;
options->goEditing->true.
• При работе с двумерными массивами необходимо
отдельной кнопкой задавать кол-во строк и кол-во
столбцов.
StringGrid1->RowCount=StrToInt(Edit1->Text); - строки.
StringGrid1->ColCount=StrToInt(Edit1->Text); - столбцы.

4.

• Заполнение массива.
for (i=0;i<n;i++)
{for (j=0;j<k;j++)
a [i][j] = StrToFloat(StringGrid1->Cells[j][i]);}}
• i – строка;
• j – столбец;
• n – кол-во строк в массиве;
• k – кол-во столбцов в массиве.
Если в приведенном примере внешний и внутренний цикл
поменять местами, то обработка будет по столбцам.

5.

• Обращение к двумерному элементу массива.
Имя_массива [номер_строки][номер_столбца];
float k [100][150];

6.

• Обратиться к закрепленному элементу массива.
k = [4][1]; (! Т.к. нумерация с 0)
• Обратиться к закрепленной ячейке таблицы.
StringGrid1->Cells [1][4];

7.

• Пример 1:
Составить программу, вычисляющую
произведение элементов двумерного массива.

8.

float a [100][200];
int i, j, n, k;
float p;
n=StringGrid1->RowCount;
k=StringGrid1->ColCount
p=1;
for (i=0;i<n;i++)
{ for (j=0;j<k;j++)
{ a[i][j] = StrToFloat (StringGrid1->Cells [j][i]);
p=p*a[i][j];
}}
ShowMessage (“Произведение =” + FloatToStr(p));

9.

• Пример 2:
Составить программу определяющую положение
первой пятерки в двумерном массиве, (рассматривая
массив по столбам)

10.

int a[100][100];
int i, j, n, k;
n = StringGrid1->RowCount;
k = StringGrid2->ColCount;
for (i=0;i<n;i++)
{for (j=0;j<k;j++)
{ a[i][j] = StrToInt (StringGrid1-> Cells[j][i]); // поиск
bool f = false; // переменная f будет отвечать найдена 5 или нет, пока нет.
for (j=0;j<k;j++)
{ for (i=0;i<n;i++)
{ if (a[i][j]==5)
{ f = true;
ShowMessage (“номер столбца”+ IntToStr (i+1)+ “номер строки” + IntToStr (j+1));
break; // т.к. 5 нашлась, остальные строки рассматривать не надо и делаем досрочный выход
из цикла}}}
if ( f ==true) break; // если 5 найдена, то рассматривать остальные столбцы не надо}
if (f==false)
ShowMessage (“нет 5 в массиве”);}
English     Русский Правила