5 / 5 / 2
Регистрация: 20.05.2011
Сообщений: 58
1

Вывести самое длинное слово в предложении

25.05.2011, 18:19. Показов 7793. Ответов 1
Метки нет (Все метки)

Товарищи мне вновь нужна ваша помощь.

Дана строка-предложение на русском языке. Вывести самое длинное слово в предложении. Если таких слов несколько, то вывести первое из них. Словом считать набор символов, не содержащий пробелов, знаков препинания и ограниченный пробелами, знаками препинания или началом/концом строки.

составил программу но она не совсем соответствует условию
Вот код программы:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
program string_55;
uses crt;
var s,s1,s2,s3:string;
    sk,sd:string;
    len,k,d,i,ik,id,f:byte;
begin
clrscr;
       writeln('Введите строку из русских слов, отделеннvх пробелами : ');
       readln(s);
 
       if (pos(',',s)>0) then{ удалим запятые и точки}
       delete(s,pos(',',s),1);
       if (pos('.',s)>0) then
       delete(s,pos('.',s),1);
 
 
       s:=s+' ';{добавляем к ней пробел}
       s2:=s;{запомним начальную строку}
 
       while pos('  ',s)>0 do    {удалим лишние пробелы, в кавычках 2 пробела}
             delete(s,pos('  ',s),1);{в кавsчках 2 пробела}
       if s[1]=' ' then delete(s,1,1);{1 удаляем}
       sd:='';{длинное слово, пока его нет}
       d:=0;{длина длинного слова}
       while pos(' ',s)>0 do{пока есть пробелы}
       begin
       len:=pos(' ',s)-1;{длина очередного слова}
       s1:=copy(s,1,len);{само слово}
       if len>d then{если больше предыдущих}
       begin
            sd:=s1; {запомним}
            d:=len; {его длина}
       end;
       delete(s,1,pos(' ',s));{удаляем проверенное слово, следующее первое}
       end;
 
       writeln('Самое длинное слово:');
       s1:=copy(s2,1,pos(' ',s2)-1);{смотрим слова по порядку}
       if length(s1)=d then write(s1);{если длина равна длинному, выводим}
       delete(s2,1,pos(' ',s2));{удаляем просмотренное}
 
readln;
end.
Добавлено через 23 минуты
Эта программа в точности наоборот сделайте пожалуйста чтобы она соответствовала условию.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
uses crt;
var s,t,last:string;
    min_len,len,i:integer;
 
begin
     write('введите строку из русских букв : ');
     readln(s);
 
     min_len:=1000;
     len:=length(s);
     i:=1;
 
     while (i<len) and (i<>len-1) and (s[i]<>'.') do
     begin
           {обрабатываем пробелы и прочую фигню}
           while (s[i]=' ') or (s[i]=',') do Inc(i);
           {мы нашли слово}
           t := '';
    
    while (s[i]<>' ') and (s[i]<>',') and (s[i]<>'.') and (i<=len) do
    begin
         t := t + s[i];
         Inc(i);
    end;
 
    if min_len > length(t) then
    begin
         min_len := length(t);
         last:=t;
    end;
    end;
 
    WriteLn('Самое короткое слово : ',last);
ReadLn;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2011, 18:19
Ответы с готовыми решениями:

В заданном предложении найти самое короткое и самое длинное слово
Делаю все строго по гайду, но после ввода строки вылетает &quot;exit code = 201&quot;. Пишу в free pascal'е....

Поменять местами в предложении самое длинное и самое короткое слово.
Помогите пожалуйста доделать задачу: Поменять местами в предложении самое длинное и самое короткое...

Определить самое длинное и самое короткое слово в предложении
Определить самое длинное и самое короткое слово в предложении, при условии, что каждое слово...

Найти самое длинное слово в предложении.
Задано предложение, состоящее из слов, разделённым одним или несколькими пробелами. Найти самое...

1
be
94 / 94 / 64
Регистрация: 18.04.2011
Сообщений: 165
25.05.2011, 18:37 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var s,t,last:string;
    max_len,len,i:integer;
 
begin
     write('введите строку из русских букв : ');
     readln(s);
 
     max_len:=1;
     len:=length(s);
     i:=1;
 
     while (i<len) and (i<>len-1) and (s[i]<>'.') do
     begin
           {обрабатываем пробелы и прочую фигню}
           while (s[i]=' ') or (s[i]=',') do Inc(i);
           {мы нашли слово}
           t := '';
 
    while (s[i]<>' ') and (s[i]<>',') and (s[i]<>'.') and (i<=len) do
    begin
         t := t + s[i];
         Inc(i);
    end;
 
    if max_len < length(t) then
    begin
         max_len := length(t);
         last:=t;
    end;
    end;
 
    WriteLn('Самое длинное слово слово : ',last);
ReadLn;
end.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2011, 18:37
Помогаю со студенческими работами здесь

Найти самое длинное слово в предложении
Задача: найти самое длинное слово в предложении помогите пожалуйста найти ошибку в программе

Написать программу, которая находит самое длинное слово, встречающееся в предложении
Задано предложение-строка. Написать программу, которая находит самое длинное слово, встречающееся в...

Найти самое длинное слово в предложении и указать его порядковый номер.
Найти самое длинное слово в предложении и указать его порядковый номер. Если в предложении...

Вывести самое длинное слово в строке.
Тема:строки. Задание: вывести самое длинное слово помогите пожалуйста!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru