![]() |
|
#1
|
|||
|
|||
![]() Задача такая:
Составить программу, которая в матрице K(m,n), m<=10, N<=12 меняет местами строки содержащие максимальное количество четных и нечетных элементов? Если во всех строках это количества одинаковы, то поменять местами первую и последнюю строки матрицы. Вывести исходную и полученную матрицы, найденные количества и номера найденных строк. Получается только до "если во всех строках это количество одинаково". Помогите пожалуйста! Код:
program Project2; {$APPTYPE CONSOLE} uses SysUtils; var A:array[1..10,1..12] of integer; I,J,N,M,Buf,Ichet,Inchet,S:integer; C:array[1..12] of integer; P:array[1..12] of integer; begin Writeln('Vvedita M,N'); Readln(M,n); Writeln('Vvedite matrizy'); For I:=1 to N do For J:=1 to M do begin Write('a[',i,',',j,']='); read(a[i,j]); end; Writeln('ishodnaya matriza'); For i:=1 to N do begin For j:=1 to m do write(a[i,j],' '); writeln; writeln; end; c[i]:=0; p[i]:=0; For i:=1 to n do For j:=1 to m do IF a[i,j] mod 2 = 0 then c[i]:=c[i]+1 else If a[i,j] mod 2 <> 0 then P[i]:=p[i]+1; Ichet:=1; Inchet:=1; For I:=1 to m do If I>Ichet then Ichet:=I else If Inchet<I then Inchet:=I; s:=0; {эта часть проблемная}For I:=1 to N do If C[i]=p[i] then s:=s+1; If s=n then begin For I:=1 to N do For J:=1 to M do begin buf:=a[1,j]; a[1,j]:=a[n,j]; a[n,j]:=buf; end; end else For I:=1 to n do For J:=1 to M do begin Buf:=a[ichet,j]; a[ichet,j]:=a[inchet,j]; a[inchet,j]:=buf; end; readln; writeln; writeln('Chet'); For I:=1 to N do write(c[i],' ' ); writeln; For I:=1 to N do write(p[i],' ' ); writeln; writeln; writeln('novaya'); For i:=1 to n do begin For j:=1 to m do write(a[i,j],' '); writeln; writeln; end; readln; { TODO -oUser -cConsole Main : Insert code here } end. Последний раз редактировалось Admin, 04.11.2011 в 14:31. |