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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
#1

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

08.08.2012, 12:42. Просмотров 1525. Ответов 8
Метки нет (Все метки)

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

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

Строка: Вывести на экран только предложения, состоящие из заданного количества слов. - C++
Написать программу, которая считывает текст из файла и выводит на экран только предложения, состоящие из заданного количества слов.

Задача на тему "Строки" (вывести на экран только предложения, состоящие из заданного количества слов) - C++
написать программу, которая считывает текст из файла и вывыдит на экран только предложения состоящие из задоного количества слов int...

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

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

Написать программу, которая считывает с клавиатуры текст и выводит на экран толь¬ко предложения, состоящие из заданного количества слов. - C++
помогите написать прогу на С++ 1) Написать программу, которая считывает с клавиатуры текст и выводит на экран только предложения,...

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

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

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

Знаю, решение этой задачи есть в интернете, но там сложновато для моего понимания, хотелось бы как можно проще. Выручайте,господа, молю смиренно!
Кроме обычного решения, потребовали оформить также отдельно её с помощью функции( Ребят, надежда только на вашу помощь.
0
zitxbit
Master C/C++
88 / 740 / 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
2
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
08.08.2012, 16:06  [ТС] #5
Спасибо громадное за помощь! Вот бы ещё с функцией это же кто-нить помог сделать...
0
zitxbit
Master C/C++
88 / 740 / 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);
    }
}
2
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
08.08.2012, 16:10  [ТС] #7
Ого как быстро! Вы профи! Благодарю!
0
-=ЮрА=-
Заблокирован
Автор 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
1
Миниатюры
Вывести на экран из текста только предложения, состоящие из заданного количества слов  
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
08.08.2012, 18:19  [ТС] #9
Цитата Сообщение от zitxbit Посмотреть сообщение
void print_s(char* psz, int nwords)
...

zitxbit, я совсем ламер. куда это вставить в начальном варианте?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2012, 18:19
Привет! Вот еще темы с ответами:

Написать программу, которая считывает текст из файла и выводит на экран только предложения, состоящие из заданного колличества слов - C++
Задание выглядит следующим образом: &quot;Написать программу, которая считывает текст из файла и выводит на экран только предложения, состоящие...

Предложения, состоящие из заданного количества слов, упорядоченных по алфавиту - C++
5. *выводит предложения, состоящие из заданного количества слов, упорядоченных по алфавиту; Кто может объяснить,что мне вообще...

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

Определить количество слов состоящие из заданного количества букв - C++
Задана не пустая последовательность слов из латинских букв. последнее символом этой последовательности является точка. Словами называют...


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

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

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