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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
Ольга Тимонова
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 36
#1

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

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

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

Найти в тексте самое длинное слово и самое длинное предложение - C++
вписать текст с клавиатуры и найти в этом тексте самое длинное слово и самое длинное предложение.Предложения должны быть разделены точкой.

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

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

Найти самое длинное и самое короткое слово в тексте - C++
найти самое длинное и самое короткое слово в тексте #include "stdafx.h"endl; #include <iostream> #include <string> #include...

Строки: найти самое короткое и самое длинное слово - C++
прошу спосите меня.... Дана строка текста, в которой слова разделены пробелами. Необходимо: - определить количество слов в строке; ...

Найти самое длинное предложение в тексте - C++
Найти самое длинное предложение в тексте( не строку) Код для нахождения самой длинной строки: #include <stdio.h> #include <stdlib.h> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrCold
854 / 752 / 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
854 / 752 / 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
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
21.03.2012, 21:07 #6
Пойдет.

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

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

Поменять местами самое длинное слово и самое короткое слово в тексте - C++
Пусть есть двумерный массив, заполненный символами. Рассматривать его как многострочный текст, слова в котором разделены одним или...

Во введённом тексте найти самое длинное слово - C++
Во введённом тексте найти самое длинное слово и вывести его на экран.

Найти во введённом тексте самое длинное симметричное слово - C++
1. Дана строка. Удвоить каждую встречающуюся «о» и «а». 2. В заданном тексте удалить из текста пробелы и подсчитать длину...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.03.2012, 21:07
Ответ Создать тему
Опции темы

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