Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 10.01.2013, 12:16   #1 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль, подпрограммы функций

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

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

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

2 Создать процедуру, переворачивающую квадратный массив matrixnn на 90 градусов по часовой стрелке.
Kampuchiec вне форума   Ответить с цитированием

Старый 10.01.2013, 12:16
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Обсуждения которые так или иначе похожи на вашу тему уже встречались, рекомендую вам их просмотреть

Паскаль, подпрограммы функции
Паскаль, подпрограммы
Подпрограммы
Подпрограммы
Паскаль АВС, сортировка в одномерном массиве без функций и операций
Паскаль. Задача. Массивы. Подпрограммы. Процедуры

Старый 11.01.2013, 04:40   #2 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Второе задание не надо. Объясните как найти сумму всех элементов вокруг максимального в матрице?
Kampuchiec вне форума   Ответить с цитированием
Старый 11.01.2013, 09:44   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Kampuchiec Посмотреть сообщение
Второе задание не надо. Объясните как найти сумму всех элементов вокруг максимального в матрице?
Примерно так:
Код:
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]
Vladimir_S вне форума   Ответить с цитированием
Старый 11.01.2013, 10:08   #4 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Огромное спасибо
Kampuchiec вне форума   Ответить с цитированием
Старый 11.01.2013, 10:49   #5 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Можно посмотреть мою программу, вроде бы все написал а результат при пересчете не верный.
Она должна. Создать функцию, определяющую в целочисленном прямоугольном массиве сумму всех элементов, соприкасающихся углами с его максимальным элементов.
Цитата:
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.
Kampuchiec вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 11.01.2013, 14:12   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Две ошибки.
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];
Vladimir_S вне форума   Ответить с цитированием
Старый 11.01.2013, 14:30   #7 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо еще раз
Kampuchiec вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 20:40.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.