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

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

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

> строки
vjtr
сообщение 14.03.2008 11:21
Сообщение #1


Гость






нужно решить задачуЖ для слов заданной строки, которые содержат заданное ключевое слово,найти самое длинное слово. между словами, а так же в конце и начале строки может быть любое кол-во пробелов.
вот как я делала:
  Program Zplata;
uses wincrt;
var w,f:array [1..10] of string;
str,kl:string;
i,p,k,j,m,nom,b,h:integer; s:array [1..98] of integer;
begin
writeln('ââåäè str=');
readln(str);
write('ki=');
readln(kl);
str:=str+' ';
k:=0;
while str<>'' do begin
p:=pos(' ',str);
if p>1 then begin
k:=k+1;
w[k]:=copy(str,1,p-1);
end;
delete(str,1,p);
end; b:=length(kl);
for i:=1 to k do begin

for j:=1 to b do
if (w[i][j]=kl[j]) and
( w[i][j+1]=kl[j+1]) then begin f[i]:=w[i];

s[i]:=length(f[i]);
if m<s[i] then begin m:=s[i]; nom:=i;end; end; end;
writeln(f[nom]);
end.

но у меня выводится не так как надо
подправте пожалуйста!!!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
Айра
сообщение 14.03.2008 17:14
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

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


Цитата
Заданное ключевое слово

т.е. если строка "аа абба авббва ", а ключевое слово "бб", то должно вывестись "авббва" ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
vjtr
сообщение 14.03.2008 17:30
Сообщение #3


Гость






да так но у меня при вводе слов:
помирить мирный миры
самое длинное слово выдает:
мирный
 К началу страницы 
+ Ответить 
volvo
сообщение 14.03.2008 17:38
Сообщение #4


Гость






vjtr, не забывай, что
Цитата
между словами, а так же в конце и начале строки может быть любое кол-во пробелов
, и их надо тоже удалять, не только обработанное слово:
Цитата
        while str<>'' do begin
while (str <> '') and (str[1] = ' ') do delete(str, 1, 1); { <--- Добавляем }
p:=pos(' ',str);
if p>1 then begin
k:=k+1;
w[k]:=copy(str,1,p-1);
end;
delete(str,1,p);
end;
Ну, а после цикла тебе надо просто пройти по всем элементам массива W, и проверить, если есть вхождение KL (лучше с использованием Pos, а не по одной букве), то сравнивать длины слов... Хотя я бы сделал вообще все в одном цикле, и проверку на наличие KL, и проверку длины...
 К началу страницы 
+ Ответить 
vjtr
сообщение 14.03.2008 19:42
Сообщение #5





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

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


спасибо большое у меня получилось
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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