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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2012, 20:49   #1
Настюня
 
Регистрация: 16.06.2012
Сообщений: 3
Печаль Задача с массивом.

Задача: Найти второй по величине элемент массива (массив заполнить случайными числами).
Вот были мысли, но, увы, пока не очень что-то она работает:
Код:
program massiv12;
uses crt;
var massiv:array[1..10]of integer;
    i,t,max,l:integer;
begin
clrscr;
randomize;
max:=-20;
l:=0;
t:=1;
for i:=1 to 10 do
    begin
    massiv[i]:=random(30)-15;
    if max<massiv[i]then max:=massiv[i];
    repeat
    l:=max-t;
    t:=t+1;
    until
    l=massiv[i];
    end;
writeln('второй по величине элемент = ',l);
end.

Последний раз редактировалось Настюня; 19.06.2012 в 21:01.
Настюня вне форума Ответить с цитированием
Старый 19.06.2012, 21:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сортировать массив не хочешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.06.2012, 00:18   #3
Настюня
 
Регистрация: 16.06.2012
Сообщений: 3
По умолчанию

Пожалуй, что не хочу. Вся фишка в том, что задачу нужно решить как раз без сортировки массива. В этом-то и весь прикол.
P.S. А так было бы слишком просто
Настюня вне форума Ответить с цитированием
Старый 20.06.2012, 00:51   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

а че просто не завести второй максимум?

http://ideone.com/cfi5S
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 20.06.2012 в 00:57.
veniside вне форума Ответить с цитированием
Старый 20.06.2012, 03:33   #5
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
а че просто не завести второй максимум
Veniside, идея в принципе годная, но воплощение хромает..
Попробуй прогнать свою прогу сначала на таком массиве:
2, 2, 1
- а потом на таком:
1, 2, 2
И попробуй объяснить разницу.. ))

Сортировка тут в принципе может помочь, но не то, чтоб так уж сильно.
В этой задаче есть один ключевой момент: корректная реализация поиска второго по величине элемента обязательно должна включать в себя диагностику наличия такового (его запросто может и не быть). Уяснение, как ее сделать, поможет искать сам второй максимум.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 20.06.2012, 11:36   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> воплощение хромает

ага, лажанул немного, вот так вроде работает.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 20.06.2012, 20:11   #7
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Вот как-то так!
Код:
uses crt;
const
  n=5;
var
  A:array[1..n] of Integer;
  i, max, raz, pos:Integer;
begin
  write('Massive is - ');
  for i:=1 to n do
  begin
    A[i]:=Random(50)-5;
    write(A[i],' ');
  end;

  max:=A[1];
  for i:=2 to n do
  begin
    if A[i]>max then
      max:=A[i];
  end;

  raz:=2147483647;
  for i:=1 to n do
  begin
    if (max<>A[i]) and (raz > (max - A[i])) then
    begin
      raz:=max - A[i];
      pos:=i;
    end;
  end;

  Writeln('The second max is - ',A[pos]);
  Readln;
end.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Резиновый font-size, Как сделать резионвый font-size в блоке? AlienNation HTML и CSS 0 26.09.2011 09:14
Как добавить в начертание стиля Arial "Обычный"? Star Fish Microsoft Office Word 8 26.05.2011 11:54
Canvas.Font.Style := Label.Font.Style; не выходит ArtGrek Общие вопросы Delphi 3 23.02.2011 19:55
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Font Killbrum Помощь студентам 4 26.03.2008 23:59