IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Матрица
-Анастасия-
сообщение 31.10.2006 13:59
Сообщение #1


Гость






Помогите, будте добры!!!!!!!!!!!!!!!!!
Дана матрица размера 5 на 10ю найти минимальный\максимальный среди тех строк\столбцов, которые упорядочены либо по возрастанию, либо по убыванию. если такие строки\столбцы отсутствуют,то вывести 0.

я конечно чего-й-то написала, но не работают некоторые процедуры.
еще такой вопрос как сократить количество этих самых процедур????

program matrix21;
type matrix=array[1..50,1..50] of integer;
var
a:matrix;
i,j,p,p2,r,r2,s,d,max:integer;
{************************************************}
procedure ybuBaniestroki(a:matrix; var r:integer; var max:integer);
begin
{ystanoBka fla*ka}
r:=0;
for i:=1 to 4 do begin
for j:=1 to 9 do begin
if a[i,j+1]>=a[i,j] then r:=1; {Smena fla*ka} end;
begin if r=0 then writeln('Stroka #',i,' ybuBaet');
end;

end;
end;
{*************************************************}
procedure Bozrastaniestroki(a:matrix; var p:integer);
begin
{ystanoBka fla*ka}
p:=0;
for i:=1 to 4 do begin
for j:=1 to 9 do begin
if a[i,j+1]<=a[i,j] then p:=1; {Smena fla*ka} end;
begin
if p=0 then writeln('Stroka ',i,' Bozrastaet');
end;
for j:=2 to 5 do
max:=a[i,1];
begin if a[i,j]>max then max:=a[i,j];
end;
writeln('max=',max:5);
end;
end;
{**************************************************}
procedure ybuBaniestolbca(a:matrix; var r2:integer);
begin
{ystanoBka fla*ka}
r2:=0;
for i:=1 to 4 do begin
for j:=1 to 9 do begin
if a[i+1,j]>=a[i,j] then r2:=1; {Smena fla*ka} end;
begin
if r2=0 then writeln('Stolbec ',j,' ybuBaet');
end;
end;
end;
{**************************************************}
procedure Bozrastaniestolbca(a:matrix; var p2:integer);
begin
{ystanoBka fla*ka}
p2:=0;
for i:=1 to 4 do begin
for j:=1 to 9 do begin
if a[i+1,j]<=a[i,j] then p:=1; {Smena fla*ka} end;
begin
if p=0 then writeln('Stroka ',j,' Bozrastaet');
end;
end;
end;
{*************************************************}
procedure BuBodnylj(p,r,p2,r2:integer; var s:integer);
begin
s:=0;
if (p=0) and (r=0) and (r2=0) and (p2=0) then writeln('0');
end;
{*************************************************}

begin
{BBod matricu}
writeln('BBedite elementu matricu razmera 5*10');
for i:=1 to 5 do begin
for j:=1 to 10 do begin
write('a[',i,',',j,']=');
readln(a[i,j]) end;
end;
writeln;

{BuBod matricu}
writeln('Bawa matrica');
for i:=1 to 5 do begin
for j:=1 to 10 do write(a[i,j]:5);
writeln;
end;
{Obrawenie k proceduram}
ybuBaniestroki(a,r,max);
Bozrastaniestroki(a,p);
ybuBaniestolbca(a,r2);
Bozrastaniestolbca(a,p2);
BuBodnylj(p,r,p2,r2,s);
end.

М
Теги используем...



Сообщение отредактировано: volvo - 2.11.2006 0:29
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
volvo
сообщение 31.10.2006 16:31
Сообщение #2


Гость






Через функции (а не процедуры), можно... Переводить на процедуры не буду, ибо это извращение. Нужно - делай сама...

program matrix21;
type matrix=array[1..50,1..50] of integer;

const
strOrder: array[boolean] of string = (
' A_Z', ' Z_A'
);

function checkLine(a:matrix; m, n: integer; order: boolean): integer;
var
flag: boolean;
min, max: integer;
i, j, count: integer;
begin
count := 0;
for i:=1 to m do begin
flag := true;
for j:=1 to n-1 do
if (a[i, j+1] >= a[i,j]) = order then flag := false;

if flag then begin
inc(count);
writeln('Stroka #', i, strOrder[order]);
min := a[i, 1]; max := min;
for j := 2 to n do begin

if min > a[i, j] then min := a[i, j];
if max < a[i, j] then max := a[i, j];

end;
writeln('min = ', min, ' max = ', max);
end;
end;
checkLine := count;

end;

function checkColumn(a:matrix; m, n: integer; order: boolean): integer;
var
flag: boolean;
min, max: integer;
i, j, count: integer;
begin
count := 0;
for j:=1 to n do begin
flag := true;
for i:=1 to m-1 do
if (a[i+1, j] >= a[i,j]) = order then flag := false;

if flag then begin
inc(count);
writeln('Stolbec #', i, strOrder[order]);
min := a[1, j]; max := min;
for i := 2 to m do begin

if min > a[i, j] then min := a[i, j];
if max < a[i, j] then max := a[i, j];

end;
writeln('min = ', min, ' max = ', max);
end;
end;
checkColumn := count;

end;


var
i, j: integer;
a: matrix;

begin
{BBod matricu}
writeln('BBedite elementu matricu razmera 5*10');
for i:=1 to 5 do begin
for j:=1 to 10 do begin
write('a[',i,',',j,']=');
readln(a[i,j]) end;
end;
writeln;

{BuBod matricu}
writeln('Bawa matrica');
for i:=1 to 5 do begin
for j:=1 to 10 do write(a[i,j]:5);
writeln;
end;
{Obrawenie k proceduram}
if
checkLine(a, 5, 10, false) +
checkLine(a, 5, 10, true) +
checkColumn(a, 5, 10, false) +
checkColumn(a, 5, 10, true) = 0 then writeln('0');
end.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.07.2025 10:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"