Помощь - Поиск - Пользователи - Календарь
Полная версия: цикл While
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
~PALERMO~
У меня значит такой вопрос: имеется последовательность целых чисел, введенных пользователем с клавиатуры(например: 123 4567 8989 43 54545 ...), мне надо считать каждое число(что я и делаю при помощи "read', который читает каждое последующее число в последовательности, забиваю его в оператор цикла while, но тут возникает одна загвоздка:как обьяснить машине, до каких пор она должна выполнять оператор "read", когда ей остановиться ) Тоесть у меня проблема с самим условием цикла: While ..... do (не знаю что нужно поставить заместо "...." ).
P.S это часть строго поставленной задачи, поэтому использование массивов и строк недопустимо(можно пользоваться тоько условными операторами(IF, CASE ) и циклами)
_____________ wacko.gif
ПОМОГИТЕ ПЛЗ
volvo
Цитата
тут возникает одна загвоздка:как обьяснить машине, до каких пор она должна выполнять оператор "read"
Стоп... Загвоздка - не тут... Загвоздка - в том, что ты должен сначала решить для себя, как ТЫ хочешь прекращать ввод данных, и только потом будем пытаться объяснить это компьютеру... Либо при вводе какого-то строго оговоренного значения, либо определенное количество чисел?
Гость
А нельзя допустим связать прекращешие ввода данных с нажатием клавиши enter?? (Ну допустим ввожу строку чисел 1232 43453 457457.... здесь он читает все введенные числа через цикл, доходит до конца строки, где стоит enter и прекращает цикл)

Какое для этого должно быть условие цикла?
Malice
Цитата(Гость @ 28.10.2006 9:59) *

Какое для этого должно быть условие цикла?

Я думаю примерно таким:
 While not (eoln(input)) do ..
Гость
(eoln(input))-Обьясни плз что это за фишка и как она работает
Malice
Цитата(Гость @ 28.10.2006 11:45) *

(eoln(input))-Обьясни плз что это за фишка и как она работает

Eoln (f) - проверка на конец строки в файле F.
Input - Стандартный файл ввода (клавиатура), можно было и без Input написать:
while not(eoln) do ..

Тоже работать будет.
~PALERMO~
Попробовал, че т не катит: последовательность читает, а вот цикл не пашет, вот код:

Код
var a:integer;
begin
  readln(a);                       //читает всю последовательность
repeat
  read(a);                         //читает каждый символ последовательности
  write(a)                          //выводит каждый символ последовательности
until (eoln(input));             //цикл работает до тех пор, пока не "встретит" "enter"
  readln;
end.


Все вродь логично, а не работает мож все дело в "(eoln(input))" иль я чего-то не понимаю??
или эт все из-зи дельфи(Console app)
_______________________________
Помогите разобраться плз blink.gif




Mlc
А что делает эта строка:
readln(a); //читает всю последовательность
Особо комментарий интересует, как ты собрался всю последовательность в одну переменную внести.
При таком раскладе ввод должен быть таким:
4 // для readln
1 2 3 4 5 6 //для read
~PALERMO~
Milk: пасиб, это помогло, немного подработал и все получилось, включил этот алгоритм в более общую задачу и все получилось. Мне надо было из последовательности просуммировать те числа которые кратны 3, вот что получилось:

 ! 
Раздел - теоретический, программы будут удаляться... Не надо разводить на форуме бардак!



Зачем я вывожу этот код?
Может кому нить такое же задание в лабе попадется, а я вот например хз как используя только циклы и условные операторы обойтись без "(eoln(input))"
З.Ы спасибо всем, кто помог
volvo
Цитата
Зачем я вывожу этот код?
Вот именно, ЗАЧЕМ? Это пока означает только одно: Правила ты не читал, и делать этого не желаешь:
Цитата(Правила Раздела)
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ - для этого есть отдельный раздел!


Код, извини, удален. Тема закрыта... В следующий раз соизволь прочитать ХОТЯ БЫ то, что написано в рамочке наверху...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.