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

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

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

> Слова, повторяющиеся заданное число раз
18192123
сообщение 8.01.2007 12:55
Сообщение #1


Профи
****

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

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


Мне нужно вывести слова, повторяющиеся, например, 2 раза. Если слово, просто повторяется - этот случай разобран (тема "Слова повторяющиеся хотя бы раз"), вот код


uses crt;
function Slovo(s:string;n:integer):string;
const lim =[' ',',','!'];
var ss:string;
k,c,i:integer;
begin
ss:=''; c:=1; k:=1;
while k<=length(s) do begin
while not(s[k] in lim) and (k<=length(s)) do begin
if c=n then ss:=ss+s[k];
inc (k); end;
inc ( c );
while (s[k] in lim) and (k<=length(s)) do inc (k);
end;
Slovo:=ss;
end;
const n=128;
var
a : array[1..n] of string;
i, n1, j : integer;
s1, s2 : string;
found : boolean;

begin
clrscr;
writeln (' vvedite stroky');
readln (s1);
s2 := '';
for j := 1 to n do a[j] := '';
n1 := 1;
i := 0;
while slovo(s1, n1) <> '' do
begin
found := false;
for j := 1 to i do
if a[j] = slovo (s1, n1) then found := true;
if found then s2 := s2 + slovo (s1, n1) + ' '
else
begin
inc (i);
a[i] := slovo (s1, n1);
end;
inc (n1);
end;
writeln (' stroka - resultat:');
writeln (s2);
readkey;
end.




А какое нужно добавить условие, чтоб код можно было применить для слов, повторяющихся 2 раза.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
volvo
сообщение 8.01.2007 13:34
Сообщение #2


Гость






var
a : array[1..n] of record
s: string;
count: integer;
end;

...
while slovo(s1, n1) <> '' do begin
found := false;
for j := 1 to i do
if a[j].s = slovo (s1, n1) then begin
inc(a[j].count); found := true;
end;

if not found then begin
inc (i);
a[i].r := slovo (s1, n1);
a[i].count := 1;
end;

inc (n1); { <--- Следующее слово }
end;
А потом просто пробегаешь по массиву, и печатаешь те слова, у которых поле count равно 2 (или сколько тебе надо)
 К началу страницы 
+ Ответить 

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

 



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