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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2014, 13:54   #1
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию подпрограммы

Добрый день, возникла небольшая проблемка, сделал лабораторную работу, вот код



Код:
type mas=array[1..100]of integer;
procedure sort(const a:mas; const b:integer; var imax:integer);
var i : integer;
begin
  imax:=1;
  for i:=1 to b do
      if a[i]>a[imax] then imax:=i;
end;
 
var
  x, y: mas;
  n: integer;
  j: integer;
  jmax:INTEGER;
begin
  writeln('vvedite kolicestvo elementov massiva x.Ot 0do 80');
  readln(n);
  writeln('vvedite cisla massiva x');
  for j := 1 to n do
    readln(x[j]);
 
 sort(x,n,jmax);
writeln('maksimalnui element massiva=',x[jmax]);
writeln('on naxoditza pod nomerom',jmax);
Readln;
 
  writeln('vvedite kolicestvo elementov massiva y.Ot 0 do 70');
  readln(n);
  writeln('vvedite cisla massiva y');
  for j := 1 to n do
    readln(y[j]);
sort(y,n,jmax);
writeln('maksimalnui element massiva=',y[jmax]);
writeln('on naxoditza pod nomerom',jmax); 
Readln;;
 
end.

На защите преподаватель попросил изменить подпрограмму так,чтобы программа вместо "порядкового номера числа" выдавала значение максимального числа, как это сделать?подскажите пожалуйста.

Вот начальное задание" Найти наибольшие элементы и их порядковые номера массивов Х (N) и Y (М)"

пробовал по всякому-не помогало,посоветовали так-тоже не помогло
Код:
procedure sort(const a:mas; const b:integer; var imax:integer);
var i : integer;
begin
  imax:=1;
  for i:=1 to b do
      if a[i]>a[imax] then imax:=a[i];
end;
12.jpg
shalgan вне форума Ответить с цитированием
Старый 02.01.2014, 21:39   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Тут похоже неверно понят совет.

Код:
procedure MaxElement(const a:mas; const b:integer; var imax:integer);
{Возвращает номер максимального элемента}
var i : integer;
   max : integer;
begin
 imax := 1;
 max := a[imax];
 for i := 2 to b do
      if a[i] > max then begin
          imax := i;
          max := a[i];
      end;
end;
Или так:
Код:
procedure MaxElement(const a:mas; const b:integer; var imax, max :integer);
{Возвращает номер и значение максимального элемента}
var i : integer;
begin
  ...
end;
Хотя достаточно получить номер и затем:
Код:
max := a[imax];

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 03.01.2014, 00:09   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Предполагаю, что ожидалось что-то вроде:
Код:
type mas=array[1..100]of integer;
procedure sort(const a:mas; const b:integer; var imax:integer; var valMax:integer);
var i : integer;
begin
  imax:=1;
  for i:=2 to b do
      if a[i]>a[imax] then imax:=i;
  valMax := a[imax];
end;
 
var
  x, y: mas;
  n: integer;
  j: integer;
  jmax:INTEGER;
  max:integer;
begin
  writeln('vvedite kolicestvo elementov massiva x.Ot 0do 80');
  readln(n);
  writeln('vvedite cisla massiva x');
  for j := 1 to n do
    readln(x[j]);
 
 sort(x,n,jmax, max);

 writeln('maksimalnui element massiva=',max);
 writeln('on naxoditza pod nomerom',jmax);
 Readln;
 
  writeln('vvedite kolicestvo elementov massiva y.Ot 0 do 70');
  readln(n);
  writeln('vvedite cisla massiva y');
  for j := 1 to n do
    readln(y[j]);

  sort(y,n,jmax, max);
  writeln('maksimalnui element massiva=',max);
  writeln('on naxoditza pod nomerom',jmax); 
  Readln;
 
end.

p.s. хотя, то, что просит преподаватель - это не красиво и не эффективно. У Вас было изначально лучше.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.01.2014, 13:13   #4
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Предполагаю, что ожидалось что-то вроде:
Код:
type mas=array[1..100]of integer;
procedure sort(const a:mas; const b:integer; var imax:integer; var valMax:integer);
var i : integer;
begin
  imax:=1;
  for i:=2 to b do
      if a[i]>a[imax] then imax:=i;
  valMax := a[imax];
end;
 
var
  x, y: mas;
  n: integer;
  j: integer;
  jmax:INTEGER;
  max:integer;
begin
  writeln('vvedite kolicestvo elementov massiva x.Ot 0do 80');
  readln(n);
  writeln('vvedite cisla massiva x');
  for j := 1 to n do
    readln(x[j]);
 
 sort(x,n,jmax, max);

 writeln('maksimalnui element massiva=',max);
 writeln('on naxoditza pod nomerom',jmax);
 Readln;
 
  writeln('vvedite kolicestvo elementov massiva y.Ot 0 do 70');
  readln(n);
  writeln('vvedite cisla massiva y');
  for j := 1 to n do
    readln(y[j]);

  sort(y,n,jmax, max);
  writeln('maksimalnui element massiva=',max);
  writeln('on naxoditza pod nomerom',jmax); 
  Readln;
 
end.

p.s. хотя, то, что просит преподаватель - это не красиво и не эффективно. У Вас было изначально лучше.
Спасибо большое,но в консоле опять же ничего не изменяется ><
shalgan вне форума Ответить с цитированием
Старый 03.01.2014, 22:46   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от shalgan Посмотреть сообщение
Спасибо большое,но в консоле опять же ничего не изменяется ><
ну, хорошо, значит, я не ошибся, процедуры правильно переписал!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограммы в Си M_arisha Общие вопросы C/C++ 1 10.04.2012 20:48
Подпрограммы mckent Фриланс 4 06.02.2011 07:51
подпрограммы в си Rena Помощь студентам 0 07.11.2010 21:19
Подпрограммы-процедуры, подпрограммы-функции в Pascal rishikesh Помощь студентам 19 18.05.2010 23:05