Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2014, 14:01   #1
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию найти наибольшее и наименьшее значение в заштрихованной области матрицы / Pascal ABC

не могу найти ошибку.моя.JPG
код:
Код:
program z6;
uses crt;
var a:array[1..1000,1..1000] of integer;
n,i,j,max,min:integer;

Begin
clrscr;
writeln('Vvedite n (n - nechetnoe)');
repeat
readln(n);
if n mod 2=0
then
writeln('Vvedite eshe raz');

until n mod 2=1;
writeln('n=',n);
for i:=1 to n do
begin for j:=1 to n do
begin
a[i,j]:=random(100);
write(a[i,j]:4);
end;
writeln;
end;
min:=a[i,j];
max:=a[i,j];
for i := 1 to n do begin
for j := 1 to n do begin
if ((i <= n div 2) and (j <= n - i + 1)) or ((i >= n div 2) and (j <= n - i + 1)) then begin
if (a[i,j] < min) then min := a[i,j];
if (a[i,j] > max) then max := a[i,j];
end;
end;
end;
writeln(min,',',max);
readln
end.

Последний раз редактировалось Stilet; 02.07.2014 в 14:43.
Veronika_13 вне форума Ответить с цитированием
Старый 02.07.2014, 14:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Думаю поиск может быть таким:
Код:
for i:=1 to n div 2 do
 for j:=n downto n-i do
  if a[i,j]>max then max:=a[i,j] else
   if a[i,j]<min then min:=a[i,j];

for i:=n div 2 to n do
 for j:=1 to n div 2-i do
  if a[i,j]>max then max:=a[i,j] else
   if a[i,j]<min then min:=a[i,j];
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.07.2014, 15:04   #3
Veronika_13
Пользователь
 
Регистрация: 27.03.2014
Сообщений: 52
По умолчанию

спасибо большое. всё работает.
Veronika_13 вне форума Ответить с цитированием
Старый 02.07.2014, 15:19   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Как вариант объединенных циклов (можно раскрыть скобки или заменить деление на логические операции)
Код:
 min:=a[i div 2, j div 2];
 max:=min;
 for i := 1 to n do begin
   for j:=(n-i)*(1 - (i-1) div (n div 2+1)) + 1
   to (n-1) - (i-1)*((i-1) div (n div 2+1)) + 1 do begin
     write(a[i, j]:4);
     if (a[i,j] < min) then min := a[i,j];
     if (a[i,j] > max) then max := a[i,j];
   end;
   writeln;
 end;
Центральные линии входят (иначе убрать из кода +-1)
eoln вне форума Ответить с цитированием
Старый 02.07.2014, 17:04   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Как вариант
Я тоже сначала как-то так хотел, но потом оказалось лень думать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
даны три матрицы,найти наибольшее значение элемента! Елешечка Паскаль, Turbo Pascal, PascalABC.NET 1 04.12.2013 08:55
Найти наибольшее значение матрицы vlad1kT Помощь студентам 0 16.06.2013 10:49
найти сумму элементов матрицы в заштрихованной области denis_stell Помощь студентам 1 03.03.2010 19:45
Задача:Найти наименьшее и наибольшее значение заданной функции с помощью массива.(Pascal) abiturient Помощь студентам 12 08.10.2009 20:35