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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 17:52   #1
swillrocker
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 44
По умолчанию Задание с циклами: ввод и проверка чисел.(Pascal)

С клавиатуры вводятся целые числа. Признак конца ввода – ноль. Определить число, предшествующее первому из введенных максимальных значений.

Вот набросок, исправьте или дополните... Много часов потратил уже, сам не могу додуматься. (не применяя массивы)

Код:
Program hjh;
var a,b,c: integer;
begin
b:=0;
writeln('Enter numbers...0');
repeat
readln(a);
if a>b then b:=a
else
if (a<b) and (a<>0) then
c:=a;
until (a=0);
writeln(a,b,c);
readln;
end.

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

Тут нужно либо в массив вводить:
Код:
Program hjh; 
var a:array[1..100] of integer; i:integer;
begin 
b:=0; 
writeln('Enter numbers...0'); i:=1;
repeat readln(a[i]); inc(i); until (a[i-1]=0); 
...
А вот тут ты циклом по массиву проходи и находи максимальное.
...
end.
или динамическими списками что сожнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2011, 18:12   #3
swillrocker
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тут нужно либо в массив вводить:
Код:
Program hjh; 
var a:array[1..100] of integer; i:integer;
begin 
b:=0; 
writeln('Enter numbers...0'); i:=1;
repeat readln(a[i]); inc(i); until (a[i-1]=0); 
...
А вот тут ты циклом по массиву проходи и находи максимальное.
...
end.
или динамическими списками что сожнее.
Проблема в том, что нужно обойтись без массива, а что такое динамические списки я пока не знаю...

Последний раз редактировалось swillrocker; 04.05.2011 в 18:31.
swillrocker вне форума Ответить с цитированием
Старый 04.05.2011, 19:49   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, тут всего пару дополнительных значений надо хранить.
поэтому можно и без динамических структур обойтись..
Код:
Program hjh;
var  i, Cur, Prev, 
     PrevMaxIndex, PrevMax, Max : integer;
begin
 i:=1;
 writeln('Enter numbers...(0 - for finish)');
 repeat
   readln(Cur);
   if i=1 then {это первое число в последовательности!} 
     begin
       PrevMaxIndex := i;
       Max := Cur; 
     end
   else {уже не первое число}
     if Cur>Max then {очередное число больше того, что в Max}
     begin
       Max := Cur;
       PrevMaxIndex := i;
       PrevMax := Prev;
     end;
   Prev := Cur;
   inc(i);
 until (Cur=0);

 {обработка ситуации, когда максимальное число первое }
 if PrevMaxIndex = 1 then
   WriteLn('Мax = ', Max, ' - is FIRST is sequence! ')
 else
   writeln('Max = ',Max,' N in sequence = ', PrevMaxIndex,
         ' Previous = ', PrevMax);
 readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.05.2011, 20:37   #5
swillrocker
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, тут всего пару дополнительных значений надо хранить.
поэтому можно и без динамических структур обойтись..
Код:
Большое спасибо !
swillrocker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal.Задача с циклами zhopenzhopen Помощь студентам 1 20.11.2010 20:10
Pascal.Работа с массивами и циклами. Миша44 Помощь студентам 2 09.11.2010 22:19
задачa с циклами в Pascal Vero Помощь студентам 3 21.09.2010 17:26
Ввод чисел Dicar Помощь студентам 4 31.03.2010 18:05