|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Dilphi двумерные массивы
Дан двумерный целочисленный массив размерностью m*n. Упорядочить строки матрицы по возрастанию количества нечетных элементов в строке. Сортировка методом выбора.
|
#2
|
|||
|
|||
Забивать массив рандомно!=)
|
#3
|
|||
|
|||
вот что у мя получилось! но чето не работает!
Код:
procedure TForm1.Button1Click(Sender: TObject); var a:array of array of integer; b:array of array of integer; p:array of integer; q:array of integer; m,n,i,j,h,min,y,z,k,x:integer; begin N:=StrToInt(Edit1.text); M:=StrToInt(edit2.text); StringGrid1.colcount:=n; StringGrid1.rowcount:=m; StringGrid2.colcount:=n; StringGrid2.rowcount:=m; for I := 1 to N do for j := 1 to M do A[i,j]:=random(40); for I := 1 to N do for j := 1 to M do StringGrid1.Cells[j-1,i-1]:=IntToStr (a[i,j]); for I := 1 to N do begin k:=0; for j := 1 to M do if A[i,j]mod 2 = 1 then k:=k+1; p[i]:=k; q[i]:=i; end; for h := 1 to N - 1 do begin min:=q[h]; x:=h+1; for i := x to N do if min>p[i] then begin y:=min; min:=p[i]; p[i]:=y; z:=q[h]; q[h]:=q[i]; q[i]:=z; end; end; for h := 1 to n do for i := 1 to n do for j := 1 to m do B[i,j]:=a[q[h],j]; for i := 1 to n do for j := 1 to m do stringgrid2.cells[j-1,i-1]:=IntToStr(B[i,j]); end; end. Последний раз редактировалось Admin, 11.12.2009 в 10:17. |
#4
|
|||
|
|||
А в чем не работает.
А вообще, несколько советов. 1. Не надо писать все одной процелурой. Разбей код на несколько процедурок. Проще проверять. 2. Сделай контрольные выводы на экран промежуточных значений. |
#5
|
|||
|
|||
я забыл размерность массива! добавил ее! воткусочек измененного
StringGrid1.colcount:=n; StringGrid1.rowcount:=m; StringGrid2.colcount:=n; StringGrid2.rowcount:=m; SetLength(a,n,m); SetLength(b,n,m); SetLength(p,n); SetLength(q,n); for I := 1 to N do for j := 1 to M do A[i,j]:=random(40); но он все равно выдает ошибку! он компилирует! запускается! вводишь n и m и тут он как раз и выдает ошибку! выделяет строку которую я выделил цветом! |
#6
|
|||
|
|||
несколькими процедурами у меня препод не разрешает!
|
#7
|
||||
|
||||
Отсчет элементов в динамическом массиве начинается с 0 поэтому:
Код:
for I := 0 to N-1 do for j := 0 to M-1 do A[i,j]:=random(40); Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
|||
|
|||
попробовал! один раз сработала но результат бредом каким то оказался! а когда запустил второй раз опять начал выдавать ошибку на какой то адрес =((
|
#9
|
||||
|
||||
Значит вы на верном пути. Смотрите где еще выходите за границы массива.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
ды я посмотрю тока когда он запустился то у меня неправильно вывелось! следовательно не правильно что-то в самой логике программы! не могли бы это проверить?
|
#11
|
|||
|
|||
Код HTML:
вот так код не выдает ошибок! но считает не то что надо! он у меня выводит первой строкой последнюю строку введенного массива, а во все остальные строки копирует ее! Последний раз редактировалось F@got555, 13.12.2009 в 16:14. |
#12
|
|||
|
|||
Народ! ну помогите пожалуйста!=(((
|
#13
|
|||
|
|||
Мне помогли! кого интересует вот код!
Код HTML:
|