Вы здесь

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. Все дело в строковой переменной. В условии игнорируеться read(s) где s типа string. Но если s обявиться как тип char или прочее все впорядке и работает.Единственная неувязочка дял выполнения программы мне нужна переменая строкового типа.

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

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

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

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

а здесь

 if i=2 then

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

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

имхо

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

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

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

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

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

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

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

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

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

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

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