Помогите, пожалуйста, написать программу сравнения двух строк. Программа должна читать строки из файла и сравнивать нечетные и четные строки, которые следуют друг за другом. Я уже ломаю голову как оформить текст программы, но ничего не получается.
А что уже получилось?
не поняла вопрос?
Чтение из файла производится циклом while, т.к. заранее неизвестно количество строк.
Цикл for при инициализации определяет количество итераций и дальнейшее увеличение n в теле цикла уже не приводит к увеличению итераций. Это поведение прописано в стандарте Pascal.
Я не понимаю, какие строки должны сравниваться. Вот сравнили 1-ю и 2-ю, следом нужно сравнивать 2-ю и 3-ю или же 3-ю и 4-ю?
Если просто сравнивать строку с предыдущей, и сравнение выполнять по длине строки, то можно так
program CmpStr;
var
StrPrev, StrCurr: string;
LineNumber: integer;
begin
Assign(input, 'input.txt');
reset(input);
LineNumber := 0;
if not EOF(input) then
begin
readln(StrPrev);
LineNumber := 1;
end;
while not EOF(input) do
begin
{считываем очередную строку}
readln(StrCurr);
{увеличиваем количество считанных строк на 1}
Inc(LineNumber);
{сравниваем строки по их длине}
if length(StrCurr) > length(StrPrev) then
writeln('Строка ', LineNumber, ' больше строки ', pred(LineNumber));
if length(StrCurr) < length(StrPrev) then
writeln('Строка ', LineNumber, ' меньше строки ', pred(LineNumber));
if length(StrCurr) = length(StrPrev) then
writeln('Строка ', LineNumber, ' равна строке ', pred(LineNumber));
{для следующей итерации цикла текущая строка становится предыдущей}
StrPrev := StrCurr;
end;
Close(input);
end.
Спасибо за подсказку(по поводу цикла while), сравнивать нужно первую и вторую, третью и четвёртую и так далее пока не кончатся строки (общее количество неизвестно, зависит от документа( в идеале должен считать любой текстовый документ).
var s1,s2:string;
a,b,i,n:integer;
input,output:text;
begin
assign(input,'input.txt');
reset(input);
n:=0;
while not eof(input) do
for i:=1 to n do
readln(input,s2);
readln(input,s1);
a:=length(s1);
b:=length(s2);
close(input);
writeln(a);
writeln(b);
if a > b then writeln('Строка 1 больше строки 2');
if a < b then writeln('Строка 1 меньше строки 2');
if a = b then writeln('Строка 1 равна строке 2');
assign(output,'output.csv');
rewrite(output);
end.