Pascal(Программирование)[Решено]

Здравствуйте. Вышло так что знакомых программистов нет, решил напистаь сюда.
Проблема в следующем: команда read(s) (где s типа string) в цикле(и не только в цикле: при условиях) работать не хочет. Вот пример простой програмки:

uses crt;
var
 s:string;
begin
 Writeln('Введите строку'); read(s);
 writeln(s);
 readkey;
end;

Все в порядке, все работает. Усложним условием:

uses crt;
var
 i:integer;
 s:string;
begin
 Writeln('Введите 2');read(i);
 if i=2 then
  begin
   Writeln('Введите строку'); read(s);
   writeln(s);
   readkey;
  end;
end.

В цикле команда read(s) игнорируеться. Если кто ни будь разбираеться помогите с вопросом: почему так происходит и как исправить?.

Я уже всех нюансов не

Я уже всех нюансов не помню...

uses crt;
var
 s:string;
begin
 Writeln('Введите строку'); read(s);
 writeln(s);
 readkey;
 Writeln('Введите строку'); read(s);
 writeln(s);
 readkey;
 Writeln('Введите строку'); read(s);
 writeln(s);
 readkey;
end;

Но так по моему тоже работать не будет

не знаюкак там в паскале, но

не знаю как там в паскале, но вроде так должно быть

MiraJes написал(а):
if i== '2' then

у вас ошибка преобразования типов

возможно в паскале нужно вместо одинарных кавычек использовать двойные.

upd

не обратил внимание, что i объявлена как integer

объявите её как string (char если есть такой тип)
или после ввода (не в i) - делайте преобразование типа.

в условии ожидается i= 0x02
а в наличии i=0x32

что-то добрый я сегодня ....

Дело не в перемонной i. Все

Дело не в перемонной i. Все дело в строковой переменной. В условии игнорируеться read(s) где s типа string. Но если s обявиться как тип char или прочее все впорядке и работает.Единственная неувязочка дял выполнения программы мне нужна переменая строкового типа.

не догнал вашу

не догнал вашу мысль

но...
после этого..

Writeln('Введите 2');read(i);
 

i= 0x32 (символ 2)

а здесь

 if i=2 then

вы проверяете равно ли i 0x02 (значение, число 2)

вот условие и не срабатывает

имхо

что-то добрый я сегодня ....

Но даже если значение i

Но даже если значение i разное. Условие почему то выполняеться. И выполняються операторы writeln и readkey но read пропускается.

может там нужно не read а

может там нужно не read а readln ??? (имеется ввиду оба чтения)

ЗЫ Цикла тут нет :)

"Задавать вопросы имеет смысл только после того, как окончательно убедился, что сам ответ не найдешь. То есть очень, очень редко." (с) сэр Джуффин Халли, Начальник Тайного Сыска

joker79 написал(а): может там

joker79 написал(а):
может там нужно не read а readln ??? (имеется ввиду оба чтения)

ЗЫ Цикла тут нет :)

readln помог исправить ошибку.

Логика непонятна, кто

Логика непонятна, кто возьмется объяснить почему?)

^_________^ <-----котэ

readln эт read line дальше

readln эт read line дальше объяснять? read ожидает только одного символа, если нажать enter то их будет 2, второй как раз ситает этот самый enter. Я если правильно помню то логика такая...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".