Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ цикл While

Автор: ~PALERMO~ 28.10.2006 3:46

У меня значит такой вопрос: имеется последовательность целых чисел, введенных пользователем с клавиатуры(например: 123 4567 8989 43 54545 ...), мне надо считать каждое число(что я и делаю при помощи "read', который читает каждое последующее число в последовательности, забиваю его в оператор цикла while, но тут возникает одна загвоздка:как обьяснить машине, до каких пор она должна выполнять оператор "read", когда ей остановиться ) Тоесть у меня проблема с самим условием цикла: While ..... do (не знаю что нужно поставить заместо "...." ).
P.S это часть строго поставленной задачи, поэтому использование массивов и строк недопустимо(можно пользоваться тоько условными операторами(IF, CASE ) и циклами)
_____________ wacko.gif
ПОМОГИТЕ ПЛЗ

Автор: volvo 28.10.2006 3:55

Цитата
тут возникает одна загвоздка:как обьяснить машине, до каких пор она должна выполнять оператор "read"
Стоп... Загвоздка - не тут... Загвоздка - в том, что ты должен сначала решить для себя, как ТЫ хочешь прекращать ввод данных, и только потом будем пытаться объяснить это компьютеру... Либо при вводе какого-то строго оговоренного значения, либо определенное количество чисел?

Автор: Гость 28.10.2006 13:59

А нельзя допустим связать прекращешие ввода данных с нажатием клавиши enter?? (Ну допустим ввожу строку чисел 1232 43453 457457.... здесь он читает все введенные числа через цикл, доходит до конца строки, где стоит enter и прекращает цикл)

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

Автор: Malice 28.10.2006 14:25

Цитата(Гость @ 28.10.2006 9:59) *

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

Я думаю примерно таким:
 While not (eoln(input)) do ..

Автор: Гость 28.10.2006 14:45

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

Автор: Malice 28.10.2006 15:28

Цитата(Гость @ 28.10.2006 11:45) *

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

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

Тоже работать будет.

Автор: ~PALERMO~ 29.10.2006 2:20

Попробовал, че т не катит: последовательность читает, а вот цикл не пашет, вот код:

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


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





Автор: Mlc 29.10.2006 13:04

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

Автор: ~PALERMO~ 29.10.2006 15:19

Milk: пасиб, это помогло, немного подработал и все получилось, включил этот алгоритм в более общую задачу и все получилось. Мне надо было из последовательности просуммировать те числа которые кратны 3, вот что получилось:

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



Зачем я вывожу этот код?
Может кому нить такое же задание в лабе попадется, а я вот например хз как используя только циклы и условные операторы обойтись без "(eoln(input))"
З.Ы спасибо всем, кто помог

Автор: volvo 29.10.2006 15:23

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


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