![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Привет всем.
Помогите плиз решать задачу... В файле исходных данных задается отдельный символ и две строки слов. Написать Паскаль-программу, включающуюю 2 процедуры, выполняющие следующие действия: * печать слов, встречающихся в обеих заданных строках * выявление строки, в которой заданный символ встречается чаще! Заранее благодарен! |
|
#2
|
|||
|
|||
|
Массивы, массивы, массивы.
Тебе именно на паскале или можно на Дельфях? Просто чистый паскаль лично я уже забыл (в смысле, бедный он на функции, так что написать-то можно, но будет ли такое работать - не уверен). Первая задача - читаешь файл. Строки разбиваешь на слова и складываешь их в массив. Далее проверяешь для каждого слова из одной строки(любой) наличие такого же во второй (вхождение некоторого элемента в массив). Тут есть вопрос: с учетем регистра или нет? Вторая зхадача еще проще. Т.к. тип String есть тоже массив, то просто бежишь по строке, как по массиву и просто считаешь сколько этих буковок в одной строке, а сколько - в другой. Дальше равнил значения и вывел результат в нужном виде. |
|
#3
|
|||
|
|||
|
Помоги если вспомнишь на паскале. Очень надо, экзамен завтра!
|
|
#4
|
|||
|
|||
|
На каком паскале? Паскалей тоже дофига.
|
|
#5
|
|||
|
|||
|
turbo Pascal
|
|
#6
|
|||
|
|||
|
Цитата:
Код:
var
f: Text;
Symb, Str1, Str2: string;
procedure PrintWord;
var
s, Word: string;
begin
s := Str1;
while pos(' ', s)<>0 do
begin
Word := copy(s, 1, pos(' ', s)-1);
if pos(Word, Str2)<>0 then writeln(Word);
s := Delete(s, 1, pos(' ', s));
end;
// Проверяем остаток строки
if pos(s, Str2)<>0 then writeln(Word);
end;
procedure CheckCount;
var
i: Integer;
Cnt1, Cnt2: Integer;
begin
Cnt1 := 0;
Cnt2 := 0;
for i:=1 to length(Str1) do
if Str1[i]=Symb then inc(Cnt1);
for i:=1 to length(Str2) do
if Str1[i]=Symb then inc(Cnt2);
if (Cnt1=0) and (Cnt2=0) then
writeln('Символ не встречается')
else
if Cnt1=Cnt2 then writeln('Встречает одинаковое количество раз');
if Cnt1<Cnt2 then writeln('В 1-ой страке чаще');
if Cnt1>Cnt2 then writeln('Во 2-ой страке чаще');
end;
BEGIN
Assign(f, 'ИмяФайла.txt');
Reset(f);
readln(f, Symb);
readln(f, Str1);
readln(f, Str2);
Close(f);
PrintWord;
CheckCount;
END. |
|
#7
|
|||
|
|||
|
почему то в этой строке ошибку выдает
s := Delete(s, 1, pos(' ', s)); |