Помощь - Поиск - Пользователи - Календарь
Полная версия: 2 строки файла
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ellsa
Здравствуйте.У меня такое вот задание.....
Даны две строки текста.Вывести слова,присутствующие в каждой строке.


По идее это элементарно..но я не могу вообще ничего написать!Особенно возникает сложность с написанием куска,где мы переходим на вторую строку,чтоб сравнивать с первой....вообще не понимаю,как это осуществить...если есть какие-нибудь мысли,поделитесь пожалуйста....



я обрыла поиск весь....находила только повторяющиеся слова в одной строке или символы....это сами понимаете...не то.... unsure.gif
ammaximus
Разбей на слова.
Разбиение на слова. Все способы.
Пусть будут 2 массива первая строка и вторая строка.
Считывай слова в первый массив while not eoln
readln; - переход на другую строку
И снова считываешь, но уже во второй массив.
Потом просто сравни полученные строки.
volvo
Цитата
Даны две строки текста.Вывести слова,присутствующие в каждой строке.
А прочесть этот текст в 2 строковых переменные запрещено? А потом "on the fly" в одной строке вычленять слова, и проверять их наличие во второй строке (через Pos например)...
ammaximus
uses crt;
const s1:string[200] ='aaa bbb ccc ddd';
s2:string[200] ='ccc';
var i,j,k:integer;
s:string[200];
a1:array[0..8] of string[200];
begin
for j:=1 to length(s1) do
if s1[j]<>' ' then
a1[i]:=a1[i]+s1[j]
else
inc(i);
k:=i;
for j:=1 to length(s2) do
if s2[j]<>' ' then
s:=s+s2[j]
else
begin
for i:=1 to k do
if s=a1[i] then writeln(a1[i]);
end;
write(s);
readkey;
end.

C использованием массива проще. Но можно и без него.
volvo
Цитата
C использованием массива проще
Во-первых, решение неэффективно (посмотри, сколько памяти расходуется впустую, не приучайся делать СРАЗУ плохо)... А во-вторых - использование массивов может и запрещаться ...

К тому же, автору был задан вопрос, который она почему-то игнорировала... Ну что ж - дело ее...
Ellsa
volvo,мне ваш вопрос несовсем понятен.Через pos на данный момент пытаюсь составить программу,а все,что было сказано перед этим мне несовсем понятно. unsure.gif
ammaximus,спасибо большое. smile.gif попытаемся разными способами. Думаю моя программа все равно не заработает...
ammaximus
Ellsa, с использованием POS в прикреплении. Но я советую вам самой попробовать решить, не заглядывая. wink.gif
Ellsa
я пытаюсь....но я встала на моменте,когда надо следующее слово рассматривать...после пробела.....мне тут помогли написать до этого момента....а теперь я все.... sad.gif
спать больше надо...может соображать лучше буду...
volvo
ammaximus, твой "способ" валится при элементарном тесте:
const
s1:string[200] ='aaa bbb ccc ddd';
s2:string[200] ='ccc bbbred';

Легитимно? Вполне, кто сказал, что во второй строке будет только одно слово? Ан, твоя программа это НЕ пропускает...

Правило №7 и к тебе относится!

Вот так надо было делать проверку:
Спойлер (Показать/Скрыть)
Ellsa
боюсь,что мне сейчас не понять всех мудренностей последней программы....спасибо,что откликнулись.Но я ничерта не могу понять...
and
(
(p = 1) or ((p > 1) and (s2[p - 1] = ' '))
)
and
(
(p + length(_word) - 1 = length(s2)) or
((p + length(_word) - 1 < length(s2)) and (s2[p + length(_word)] = ' '))
)
then begin
writeln('word: ', _word, ' exists in s1 & s2 ...');
end;

вообще непонятно.... unsure.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.