Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/20: Рейтинг темы: голосов - 20, средняя оценка - 4.70
Ольга Тимонова
0 / 0 / 1
Регистрация: 22.02.2012
Сообщений: 36
1

Строки. В заданном тексте найти самое длинное слово и самое длинное предложение.

02.03.2012, 15:33. Просмотров 3824. Ответов 5
Метки нет (Все метки)

Задача: В заданном тексте найти самое длинное слово и самое длинное предложение. Помогите решить На СИ++ в Visual Studio.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2012, 15:33
Ответы с готовыми решениями:

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

Найти самое длинное слово в заданном тексте
Помогите пожалуйста!!! задан текст, найти самое длинное слово.

В заданном тексте найти самое длинное слово и самую длинную фразу
У заданном тексте найти самое длинное слово и самую длинную фразу

В заданном предложении найти самое короткое и самое длинное слово
Строка вводится с клавиатуры. Нужно выполнить задание, не применяя функций...

Найти самое длинное и самое короткое слово в тексте
Всем доброго времени суток! В моем задание нужно найти самое длинное и самое...

5
MrCold
861 / 759 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
03.03.2012, 07:05 2
Пример простенький .
Заносим текст в массив.
Делаем копию массива .Разбиваем текст на слова и определяем
самое длинное слово .
Далее разбиваем копию текста
на предложения ,определяем самое длинное .предложение

Из недостатков:
1)Длинных слов(предложений ) может быть несколько , выводится то
которое ближе к началу текста.
2)В самом длинном предложении в конце не выводится знак пунктуации .


C++
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
 
int main()
{  
                char text[256];     
        char copytext[256];   
        char *token;
 
        string words[100];      
        string substrings[100]; 
  
                int i = 0;
                int maxsize = 0;
                int num = 0;
 
        cout << "Enter your text:\n";
                cin.getline(text,256);          // ввод текста 
        strcpy(copytext,text);          // создаем копию текста 
                
        //  РАЗБИВАЕМ ТЕКСТ НА СЛОВА   И ОПРЕДЕЛЯЕМ 
  //          САМОЕ ДЛИННОЕ  СЛОВО 
 
        token = strtok(text,"\t ,.!?\n");
 while(token)
       { 
           words[i] = token;
 
           if(maxsize < words[i].size())
           {
           maxsize = words[i].size();
 
           num = i;}
 
                    token = strtok(NULL,"\t ,.!?\n");
 
        i++;
        }
 
 cout << " \nThe longest word :\n\n" << words[num];
 
 //////////////////////////////////////////////
        i = 0;
 
        maxsize = 0;
 
  //  РАЗБИВАЕМ КОПИЮ ТЕКСТА НА ПРЕДЛОЖЕНИЯ   
    //  И ОПРЕДЕЛЯЕМ    САМОЕ ДЛИННОЕ  
 
         token = strtok(copytext,".!?\n");
 
 while(token)
       { 
           substrings[i] = token;
 
            if(maxsize < substrings[i].size())
            { 
                maxsize = substrings[i].size();  //  
 
                num = i;
            }
           token = strtok(NULL,".!?\n");
 
            i++;
       }
       cout << " \n\nThe longest sentence : \n\n" << substrings[num];
 
       cout << endl << endl;
 
        system("pause");
 
        return 0;
}
1
Ольга Тимонова
0 / 0 / 1
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 16:23  [ТС] 3
MrCold, Прога не работает! Нужно написать прогу с использованием файла......плиз.......
0
MrCold
861 / 759 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
21.03.2012, 20:57 4
В первом файле находим сам. большое слово и предложение
и записываем в другой файл .
C++
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
        size_t pos_s = 0;
        size_t pos_w = 0;
        size_t n = 0;
        size_t k = 0;
        size_t j = 0;
        size_t counter_s = 0;
        size_t counter_w = 0;
        size_t maxlen_s = 0;
        size_t maxlen_w = 0;
        
        char text[512] ="";
 
       size_t i = 0;
        ofstream output("fileWrite.txt");
        if (!output) 
        {
                cerr << "Error in opening file for writing" << endl;
        };
        ifstream input("fileRead.txt");
        if(!input)
            {
                cerr << "Error in opening file for reading" << endl;
        }else{
        while(!input.eof())
       {
           input.get(text[i]);
            if(text[i - 1] == '.' ) counter_s = 0;
                if(text[i] == '.' && counter_s > maxlen_s){
                    pos_s = i;
                    maxlen_s = counter_s;
                }                                       
        if(!isalpha(text[i]) || text[i]=='\0')
            counter_w = 0;
        
                if(isalpha(text[i]) && counter_w > maxlen_w){
                    pos_w = i;maxlen_w = counter_w;
                                    }
        
                counter_w++;
                counter_s++;
                i++;
        }}
        input.close();
        text[i] = '\0';  
        i = 0;
        counter_w = 0;
            while(text[i]){
            
                if(text[i] == '.' && pos_s == i){
                    output << "Longest sentence :\n";
                    cout << "\nLongest sentence :";
            for (k = n; k <= i; k++) {output <<  text[k];
            cout <<  text[k];}
             n = i + 1;
             output << endl;
             cout << endl;
         }
        
         if( text[i] == '.'&& pos_s != i )  {   
             
             n = i + 1;
         }  
         if(isalpha(text[i])) counter_w++;
            if(!isalpha(text[i]) || text[i]=='\0')
            counter_w = 0;
                if(isalpha(text[i]) && pos_w == i){
                    output << "Longest word :\n";
                    cout << "\nLongest word :";
                    for(j = i - counter_w ; j <= i; j++)
                    {output << text[j];cout << text[j];}
                output <<  endl;    
                
                cout <<  endl;  
                }       
            i++;
        }
            output.close();
        cout << "\nAll text :\n" << text << endl;
 
        system("pause");
}
Запишется во второй файл:
C
1
2
3
4
5
Longest word :
 favorites
Longest sentence :
 Show Recent Projects from the 
Welcome Page menu to create your favorites.
Консоль:
0
Миниатюры
Строки. В заданном тексте найти самое длинное слово и самое длинное предложение.  
Ольга Тимонова
0 / 0 / 1
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 21:01  [ТС] 5
MrCold, а она в 2008 проге пойдет?
0
MrCold
861 / 759 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
21.03.2012, 21:07 6
Пойдет.

Добавлено через 4 минуты
Если не пойдет ,подключите #include "stdafx.h" .
0
21.03.2012, 21:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2012, 21:07

Найти самое длинное и самое короткое слово в тексте
найти самое длинное и самое короткое слово в тексте #include &quot;stdafx.h&quot;endl;...

Строки: найти самое короткое и самое длинное слово
прошу спосите меня.... Дана строка текста, в которой слова разделены...

Найти самое длинное предложение в тексте
Найти самое длинное предложение в тексте( не строку) Код для нахождения самой...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru