Консультация № 195242
14.04.2019, 14:39
0.00 руб.
1 9 1
Здравствуйте! Прошу помощи в следующем вопросе:

Дана матрица размерами M x N. Найти минимальный среди элементов тех строк, которые упорядочены либо по возрастанию, либо по убыванию. Если упорядоченные строки в матрице отсутствуют, то вывести 0. Для отладки программы матрицу сформировать с помощью генератора случайных чисел. Помогите пожалуйста написать программу или отредактировать если что не так. Turbo Pascal.
Прикрепленные файлы:
7a80f61323a628c76192adc9e739b819653bec51.jpg

Обсуждение

давно
Старший Модератор
31795
6196
14.04.2019, 15:36
общий
Адресаты:
Вы бы лучше код выложили.
На картинке практически ничего не видно.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Профессор
401888
1232
14.04.2019, 17:19
общий
Адресаты:
Поскольку ничего не видно, предлагаю свой код.
[code lang=pascal]uses crt;
var a:array[1..10,1..10] of integer;
m,n,i,j,k,v,u,imn,min:integer;
begin
clrscr;
repeat
writeln('Введите количество строк и столбцов от 3 до 10');
readln(m,n);
until(m in [3..10])and(n in [3..10]);
{рандомный ввод практически не даст упорядоченных строк}
writeln('Введите построчно элементы матрицы,');
writeln('в том числе строки упорядоченные по возрастанию или по убыванию');
for i:=1 to m do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
clrscr;
writeln('Введенная матрица');
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:5);
writeln;
end;
k:=0; {есть ли упорядоченные строки}
for i:=1 to m do
begin
v:=0;{кол. возрастаний}
u:=0; {кол. убываний}
for j:=2 to n do
if a[i,j]>a[i,j-1] then inc(v)
else if a[i,j]<a[i,j-1] then inc(u);
if v=n-1 then imn:=a[i,1]{если все возрастают, минимальный в строке первый}
else if u=n-1 then imn:=a[i,n]; {если все убывают, минимальный в строке последний}
if((v=n-1)or(u=n-1))and(k=0) then {если соблюдается условие и это первая строка}
begin
min:=imn; {ее минимальный есть минимальный в матрице}
k:=1; {далее строка не первая}
end
else if imn<min then min:=imn;{если не первая и минимум в ней меньше то он минимум матрицы}
end;
if k=0 then write(k)
else write('Минимальный в упорядоченных строках=',min);
readln
end.
{если все же хотите рандомный ввод, замените ввод так
randomize;
writeln('Матрица');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(20);
write(a[i,j]:3);
end;
writeln;
end;}
[/code]
давно
Посетитель
402946
16
14.04.2019, 19:23
общий
15.04.2019, 13:18
Адресаты:
[code lang=pascal h=200]program matrica;

Uses crt;
var
a: array [1..50, 1..50] of integer;
i, j, x, y, k, m, n, min, g: integer;

begin
clrscr;
write('Kolvo strok: ');
readln(m);
write('kolvo stolbov: ');
readln(n);
randomize;
writeln('Ishodnay matrica: ');
for i := 1 to m do
begin
for j := 1 to n do
begin
a[i, j] := random(50);
write(a[i, j]:4);
end;
for i := 1 to m do
begin
x := 0;y := 0;
for j := 1 to n - 1 do
begin
if a[i, j] > a[i, j + 1] then inc(x);
if a[i, j] < a[i, j + 1] then inc(y);
end;
min := 1;
if (x = n - 1) or (y = n - 1) then
begin
for k := 1 to n do
if a[i, k] < a[i, min] then min := k;
writeln('minimal element', i, ' stroki - ', a[i, min]);
g := 1;
end;
end;
if g = 0 then writeln(0);
readkey;
end;
end.[/code]
давно
Профессор
401888
1232
15.04.2019, 14:25
общий
это ответ
Здравствуйте, syndicate71rus!
[code lang=pascal]uses crt;
var a:array[1..10,1..10] of integer;
m,n,i,j,k,v,u,imn,min:integer;
begin
clrscr;
repeat
writeln('Введите количество строк и столбцов от 3 до 10');
readln(m,n);
until(m in [3..10])and(n in [3..10]);
{рандомный ввод практически не даст упорядоченных строк}
writeln('Введите построчно элементы матрицы,');
writeln('в том числе строки упорядоченные по возрастанию или по убыванию');
for i:=1 to m do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
clrscr;
writeln('Введенная матрица');
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:5);
writeln;
end;
k:=0; {есть ли упорядоченные строки}
for i:=1 to m do
begin
v:=0;{кол. возрастаний}
u:=0; {кол. убываний}
for j:=2 to n do
if a[i,j]>a[i,j-1] then inc(v)
else if a[i,j]<a[i,j-1] then inc(u);
if v=n-1 then imn:=a[i,1]{если все возрастают, минимальный в строке первый}
else if u=n-1 then imn:=a[i,n]; {если все убывают, минимальный в строке последний}
if((v=n-1)or(u=n-1))and(k=0) then {если соблюдается условие и это первая строка}
begin
min:=imn; {ее минимальный есть минимальный в матрице}
k:=1; {далее строка не первая}
end
else if imn<min then min:=imn;{если не первая и минимум в ней меньше то он минимум матрицы}
end;
if k=0 then write(k)
else write('Минимальный в упорядоченных строках=',min);
readln
end.[/code]
если все же хотите рандомный ввод, замените ввод так
[code lang=pascal]randomize;
writeln('Матрица');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(20);
write(a[i,j]:3);
end;
writeln;
end;[/code]
5
давно
Посетитель
402946
16
16.04.2019, 15:27
общий
Адресаты:
А можете помочь с алгоритмом блок схема. Вот наработка. https://www.draw.io/ это сайт где открывается схема, а здесь сама схема https://yadi.sk/d/gEgjhxVZ29pbkw
давно
Старший Модератор
31795
6196
16.04.2019, 15:54
общий
Адресаты:
Pascal Программа для создания блок-схем
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
402946
16
16.04.2019, 16:21
общий
16.04.2019, 16:28
Адресаты:
Спасибо, а можете подсказать, как его оттуда распечатать, мне необходимо на А1
давно
Старший Модератор
31795
6196
16.04.2019, 16:36
общий
Адресаты:
Печатаете в файл, возможно в формате PDF, ну обычно на руках принтеры А4, в редком случае А3, А1, Вам нужно искать в принт-центрах.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
402946
16
16.04.2019, 17:07
общий
Адресаты:
Спасибо вам большое за помощь
Форма ответа