22.04.2019, 02:18 [+3 UTC]
в нашей команде: 3 558 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.74 (12.04.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
09.03.2019, 10:08

Форум:
21.04.2019, 18:31

Последний вопрос:
22.04.2019, 02:11
Всего: 149341

Последний ответ:
21.04.2019, 21:05
Всего: 258224

Последняя рассылка:
22.04.2019, 00:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
20.01.2012, 18:47 »
Sanek
Спасибо за помощь))) [вопрос № 185217, ответ № 269653]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 454
puporev
Статус: Профессионал
Рейтинг: 157
Асмик Гаряка
Статус: Советник
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 195242
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: syndicate71rus (Посетитель)
Отправлена: 14.04.2019, 14:39
Поступило ответов: 1

Здравствуйте! Прошу помощи в следующем вопросе:

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

-----
 Прикрепленный файл (кликните по картинке для увеличения):

Состояние: Консультация закрыта

Ответ # 277855 от puporev (Профессионал)

Здравствуйте, syndicate71rus!

Код (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.

если все же хотите рандомный ввод, замените ввод так
Код (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;


Консультировал: puporev (Профессионал)
Дата отправки: 15.04.2019, 14:25

5
нет комментария
-----
Дата оценки: 16.04.2019, 10:34

Рейтинг ответа:

+1

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 195242

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 1

 +1 
 
= общий = | 14.04.2019, 15:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
syndicate71rus:

Вы бы лучше код выложили.
На картинке практически ничего не видно.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

puporev
Профессионал

ID: 401888

# 2

 +1 
 
= общий = | 14.04.2019, 17:19 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
syndicate71rus:

Поскольку ничего не видно, предлагаю свой код.

Код (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;}

syndicate71rus
Посетитель

ID: 402946

# 3

= общий = | 14.04.2019, 19:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

Код (Pascal) :: выделить код
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.

-----
Последнее редактирование 15.04.2019, 13:18 Зенченко Константин Николаевич (Старший модератор)

syndicate71rus
Посетитель

ID: 402946

# 4

= общий = | 16.04.2019, 15:27 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
puporev:

А можете помочь с алгоритмом блок схема. Вот наработка. https://www.draw.io/ это сайт где открывается схема, а здесь сама схема https://yadi.sk/d/gEgjhxVZ29pbkw

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 5

 +1 
 
= общий = | 16.04.2019, 15:54 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
syndicate71rus:

Pascal Программа для создания блок-схем

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

syndicate71rus
Посетитель

ID: 402946

# 6

= общий = | 16.04.2019, 16:21 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

Спасибо, а можете подсказать, как его оттуда распечатать, мне необходимо на А1

-----
Последнее редактирование 16.04.2019, 16:28 syndicate71rus (Посетитель)

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 7

 +1 
 
= общий = | 16.04.2019, 16:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
syndicate71rus:

Печатаете в файл, возможно в формате PDF, ну обычно на руках принтеры А4, в редком случае А3, А1, Вам нужно искать в принт-центрах.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

syndicate71rus
Посетитель

ID: 402946

# 8

= общий = | 16.04.2019, 17:07 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

Спасибо вам большое за помощь

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.17385 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.74 от 12.04.2019
Версия JS: 1.33 | Версия CSS: 3.35