IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите написать программу сравнения двух строк, Строки
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Женский
Реальное имя: Александра

Репутация: -  0  +


Помогите, пожалуйста, написать программу сравнения двух строк. Программа должна читать строки из файла и сравнивать нечетные и четные строки, которые следуют друг за другом. Я уже ломаю голову как оформить текст программы, но ничего не получается.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 466
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


А что уже получилось?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 2
Пол: Женский
Реальное имя: Александра

Репутация: -  0  +


не поняла вопрос?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 466
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Цитата(Alexa911 @ 17.02.2016 21:10) *

Я уже ломаю голову как оформить текст программы, но ничего не получается.

Кроме ломания, должны существовать какие либо следы научной деятельности. Например, наброски кода.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Цитата(Федосеев Павел @ 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) Как разбить строки на пары?
Заранее благодарен тому кто сможет разжевать!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 466
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Чтение из файла производится циклом 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Спасибо за подсказку(по поводу цикла 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.

Сообщение отредактировано: bel100 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 17.01.2018 15:54
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"