Чтение () не работает - PullRequest
0 голосов
/ 11 мая 2018

Процедура чтения (s2) не работает

var
  s1, s2: string;
  h1, m1: integer;
begin
  read(s1);
  h1 := Strtoint(s1[1:3]);
  m1 := StrtoInt(s1[4:6]);
  read(s2);
  write(h1, m1);
end.

Компиляция выглядит следующим образом

12:25
1225

Она должна выглядеть следующим образом

12:25
(asking s2)
1225

1 Ответ

0 голосов
/ 11 мая 2018

Ваши переменные s1 и s2 объявлены как строки, и они могут содержать любые символы, которые пользователь может вводить на клавиатуре, и любое их количество.Итак, как, по вашему мнению, программа может сказать, когда пользователь нажимает клавишу, должна ли она быть частью s1 или s2?Ответ: не может.

Чтобы ваш код работал правильно, используйте readln вместо read.Таким образом, когда readln выполняется, пользователь должен нажать Enter , чтобы сообщить программе о завершении ожидания ввода большего числа символов.

Обратите внимание, что некоторые реализации Pascal позволяют писатьчто-то вроде этого

readln(i1, i2)

, где i1 и i2 - целые числа.Это будет работать, если пользователь введет два целых числа, разделенных пробелом, или Tab , потому что тогда код чтения может сказать, где заканчивается ввод i1 и начинается i2.

Такжеобратите внимание, что

readln;

сам по себе ожидает, когда пользователь нажмет Enter , что является элементарным способом заставить программу "остановиться".

...