IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Цикл Repeat, Помогите вставить цикл...
garry_m
сообщение 23.12.2005 20:58
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской

Репутация: -  0  +


Привет всем!
Вот допустим есть такая программка:
program z_1_7;
uses crt;
var
  N,k:integer;
  ans:char;
begin

clrscr;
repeat
     
    write('VVEDITE NOMER DNJA V GODU -> '); readln(k);

  N:=k mod 7;
  case N of
    1:writeln ('PONEDELNIK');
    2:writeln ('VTORNIK');
    3:writeln ('SREDA');
    4:writeln ('CHETVERG');
    5:writeln ('PJATNICA');
    6:writeln ('SUBBOTA');
    0:writeln ('VOSKRESENJE');
  end;
  writeln('do you want to repeat? (Y/N)');
  ans:=readkey;
until UpCase(ans)='N';

end.


И нам нужно вставить в нее цикл... Вот что у нас выходит:
program z_1_7;
uses crt;
var
  N,k:integer;
  ok:boolean;
  ans:char;
begin

clrscr;
repeat
  repeat
    {$I-}
    write('VVEDITE NOMER DNJA V GODU -> '); readln(k);
    {$I+}
    ok:=(ioresult=0) and (k <= 365) and (k > 0);
    if not ok then writeln('* * * ERROR! WRONG INPUT! PLEASE TRY AGAIN! * * *');
  until ok;

  N:=k mod 7;
  case N of
    1:writeln ('PONEDELNIK');
    2:writeln ('VTORNIK');
    3:writeln ('SREDA');
    4:writeln ('CHETVERG');
    5:writeln ('PJATNICA');
    6:writeln ('SUBBOTA');
    0:writeln ('VOSKRESENJE');
  end;
  writeln('do you want to repeat? (Y/N)');
  ans:=readkey;
until UpCase(ans)='N';

end.


НО! Этот цикл работает, но не является так сказать корректным. Давайте попробуем ввести значение переменной: "gdggdg 12" (вводить естественно без кавычек). И посмотрим что нам выдаст программа... Все начинает глючить! Как раз таки на этом я и прокололся на уроке программирования.

Так вот я обращаюсь к вам за помощью: как можно по-другому решить вопрос с проверкой на правильность ввода? Я все перерыл - не знаю как... Надеюсь на вашу отзывчивость!

Сообщение отредактировано: garry_m - 23.12.2005 21:02
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 31.07.2025 5:37
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"