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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2011, 21:52   #1
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

Ну, у тебя уже всё написано, тебе просто надо твой алгоритм поиска вынести за пределы основного блока BEGIN-END и как-нибудь обозвать - это и будет твоя процедура поиска. За основу беру твой код:
Код:
uses crt;
const s=50;
Var a:array [1..s] of integer;
n,i,max,imax:integer;

procedure MaxElement;
begin
  max:=a[1]; 
  imax:=-1000000;//для гарантии пусть сначала это будет очень маленькое число
  for i:=1 to n do   
  begin
  if a[i]>max then
  begin
  max:=a[i];
  imax:=i;
end;
end;
end;

//а вот теперь сама программа и вызываем в ней твою процедуру
begin
write('Введите размерность n= ');
readln(n);
Writeln('Введите ',n,' чисел(а)');
for i:=1 to n do
begin
write('Введите а(',i,')= ');
readln(a[i]);
end;
writeln('----------------');
Writeln('Исходная таблица');
for i:=1 to n do begin
write(a[i],' ');
writeln;
end;

MaxElement;//вот тут твоя процедура и ищет то самое максимальное число

Writeln('---------------------------------');
writeln('MAX= ','a[',imax,']= ',max);
writeln('MAX элемент= ',max);
writeln('Индекс MAX элемента= ',imax);
readkey;
end.
мало ли, сколько раз твой массив будет меняться по ходу программы? Может 10 или 15 раз. И что, теперь тебе каждый раз вставлять тот алгорим поиска из 10 строк? нет! теперь каждый раз ты можешь писать ту самую одну-единственную строчку - MaxElement, и каждый раз она будет тебе искать то, что нужно. Процедуры, так сказать, упрощают и сокращают программы.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 10.09.2011 в 21:57.
NetSpace вне форума Ответить с цитированием
Старый 10.09.2011, 23:54   #2
Wladimir33
 
Регистрация: 25.06.2011
Сообщений: 9
Сообщение

Ребята нужна помощь в написании процедуры поиска максимального элемента в одномерном массиве.
Код:
// поиск max элемента в таблице
uses crt;
const s=50;
Var a:array [1..s] of integer;
     n,i,max,imax:integer;
begin
  write('Введите размерность n= ');
  readln(n);
  Writeln('Введите ',n,' чисел(а)');
  for i:=1 to n do
begin
  write('Введите а(',i,')= ');
  readln(a[i]);
end;
writeln('----------------');
Writeln('Исходная таблица');
for i:=1 to n do begin
    write(a[i],' ');
    writeln;
    end;
    
  max:=a[1]; 
  imax:=1;
  for i:=1 to n do 
  begin
  if a[i]>max then
  begin
    max:=a[i];
    imax:=i;
  end;
  end;

Writeln('---------------------------------');
writeln('MAX= ','a[',imax,']= ',max);
writeln('MAX элемент= ',max);
writeln('Индекс MAX элемента= ',imax);
readkey;
end.
Поней надо написать процедуру

Последний раз редактировалось Stilet; 11.09.2011 в 13:25.
Wladimir33 вне форума Ответить с цитированием
Старый 11.09.2011, 11:31   #3
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Для паскаля приведенный выше ответ неправильный, т.к. минимальное значение для типа integer -32768. Я бы сделал так:
Код:
procedure MaxElement;
begin
  max:=a[1]; 
  imax:=1;
  for i:=2 to n do   
   if a[i]>max then
     begin
       max:=a[i];
       imax:=i;
     end;
end;
P.S. логичнее было использовать функцию
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 11.09.2011, 13:10   #4
Wladimir33
 
Регистрация: 25.06.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Step_UA Посмотреть сообщение
Для паскаля приведенный выше ответ неправильный, т.к. минимальное значение для типа integer -32768. Я бы сделал так:
Код:
procedure MaxElement;
begin
  max:=a[1]; 
  imax:=1;
  for i:=2 to n do   
   if a[i]>max then
     begin
       max:=a[i];
       imax:=i;
     end;
end;
P.S. логичнее было использовать функцию
Ну я проверял там и правлда, не правильно, а как делать через функцию. и какие параметры запрашивать в основной программе?
Wladimir33 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма поиска - задать диапазон поиска VictorM Microsoft Office Excel 9 21.04.2011 00:12
Создание поиска sid1868 БД в Delphi 6 21.10.2010 15:07
простая процедурка с CheckBox Domanoff Общие вопросы Delphi 2 22.04.2010 18:20
Не могу понять почему вылетает 3 процедурка, помогите Taisja Помощь студентам 2 04.06.2008 21:28
Оптимизация поиска mutabor Общие вопросы Delphi 14 07.02.2008 14:30