Консультация № 130811
06.04.2008, 15:15
0.00 руб.
0 1 1
Уважаемые эксперты помогите решить задачи:
Дана целочисленная прямоугольная матрица. Определить:
1) количество строк, не содержащих ни одного нулевого элемента (оформить в виде функции);
2) максимальное из чисел, встречающихся в заданной матрице более одного раза (оформить в виде процедуры)


Приложение:
Размерности массивов следует задать именованными константами. Все необходимые данные должны передаваться подпрограммам в качестве параметров; все величины, используемые только внутри подпрограмм, должны быть описаны как локальные. Использование глобальных переменных в подпрограммах не допускается. Вывод результатов работы подпрограмм должен выполняться в главной программе.

Обсуждение

давно
Профессор
401888
1232
06.04.2008, 17:06
общий
это ответ
Здравствуйте, Stamp!
Решение обоих задач в приложении. Постарался соблюсти все условия, если что не так, пишите.

Приложение:
program matrica1;uses crt;const n=6; m=4;type matr=array[1..n,1..m]of integer;var i,j:integer; a:matr;Function Kol(mas:matr):integer;{функция подсчета безнулевых строк}var i,j,k,p:integer;begink:=0;for i:=1 to n do begin p:=0; for j:=1 to m do if mas[i,j]=0 then begin p:=p+1; {считаем ноли в строке} end; if p=0 then k:=k+1;{если их нет, считаем строку} end;Kol:=k;end;beginclrscr;for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(10); write(a[i,j]:3); end; writeln; end;writeln(‘Kolichestvo strok bez 0=‘,Kol(a));readln;end.program matrica2;uses crt;const n=4; m=5;type matr=array[1..n,1..m]of integer; mass=array[1..n*m]of integer;var i,j,pov_max:integer; a:matr;Procedure Max2(ms:matr; var el:integer);{процедура, находящая первый повторяющийся максимальный элемент}var i,j,k,x:integer; b:mass;begink:=0;for i:=1 to n do begin for j:=1 to m do begin k:=k+1; b[k]:=ms[i,j];{разворачиваем матрицу в линейный массив} end; end;for i:=1 to k-1 dofor j:=1 to k-1 doif b[j]<b[j+1] {then сортируем его по убыванию} begin x:=b[j];b[j]:=b[j+1];b[j+1]:=x end;for i:=1 to k-1 doif b[i]=b[i+1] then begin el:=b[i]; {ищем первые два одинаковых элемента} break; endelse if (i=k-1)and(b[i]<>b[i+1]) then begin writeln(‘Takogo elementa net‘); readln; exit; {если их нет, завершаем программу} end;end;beginclrscr;randomize;for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(10); write(a[i,j]:3); end; writeln; end;Max2(a,pov_max);Writeln(‘Takoj element = ‘,pov_max);readln;end.
Форма ответа