![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 22.10.2011
Сообщений: 4
|
![]()
Дана целочисленная прямоугольная матрица. Упорядочьте строки этой матрицы по возрастанию количества одинаковых элементов в каждой строке.(используя процедуры).
Мой способ решения подразумевает: используя массив для нахождения одинаковых элементов, подсчитать их количество и вбить в отдельный одномерный массив. Но дело в том, что сортировка не работает, как надо и в последней строке появляются неизвестные мне цифры и сортировать получается только по убыванию, а надо по возрастанию... Прошу, помогите.... исправьте мой код... ну или напишите более рациональное решение... пожалуйста... program zashita; uses crt; const N=4; M=3; type mass=array[1..N] of integer; matr=array[1..m] of mass; fl=array[1..N,1..N] of byte; contr=array[1..N] of integer; procedure vvod (var a:matr); var i,j:byte; begin writeln('vvod massiva'); for i:=1 to N do for j:=1 to m do read(a[i,j]); end; procedure flag (var fl:fl; a:matr); var i,j,k,S: byte; begin for i:=1 to N do for j:=1 to m do begin fl[i,j]:=0; end; for j:=1 to m do for i:=1 to n do if fl[i,j]=0 then begin fl[i,j]:=1; for k:=j+1 to m do if a[i,j]=a[i,k] then begin fl[i,j]:=fl[i,j]+1; fl[i,k]:=fl[i,j]; end; end; end; procedure massiv (var contr:contr; fl:fl;a:matr); var i,j,k:byte; r:integer; begin for i:=1 to n do for k:=1 to m do begin r:=fl[i,k]; j:=fl[i,k+1]; if r<=j then contr[i]:=j else contr[i]:=r; end; end; procedure sort (var a:matr; contr:contr); var i,j,b,k:byte; c:integer; begin j:=0; for i:=2 to N do if contr[i]<contr[i+1] then begin for k:=1 to m do begin c:=a[i,k]; a[i,k]:=a[i-1,k]; a[i-1,k]:=c; end; j:=j+1; b:=contr[i]; contr[i]:=contr[i+1]; contr[i+1]:=b; end; end; procedure vivod (a:matr); var i,j:byte; begin writeln ('sort mass'); for i:=1 to n do begin for j:=1 to m do write (a[i,j]); writeln; end; end; var a:matr;s:mass;fla:fl;c:contr; i,j:byte; begin clrscr; vvod(a); flag(fla,a); writeln('massiv flaga'); for i:=1 to N do begin for j:=1 to m do write(fla[i,j]); writeln ; end; massiv(c, fla,a); writeln('massiv control'); for i:=1 to n do writeln(c[i]); sort(a,c); vivod(a); writeln('contr'); for i:=1 to n do writeln(c[i]); end. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка двумерного массива | Makarov | Помощь студентам | 8 | 29.10.2011 11:55 |
Сортировка двумерного массива | shadowfiend | C++ Builder | 0 | 21.04.2011 19:29 |
Сортировка двумерного массива на C/C++ | HDMI | Помощь студентам | 1 | 04.12.2009 20:08 |
Сортировка двумерного массива(С) | Александр Елис | Помощь студентам | 1 | 31.10.2009 13:25 |
[С++] Сортировка 2ух строк двумерного массива. | ReDev1L | Помощь студентам | 1 | 19.10.2008 03:45 |