Форум программистов, компьютерный форум CyberForum.ru

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

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

Поменять местами самое длинное слово и самое короткое слово в тексте C++
Строки: найти самое короткое и самое длинное слово C++
Во введённом тексте найти самое длинное слово C++
Найти самое длинное и самое короткое слово в тексте C++
C++ Во введенном тексте найти самое длинное симметричное слово
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
851 / 749 / 71
Регистрация: 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;
}
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 16:23  [ТС]     Строки. В заданном тексте найти самое длинное слово и самое длинное предложение. #3
MrCold, Прога не работает! Нужно написать прогу с использованием файла......плиз.......
MrCold
851 / 749 / 71
Регистрация: 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
Регистрация: 22.02.2012
Сообщений: 36
21.03.2012, 21:01  [ТС]     Строки. В заданном тексте найти самое длинное слово и самое длинное предложение. #5
MrCold, а она в 2008 проге пойдет?
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
21.03.2012, 21:07     Строки. В заданном тексте найти самое длинное слово и самое длинное предложение. #6
Пойдет.

Добавлено через 4 минуты
Если не пойдет ,подключите #include "stdafx.h" .
Yandex
Объявления
21.03.2012, 21:07     Строки. В заданном тексте найти самое длинное слово и самое длинное предложение.
Ответ Создать тему
Опции темы

Текущее время: 13:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru