Помогите, пожалуйста, написать программу сравнения двух строк. Программа должна читать строки из файла и сравнивать нечетные и четные строки, которые следуют друг за другом. Я уже ломаю голову как оформить текст программы, но ничего не получается.
Федосеев Павел
18.02.2016 1:10
А что уже получилось?
Alexa911
18.02.2016 14:09
не поняла вопрос?
Федосеев Павел
19.02.2016 2:17
Цитата(Alexa911 @ 17.02.2016 21:10)
Я уже ломаю голову как оформить текст программы, но ничего не получается.
Кроме ломания, должны существовать какие либо следы научной деятельности. Например, наброски кода.
bel100
13.05.2017 21:51
Цитата(Федосеев Павел @ 18.02.2016 21:17)
Цитата(Alexa911 @ 17.02.2016 21:10)
Я уже ломаю голову как оформить текст программы, но ничего не получается.
Кроме ломания, должны существовать какие либо следы научной деятельности. Например, наброски кода.
var s1,s2,sn:string; a,b,i,n:integer; s:array[1..255] of integer; input,output:text; begin assign(input,'input.txt'); reset(input); n:=1; for i:=1 to n do n:=n+1; writeln(n); readln(input,s1); readln(input,s2); if n mod 2 = 0 then writeln('Строка 1 чётная'); if n mod 2 = 1 then writeln('Строка 1 не чётная'); 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'); end. То же не получается полностью выполнить условия задачи: 1) Как пронумеровать и подсчитать количество строк в тексте? 2) Как разбить строки на пары? Заранее благодарен тому кто сможет разжевать!
Федосеев Павел
16.05.2017 1:07
Чтение из файла производится циклом 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.
bel100
17.05.2017 0:11
Спасибо за подсказку(по поводу цикла 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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.