Автор: коваль 18.11.2007 21:07
Если перед вводом символов используется оператор READ, то первые два символа "забиваются" кодами 13 и 10.
При использовании оператора READLN ввод символов происходит нормально:
writeln('vvedi veschesstvennye chisla X,Y'):
read(X,Y);
writeln(' ':25,'veschesstvennye chisla');
writeln(' ':5,'standartny fopmat',' ':25,'zadannaya shirina polya');
writeln(' ':2,X,' ',Y,' ':10,'X=',X:8:2, 'Y=',Y:6:3);
writeln('vvedi simvoly S1,S2,S3');
read(S1,S2,S3);
writeln(' ':20,'simvolnaya peremennaya','S1=',S1, 'S2=',S2, 'S3=',S3);
write('pechat simvolnyh peremennyh s shirinoj polya 5:',S1:5,S2:5,S3:5);
В этом случае s1=#13, s2=#10, s3 принимает значение, которое должно было принять s1.
Если заменить оператор read(X,Y) на readln(X,Y), то переменные s1,s2,s3 принимают верные значения.
Кто знает, в чем дело?
Автор: коваль 18.11.2007 21:13
Цитата(коваль @ 18.11.2007 17:07)
Если перед вводом символов используется оператор READ, то первые два символа "забиваются" кодами 13 и 10.
При использовании оператора READLN ввод символов происходит нормально:
writeln('vvedi veschesstvennye chisla X,Y'):
read(X,Y);
writeln(' ':25,'veschesstvennye chisla');
writeln(' ':5,'standartny fopmat',' ':25,'zadannaya shirina polya');
writeln(' ':2,X,' ',Y,' ':10,'X=',X:8:2, 'Y=',Y:6:3);
writeln('vvedi simvoly S1,S2,S3');
read(S1,S2,S3);
writeln(' ':20,'simvolnaya peremennaya','S1=',S1, 'S2=',S2, 'S3=',S3);
write('pechat simvolnyh peremennyh s shirinoj polya 5:',S1:5,S2:5,S3:5);
В этом случае s1=#13, s2=#10, s3 принимает значение, которое должно было принять s1.
Если заменить оператор read(X,Y) на readln(X,Y), то переменные s1,s2,s3 принимают верные значения.
Кто знает, в чем дело?
Использовался BP 7.0.
Автор: klem4 19.11.2007 0:14
Ты разделом не ошибся ? Переносится в задачи.
Автор: volvo 19.11.2007 1:36
Цитата
Кто знает, в чем дело?
А ты не знаешь? Оператор Read НЕ читает символы перевода строки, они остаются в буфере, и при следующей попытке вызова Read/ReadLn читаются именно эти #13#10... Если во втором Read-е вводятся числа, то ничего страшного, пока они не будут введены, Read будет запрашивать ввод пользователя (поскольку Integer не может принять значение #13, так же как и Real, то "оставшиеся" символы будут пропущены), но если Char-ы или строки - то они будут прочитаны сразу...