Другие языки программирования и технологии

Задача по делфи на двухмерный массив.

Совсем запутался с этими StringGrid подскажите как Ввести двумерный массив размером 7*4. Поменять столбец с максимальным элементом с первым столбцом двумерного массива. Кто знает де посмотреть можно или исходник буду очень благодарен
Kostya Egolnikov
Kostya Egolnikov
635
Доброго времени суток.

Сначала надо настроить грид путем установки его свойств RowCount и ColCount в соответствующие значения, т. е. в 7 и 4. Кроме того, надо объявить массив такой же размерности.

var A : array[1..7, 1..4] of НужныйТипЗначений;

Вот, собственно, и все. Дальше вводите данные в грид, а для того, чтобы перенести их в массив надо использовать пару вложенных циклов. При этом надо учитывать, что в гриде индексация идет с нуля и что первым параметром при обращении к ячейке грида указывается номер колонки, в отличие от ображения к элементу массива, где первым указывается строка.

for i:=0 to StringGrid1.ColCount-1 do
for j:=0 to StringGrid1.RowCount-1 do
A[j+1, i+1] := StrToInt(StringGrid1.Cells[i, j]); {здесь предполагается, что массив целых чисел}

Добавление единиц к переменным циклов обусловлено тем, что наш массив индексирован с 1.

Столбец в массиве с максимальным значением ищется так

MaxN := A[1,1];
for i:=1 to 7 do
for j:=1 to 4 do
if A[i,j] > MaxN then begin
MaxN := A[i,j];
MaxJ := j;
end;

После работы в переменной MaxJ будет номер столбца с максимальным элементом.

А теперь в цикле по строкам массива меняете местами элементы первого столбца и столбца с индексом MaxJ, используя промежуточноую переменную. Примерно так.

for i:= 1 to 7 do begin
Buf := A[i,1];
A[i,1] := A[i, MaxJ];
A[i, MaxJ] := Buf;
end;

Удачи!
Alik Vitaminoff
Alik Vitaminoff
59 613
Лучший ответ
не совсем поняла условие. проблема с заполнением stringGrid или с обработкой массива?
если первое, то заполнение ячейки: stringgrid1.Cells[i,j]:=value; нумерация ячеек с 0
если второе, то алгоритм такой: ищешь столбец с максимальным элементом (сначала сам максимальный элемент, потом запоминаешь столбец jmax, на котором он находится) ; в цикле по строкам меняешь местами элементы, находящиеся в 1 столбце и столбце с номером jmax (как-то так: tmpv:=arr[i,1]; arr[i,1]:=arr[i,jmax]; arr[i,jmax]:=tmpv). stringgrid заполняешь новыми данными.