LINUX.ORG.RU

История изменений

Исправление bormant, (текущая версия) :

В чём может быть причина ошибки?

Стандартное поведение Read(строковая_переменная) не такое, как вы о нем думаете.

Этот оператор прочитает в строковую переменную из потока ввода столько символов, сколько влезает в память, отведенную под эту переменную, но не дальше, чем до конца строки (EoLn) в потоке ввода. Конец строки такой оператор преодолеть не сможет, пока не будет вызван ReadLn. В псевдокоде это может выглядеть так:

s:=''; Cnt:=SizeOf(s)-1;
while (Cnt>0) and not EoLn do begin
  Read(c); s:=s+c;
end;

(приложение Pascal N-IDE), работает корректно

Нет. Оно работает по каким-то одному ему известным правилам, которые к правилам Паскаля не имеют никакого отношения.

Как исправить, выше уже написали:

program Example;
var
    s1, s2: String;
begin
    WriteLn('Enter the first string');
    ReadLn(s1);
    WriteLn('Enter the second string');
    ReadLn(s2);
    WriteLn(s1);
    WriteLn(s2);
end.

PS. Заходите на огонёк ;)
https://www.cyberforum.ru/pascal/

Исправление bormant, :

В чём может быть причина ошибки?

Стандартное поведение Read(строковая_переменная) не такое, как вы о нем думаете.

Этот оператор прочитает в строковую переменную из потока ввода столько символов, сколько влезает в память, отведенную под эту переменную, но не дальше, чем до конца строки (EoLn) в потоке ввода. Конец строки такой оператор преодолеть не сможет, пока не будет вызван ReadLn. В псевдокоде это может выглядеть так:

s:=''; Cnt:=SizeOf(s)-1;
while (Cnt>0) and not EoLn do begin
  Read(c); s:=s+c;
end;

(приложение Pascal N-IDE), работает корректно

Нет. Оно работает по каким-то одному ему известным правилам, которые к правилам Паскаля не имеют никакого отношения.

Как исправить, выше уже написали:

program Example;
var
    s1, s2: String;
begin
    WriteLn('Enter the first string');
    ReadLn(s1);
    WriteLn('Enter the second string');
    ReadLn(s2);
    WriteLn(s1);
    WriteLn(s2);
end.

Исправление bormant, :

В чём может быть причина ошибки?

Стандартное поведение Read(строковая_переменная) не такое, как вы о нем думаете.

Этот оператор прочитает в строковую переменную из потока ввода столько символов, сколько влезает в память, отведенную под эту переменную, но не дальше, чем до конца строки (EoLn) в потоке ввода. Конец строки такой оператор преодолеть не сможет, пока не будет вызван ReadLn. В псевдокоде это может выглядеть так:

s:=''; Cnt:=SizeOf(s)-1;
while (Cnt>0) and not EoLn do begin
  Read(c); s:=s+c;
end;

(приложение Pascal N-IDE), работает корректно

Нет. Оно работает по каким-то одному ему известным правилам, которые к правилам Паскаля не имеют никакого отношения.

Как исправить, выше уже написали:

program Example;
var
    s1, s2: String;
begin
    WriteLn('Enter the first string');
    ReadLn(s1);
    WriteLn('Enter the second string');
    ReadLn(s2);
    WriteLn(s1);
    WriteLn(s2)
end.

Исходная версия bormant, :

В чём может быть причина ошибки?

Стандартное поведение Read(строковая_переменная) не такое, как вы о нем думаете.

Этот оператор прочитает в строковую переменную из потока ввода столько символов, сколько влезает в память, отведенную под эту переменную, но не дальше, чем до конца строки (EoLn) в потоке ввода. Конец строки такой оператор преодолеть не сможет, пока не будет вызван ReadLn. В псевдокоде это может выглядеть так:

s:=''; Cnt:=SizeOf(s)-1;
while (Cnt>0) and not EoLn do begin
  Read(c); s:=s+c;
end;


(приложение Pascal N-IDE), работает корректно

Нет. Оно работает по каким-то одному ему известным правилам, которые к правилам Паскаля не имеют никакого отношения.