Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
#1

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

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

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

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

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

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

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

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

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

8
Пaтрик
425 / 393 / 132
Регистрация: 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
89 / 741 / 279
Регистрация: 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/c09dcd993c5a71e76d81a504891ed74c
2
bullin2d
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 22
08.08.2012, 16:06  [ТС] #5
Спасибо громадное за помощь! Вот бы ещё с функцией это же кто-нить помог сделать...
0
zitxbit
89 / 741 / 279
Регистрация: 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/e309cd18f2f822ef56c82238c3e22715
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
08.08.2012, 18:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2012, 18:19

Потоки.Программа выводит на экран только предложения, состоящие из заданного количества слов. Нужно дополнить прогу
вот что нужно написать, чтобы выводило правильно. везде (в интернете) очень...

Вывести предложения состоящие из заданного количества слов
Выполнить задание используя функции библиотеки для работы со строками и...

Записать из одного текстового файла в другой только предложения, состоящие из заданного количества слов
Здравствуйте. Не могу понять в чем ошибка и правильно ли я вообще выполняю...


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

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

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