• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль, подпрограммы функций

Kampuchiec

Новые
Регистрация
5 Дек 2012
Сообщения
27
Реакции
0
Баллы
0
Паскаль, подпрограммы функций

Помогите с двумя программами.

Размеры исходных массивов задавать именованными константами в головной программе. Элементы исходных массивов задавать целыми случайными числами в диапазоне от v_min до v_max. Границы диапазона v_min и v_max задать с консоли. Ввод исходных данных и вывод результатов производить в головной программе.
Запрещается использовать в подпрограммах глобальные переменные и рабочие массивы. Векторы передавать в подпрограммы как открытые массивы. Не использовать конкретные числа в качестве фактических параметров процедур – только имена переменных, массивов или имена констант.

1 Создать функцию, определяющую в целочисленном прямоугольном массиве matrixnm сумму всех элементов, соприкасающихся углами с его максимальным элементом.

2 Создать процедуру, переворачивающую квадратный массив matrixnn на 90 градусов по часовой стрелке.
 
Второе задание не надо. Объясните как найти сумму всех элементов вокруг максимального в матрице?
 
Второе задание не надо. Объясните как найти сумму всех элементов вокруг максимального в матрице?
Примерно так:
Код:
S:=0;
for i:=Imax-1 to Imax+1 do
 for j:=Jmax-1 to Jmax+1 do
  if (i>0) and (i<=N) and (j>0) and (j<=M) and Not((i=Imax) and (j=Jmax)) then
   S:=S+a[i,j]
 
Можно посмотреть мою программу, вроде бы все написал а результат при пересчете не верный.
Она должна. Создать функцию, определяющую в целочисленном прямоугольном массиве сумму всех элементов, соприкасающихся углами с его максимальным элементов.
uses crt;
const
n=4;
c=5;
type massiv = array [1..n,1..c] of integer;
procedure zapolnenie(var m:massiv);
var vmin,vmax,i,j:integer;
begin
randomize;
write('vmin=');
readln(vmin);
write('vmax=');
readln(vmax);
for i:=1 to n do
begin
for j:=1 to c do
m[i,j]:=random(vmax-vmin+1)+vmin;
end
end;
procedure vivod(var m:massiv);
var i,j:integer;
begin
For i:=1 To n Do
Begin
For j:=1 To c Do
Write(m[i,j]:5);
WriteLn;
End;
end;
procedure max (m:massiv);
var jmax,imax,max,i,s,j:integer;
begin
max:=0;
for i:=1 to n do
begin
for j:=1 to c do
begin
if max<m[i,j]
then
max:=m[i,j];
imax:=i;
jmax:=j;
end;
end;
S:=0;
for i:=imax-1 to imax+1 do
for j:=jmax-1 to jmax+1 do
begin
if (i>0) and (i<=n) and (j>0) and (j<=c) and Not((i=imax) and (j=jmax)) then
S:=S+m[imax,jmax];
end;
writeln('max=',max);
writeln('sum=',S);
end;
var m:massiv;
begin
writeln('Massiv');
Zapolnenie(m);
vivod(m);
max(m);
end.
 
Две ошибки.
1. У Вас:
begin
max:=0;
for i:=1 to n do
begin
for j:=1 to c do
begin
if max<m[i,j]
then
max:=m[i,j];
imax:=i;
jmax:=j;
end;
end;
Надо:
Код:
max:=vmin; {Лучше так}
for i:=1 to n do
  for j:=1 to c do
   if max<m[i,j] then
    begin
     max:=m[i,j];
     imax:=i;
     jmax:=j;
    end;
2. У Вас:
S:=S+m[imax,jmax];
Надо:
Код:
S:=S+m[i,j];
 
Назад
Сверху