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

Вывести на экран из текста только предложения, состоящие из заданного количества слов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
08.08.2012, 12:42     Вывести на экран из текста только предложения, состоящие из заданного количества слов #1
Помогите решить задачку:
Вывести на экран из текста только предложения, состоящие из заданного количества слов.

Знаю, решение этой задачи есть в интернете, но там сложновато для моего понимания, хотелось бы как можно проще. Выручайте,господа, молю смиренно!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2012, 12:42     Вывести на экран из текста только предложения, состоящие из заданного количества слов
Посмотрите здесь:

Написать программу, которая считывает текст из файла и выводит на экран только предложения, состоящие из заданного колличества слов C++
C++ Написать программу, которая считывает текст с клавиатуры и выводит на экран только слова состоящие из заданного количества букв
Написать программу, которая считывает с клавиатуры текст и выводит на экран толь¬ко предложения, состоящие из заданного количества слов. C++
Задача на тему "Строки" (вывести на экран только предложения, состоящие из заданного количества слов) C++
C++ Строка: Вывести на экран только предложения, состоящие из заданного количества слов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
08.08.2012, 12:50     Вывести на экран из текста только предложения, состоящие из заданного количества слов #2
Развибаете текст на предложения, загоняете в массив.
Разбиваете каждое предложение на слова, считаете сколько их, запоминаете, где больше всего.
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
08.08.2012, 13:42  [ТС]     Вывести на экран из текста только предложения, состоящие из заданного количества слов #3
Я только начал изучать программирование в универе, так ещё дуб в этом. Задали на практику много, не успеваю. Если есть возможность, то мне нужен листинг.

Добавлено через 48 минут
Цитата Сообщение от bullin2d Посмотреть сообщение
Помогите решить задачку:
Вывести на экран из текста только предложения, состоящие из заданного количества слов.

Знаю, решение этой задачи есть в интернете, но там сложновато для моего понимания, хотелось бы как можно проще. Выручайте,господа, молю смиренно!
Кроме обычного решения, потребовали оформить также отдельно её с помощью функции( Ребят, надежда только на вашу помощь.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
08.08.2012, 16:01     Вывести на экран из текста только предложения, состоящие из заданного количества слов #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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
int main()
{
    static char psz[256] = "hello. world is nice. cool day! to be or not to be? very nice day!";
    int nwords = 3;
 
    printf("string = %s\n\n",psz);
 
    for (int i = 0; psz[i] != '\0'; i++)
    {
        char pchars[] = "!?."; int k = i, cnt = 0;
        while (!strchr(pchars,psz[i]) && psz[i] != '\0')
            if (isspace(psz[i++])) cnt++; 
 
        int n = k; if (k == 0) cnt++;
        char temp[256] = "\0"; int s = 0;
        while (n <= i && cnt == nwords) 
            temp[s++] = psz[n++];
 
        if (cnt == nwords) 
            printf("%s\n",temp);
    }
 
    _getch();
 
    return 0;
}
http://liveworkspace.org/code/c09dcd...81a504891ed74c
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
08.08.2012, 16:06  [ТС]     Вывести на экран из текста только предложения, состоящие из заданного количества слов #5
Спасибо громадное за помощь! Вот бы ещё с функцией это же кто-нить помог сделать...
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
08.08.2012, 16:08     Вывести на экран из текста только предложения, состоящие из заданного количества слов #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void print_s(char* psz, int nwords)
{
    for (int i = 0; psz[i] != '\0'; i++)
    {
        char pchars[] = "!?."; int k = i, cnt = 0;
        while (!strchr(pchars,psz[i]) && psz[i] != '\0')
            if (isspace(psz[i++])) cnt++; 
 
        int n = k; if (k == 0) cnt++;
        char temp[256] = "\0"; int s = 0;
        while (n <= i && cnt == nwords) 
            temp[s++] = psz[n++];
 
        if (cnt == nwords) 
            printf("%s\n",temp);
    }
}
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
08.08.2012, 16:10  [ТС]     Вывести на экран из текста только предложения, состоящие из заданного количества слов #7
Ого как быстро! Вы профи! Благодарю!
-=ЮрА=-
Заблокирован
Автор FAQ
08.08.2012, 17:52     Вывести на экран из текста только предложения, состоящие из заданного количества слов #8
Цитата Сообщение от bullin2d Посмотреть сообщение
Вывести на экран из текста только предложения, состоящие из заданного количества слов.
bullin2d, тоже как вариант
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int getNumWordsInSentence(char * sentence);
 
int main()
{
    int nWords        = 0;//áóäåò õðГ*Г*ГЁГІГј ÷èñëî ñëîâ
    int nSentence     = 0;//áóäåò õðГ*Г*ГЁГІГј ÷èñëî ïðåäëîæåГ*ГЁГ©
 
    char inp[1024]    = {0};//ГЃГіГґГґГҐГ° äëÿ ââîäèìîãî ГІГҐГЄГ±ГІГ*
    char out[1024]    = {0};//ГЃГіГґГґГҐГ° äëÿ âûâîäèìîãî ГІГҐГЄГ±ГІГ*
    char sentence[128]= {0};//ГЃГіГґГґГҐГ° äëÿ ïåðäëîæåГ*ГЁГї
    char * sub        = NULL;//ÓêГ*Г§Г*òåëü Г*Г* ïîäñòðîêó Г± ïðåäëîæåГ*ГЁГҐГ¬
    //ÂîçìîæГ*ûå Г°Г*çäåëèòåëè ìåæäó ïðåäëîæåГ*èÿìè
    char **sWords     = NULL;//ÓêГ*çåòåëü Г*Г* Г¬Г*Г±Г±ГЁГў Г± ïðåäëîæåГ*èÿìè ГЁГ§ ГІГҐГЄГ±ГІГ*
    char delim[] = ".!?";
    //Ââîäèì ГІГҐГЄГ±ГІ
    printf("Enter text   : ");scanf("%[^\n]",inp);
    printf("Enter nWords : ");scanf("%d",&nWords);
/*  strcpy
    (
        inp,
        "hello. world is nice. cool day! to be or not to be? very nice day!"
    );
    nWords = 3;*/
    strcpy(out,inp);
    //Ïîäñ÷¸ò Г·ГЁГ±Г«Г* ïðåäëîæåГ*ГЁГ© Гў ГІГҐГЄГ±ГІГҐ
    for
    (
        sub = strtok( out,delim);
        sub != NULL;
        sub = strtok(NULL,delim)
    )
        nSentence = nSentence + 1;
    //Âûäåëÿåì ГЇГ*ìÿòü ïîä ñòðîêè Г¬Г*Г±Г±ГЁГўГ* ïðåäëîæåГ*ГЁГ©
    sWords = (char **)malloc(nSentence*sizeof(char *));
    //Êîïèðóåì ïðåäëîæåГ*ГЁГї Гў Г¬Г*Г±Г±ГЁГў
    nSentence = 0;
    out[0]    = 0;
    for
    (
        sub = strtok( inp,delim);
        sub != NULL;
        sub = strtok(NULL,delim)
    )
    {
        sWords[nSentence] = (char *)malloc(128*sizeof(char *));
        strcpy(sWords[nSentence],sub);
        nSentence = nSentence + 1;
    }
    //ГЋГ±ГІГ*âëåÿì Гў âûõîäГ*îì ГІГҐГЄГ±ГІГҐ Г*ГіГ¦Г*ûå ïðåäëîæåГ*ГЁГї
    while(nSentence)
    {
        strcpy(sentence,sWords[nSentence - 1]);
        if(nWords == getNumWordsInSentence(sentence))
        {
            if(!out[0])
                strcpy(out,sWords[nSentence - 1]);
            else
                strcat(out,sWords[nSentence - 1]);
        }
        nSentence = nSentence - 1;
    }
    printf("Output text : %s\n",out);
    return 0;
}
 
int getNumWordsInSentence(char * sentence)
{
    int nCount  = 0;  //×èñëî ñëîâ Гў ïðåäëîæåГ*ГЁГЁ
    char *word  = {0};//ÓêГ*Г§Г*åòëü Г*Г* ñëîâî ГЁГ§ ГІГҐГЄГ±ГІГ*
    //ÂîçìîæГ*ûå Г°Г*çäåëèòåëè ìåæäó ñëîâГ*ìè
    char delim[] = ",;:- ";
    for
    (
        word = strtok(sentence,delim);
        word != NULL;
        word = strtok(NULL,delim)
    )
        nCount = nCount + 1;
    return nCount;
}
http://liveworkspace.org/code/e309cd...c82238c3e22715
Миниатюры
Вывести на экран из текста только предложения, состоящие из заданного количества слов  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2012, 18:19     Вывести на экран из текста только предложения, состоящие из заданного количества слов
Еще ссылки по теме:

Определить количество слов состоящие из заданного количества букв C++
C++ Вывести на экран строки, состоящие из заданного количества слов
Предложения, состоящие из заданного количества слов, упорядоченных по алфавиту C++

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

Или воспользуйтесь поиском по форуму:
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
08.08.2012, 18:19  [ТС]     Вывести на экран из текста только предложения, состоящие из заданного количества слов #9
Цитата Сообщение от zitxbit Посмотреть сообщение
void print_s(char* psz, int nwords)
...

zitxbit, я совсем ламер. куда это вставить в начальном варианте?
Yandex
Объявления
08.08.2012, 18:19     Вывести на экран из текста только предложения, состоящие из заданного количества слов
Ответ Создать тему
Опции темы

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