Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.12.2009, 00:38
F@got555 F@got555 вне форума
Прохожий
 
Регистрация: 11.12.2009
Сообщения: 10
Репутация: 10
По умолчанию Dilphi двумерные массивы

Дан двумерный целочисленный массив размерностью m*n. Упорядочить строки матрицы по возрастанию количества нечетных элементов в строке. Сортировка методом выбора.
Ответить с цитированием
  #2  
Старый 11.12.2009, 00:38
F@got555 F@got555 вне форума
Прохожий
 
Регистрация: 11.12.2009
Сообщения: 10
Репутация: 10
По умолчанию

Забивать массив рандомно!=)
Ответить с цитированием
  #3  
Старый 11.12.2009, 00:41
F@got555 F@got555 вне форума
Прохожий
 
Регистрация: 11.12.2009
Сообщения: 10
Репутация: 10
По умолчанию

вот что у мя получилось! но чето не работает!
Код:
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: Пользуемся тегами!

Последний раз редактировалось Admin, 11.12.2009 в 10:17.
Ответить с цитированием
  #4  
Старый 11.12.2009, 17:04
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А в чем не работает.
А вообще, несколько советов.

1. Не надо писать все одной процелурой. Разбей код на несколько процедурок. Проще проверять.
2. Сделай контрольные выводы на экран промежуточных значений.
Ответить с цитированием
  #5  
Старый 12.12.2009, 23:44
F@got555 F@got555 вне форума
Прохожий
 
Регистрация: 11.12.2009
Сообщения: 10
Репутация: 10
По умолчанию

я забыл размерность массива! добавил ее! воткусочек измененного
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  
Старый 12.12.2009, 23:53
F@got555 F@got555 вне форума
Прохожий
 
Регистрация: 11.12.2009
Сообщения: 10
Репутация: 10
По умолчанию

несколькими процедурами у меня препод не разрешает!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:27.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025