
04.11.2011, 14:27
|
Прохожий
|
|
Регистрация: 04.11.2011
Сообщения: 1
Репутация: 10
|
|
Массивы
Задача такая:
Составить программу, которая в матрице 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.
Админ: Пользуемся тегами для оформления кода!
|