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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2012, 13:26   #1
мария71
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 12
По умолчанию вычислить порядковый номер числа наиболее приближенного к среднему арифметическому максимального и минимального чисел данной посл

помогите пожалуйста.переделываю программу с обычной на прорамму с процедурами и только с ними...посмотрите пожалуйста что не так и где я что упустила...а то чей то она не считает...

Код:
Program fff;
const
 n=10;
type
 mas=array[1..n] of integer;
var
 a:mas;
 nearind:integer;
 
Procedure Inp;
var
 i:integer;
begin
   writeln('Данная программа предназначена для вычисления порядкового номера числа ');
   writeln('наиболее приближеного к среднему арифметическому максимального и минимального чисел');
   writeln('данной последовательности*');
   writeln('Введите массив');
   For i:=1 to n do
   begin
      write('введите элемент с индексом i:');
      readln(a[i]);
   end;
end;
Procedure Out;
var
 i:integer;
begin
   writeln('вывод массива на экран**');
   begin
      for i:=1 to n do
         write(a[i]:3);
      writeln
   end;
end;
Procedure Search;
var
 i:integer;
 sred:integer;
 near:integer;
 nearind:integer;
 max:integer;
 min:integer;
begin
     writeln('поиск порядкового номера числа');
     for i:=1 to n do
     If a[i]<min then
       min:=a[i] else
     If a[i]> max then
       max:=a[i];
sred:=(max+min) div 2;
near:=MAXINT;
for i:=1 to n do
   if a[i]-sred < near then
     begin
        near:=a[i]-sred;
        nearind:=i;
 
     end;
end;
begin
   Inp;
   Out;
   Search;
   writeln('nomer chisla:',n);
   writeln('nomer chisla:',nearind);
   readln
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.02.2012 в 13:43.
мария71 вне форума Ответить с цитированием
Старый 14.02.2012, 13:34   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Оформите код по-нормальному, кнопочка # в редактировании сообщения, а то читать неудобно. Пока вижу только то, что в процедуре Search не заданы начальные значения минимума и максимума, а значит, скорее всего, они нулевые. Сделайте так
Код:
writeln('поиск порядкового номера числа');
min := a[1];
max := a[1]; 
for i:=1 to n do
  If a[i]<min then
    min:=a[i] 
  else
    If a[i]> max then
      max:=a[i];
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 14.02.2012, 16:24   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Greblin, +1


мария71, а ещё Вы неправильно понимаете, что есть локальные и глобальные переменные.
у Вас nearind всегда равен нулю, т.к. вы такой же точно параметер описали в локальных.
Выкиньте его нафиг из локального описания!

вот, например, так (попутно поправил ещё пару мелких косяков...)
Код:
procedure Search;
var
  i: integer;
  sred: integer;
  nearValue: integer;
  max: integer;
  min: integer;
begin
  writeln('поиск порядкового номера числа');
  min:=a[1];
  max:=a[1];
  for i := 1 to n do
    if a[i] < min then
      min := a[i] else
      if a[i] > max then
        max := a[i];

  sred := (max + min) div 2;
  {иницилизация поиска. Для начала считаем, что самый близкий - первый элемент}
  nearValue := abs(a[1] - sred);
  nearind := 1;
  for i := 1 to n do
    if abs(a[i] - sred) < nearValue then
    begin
      nearValue := abs(a[i] - sred);
      nearind := i;
    end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана последовательность целых чисел за которой следует 0.Найти номер максимального элемента в этой последовательности. Da Magic Помощь студентам 3 22.11.2011 23:08
Найти число равно среднему арифметическому. Rastislav Помощь студентам 15 25.10.2010 09:35
В одномерном массиве , состоящем из n целочисленных элементов, вычислить номер максимального элемента мас Ufa Помощь студентам 1 21.04.2010 14:06
TASM - нахождения максимального числа из трех положительных целых чисел и умножения максимального числа iggor Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 24.05.2009 20:16
вычислить номер и величину максимального элемента массива, произведение элементов, среднее арифметическое Romer9999 Паскаль, Turbo Pascal, PascalABC.NET 6 19.01.2009 16:35