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

Вывести на экран слова перед которыми стоят запятая и пробел. - C++

Восстановить пароль Регистрация
 
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 08:22     Вывести на экран слова перед которыми стоят запятая и пробел. #1
Вывести на экран слова перед которыми стоят запятая и пробел. Не могу понять как ее реализовать чайниг в этом деле)

Добавлено через 6 минут
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
int  main()
{   char  c;
        int  k ;
        printf("\n VV symbol: ");
    scanf("%c", &c);
    int  k = 0;
    while (c != '.')
    {   scanf("%c", &c);
        if (c == ',')
                        { k++ }
        {
                        if ( c == ' ' )
                        {
                                while (c!=' ')
                                {
                                        printf("%c", c);
                                        c++;
                                }
                         }
                }
                printf("%c", c);
    }
    return  k;
        getch ();
}
Добавлено через 43 секунды
уважаемые помогите пожалуйста. Это так набросок кода если что)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2011, 08:22     Вывести на экран слова перед которыми стоят запятая и пробел.
Посмотрите здесь:

C++ Удалить пробел перед точкой
Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие C++
C++ В строку через пробел вводятся слова. Отсортировать введенные слова по алфавиту. Результат вывести в виде столбца.
C++ Между соседними словами – запятая, за последним словом – точка. Создать новый файл, содержащий все слова, отличные от последнего слова
C++ Дана строка символов, состоящая из произвольного текста, слова раз-делены пробелами. Вывести на экран порядковый номер слова, накрывающего k позицию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dar101
 Аватар для Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 12:18     Вывести на экран слова перед которыми стоят запятая и пробел. #2
У этой задачи много решений. Попробуйте простой перебор, что-то вроде этого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
int main()
{
    bool print = false;
    char str[] ="Dostoyevsky's father Mikhail and grandfather, Andrey, were born in modern central Ukraine. Mikhail was a doctor and a devout Christian, who practised at the Mariinsky Hospital for the Poor in Moscow.";
 
    int len = strlen(str);
    for (int i=0; i<len; i++)
    {
        if (str[i]==32) print = false;
        if (str[i]==44 && str[i+1]==32) {print = true; i++;}
        if (print) printf("%c",str[i]);
    }
    getch();
    return 0;
}
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 13:11     Вывести на экран слова перед которыми стоят запятая и пробел. #3
Вот другой вариант. Посложнее, но, мне кажется, может быть интересен.

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 <iterator>
 
/* выводит только слов, стоящие после ", " */
template <typename InputIterator, typename OutputIterator>
OutputIterator & out_comma_space( InputIterator first, InputIterator last, OutputIterator result )
{
    enum : char { SMB_SPACE, SMB_COMMA, SMB_OTHER };         /* варианты символов */
    enum EState : char { NONE, COMMA, SPACE, OUT, OUT_END }; /* варианты состояний */
 
    /* матрица переходов */
    static const EState state_trans_matrix[5][3] =
    {
  /*              ' '      ','    other smb */
  /* NONE    */ { NONE,    COMMA,   NONE },
  /* COMMA   */ { SPACE,   COMMA,   NONE },
  /* SPACE   */ { SPACE,   COMMA,   OUT  },
  /* OUT     */ { OUT_END, OUT_END, OUT  },
  /* OUT_END */ { NONE,    COMMA,   NONE }
    };
 
    /* текущее состояние */
    EState state = NONE;
 
    while( first != last )
    {
        switch( *first )
        {
        case ',':
            state = state_trans_matrix[ state ][ SMB_COMMA ];
            break;
 
        case ' ':
            state = state_trans_matrix[ state ][ SMB_SPACE ];
            break;
 
        default:
            state = state_trans_matrix[ state ][ SMB_OTHER ];
            break;
        };
 
        switch( state )
        {
            case OUT_END:
               *result++ = ';';
               *result++ = ' ';
               break;
 
            case OUT:
               *result++ = *first;
            /* проваливаемся */
            case COMMA:
            case SPACE:
            case NONE:
               first++;
               break;
        }
    }
 
    return result;
}
 
int main( )
{
    std::string in;
 
    while( std::cout << '>' && std::getline( std::cin, in ) && in != "!quit" )
    {
        out_comma_space( in.begin(), in.end(), std::ostream_iterator<char>( std::cout ) );
        std::cout << '\n';
    }
 
    return 0;
}
Добавлено через 5 минут

Не по теме:

FIX: Добавил состояние SPACE

XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 18:28  [ТС]     Вывести на экран слова перед которыми стоят запятая и пробел. #4
Подскажите как написать эту программку с применением функции и флага
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 18:35     Вывести на экран слова перед которыми стоят запятая и пробел. #5
XaD, какого флага?
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 18:43  [ТС]     Вывести на экран слова перед которыми стоят запятая и пробел. #6
во флаг регистрации символа записать пробел и запятую
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 18:47     Вывести на экран слова перед которыми стоят запятая и пробел. #7
Цитата Сообщение от XaD Посмотреть сообщение
Подскажите как написать эту программку с применением функции и флага
Цитата Сообщение от XaD Посмотреть сообщение
во флаг регистрации символа записать пробел и запятую
Собственно, вот ответ. Что конкретно не ясно?
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 18:52  [ТС]     Вывести на экран слова перед которыми стоят запятая и пробел. #8
не могу записать это в программу, на словах понял примерно как но вот в программу записать тяжко
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 18:55     Вывести на экран слова перед которыми стоят запятая и пробел. #9
Цитата Сообщение от Dar101 Посмотреть сообщение
bool print = false;
У Dar101 это флаг, который говорит, была ли встречена "запятая - пробел".


Цитата Сообщение от talis Посмотреть сообщение
/* текущее состояние */
EState state = NONE;
Когда state == OUT, это говорит о том, что были встречены "запятая - пробел". Тоже своего рода флаг.

Добавлено через 27 секунд
Думаю, вариант Dar101 вас больше заинтересует.
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 22:48  [ТС]     Вывести на экран слова перед которыми стоят запятая и пробел. #10
Dar101 запускаю программу хочу при вводе каких нибудь данных программка вылетает безо всяких ошибок. что я неправильно делаю?
Dar101
 Аватар для Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 22:57     Вывести на экран слова перед которыми стоят запятая и пробел. #11
XaD, не совсем понял. То есть программа запускается, но вылетает?
А слова раздельные показывает?
*Входные данные там стоят сразу в коде, их не надо вводить с клавиатуры, вот эта строка:
C++
1
char str[] ="Dostoyevsky's father Mikhail and grandfather, Andrey, were born in modern central Ukraine. Mikhail was a doctor and a devout Christian, who practised at the Mariinsky Hospital for the Poor in Moscow.";
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 23:18  [ТС]     Вывести на экран слова перед которыми стоят запятая и пробел. #12
запускаю появляется вот это окно и при нажатиии на любую клавишу окно закрывается
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 23:23     Вывести на экран слова перед которыми стоят запятая и пробел. #13
XaD, так это и есть слова после запятой-пробела.
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 23:25  [ТС]     Вывести на экран слова перед которыми стоят запятая и пробел. #14
АА спасибо большое во я дурак не догнал по началу) Спасибо еще раз большое Вам!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2011, 19:09     Вывести на экран слова перед которыми стоят запятая и пробел.
Еще ссылки по теме:

Вывести на экран только предложения, которые начинаются с тире (перед ним могут находиться пробелы) C++
C++ Удалить записи о тех блюдах, перед которыми находится блюдо страны Испания
C++ Для заданной строки вывести на экран её символы, расположенные перед первой запятой

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

Или воспользуйтесь поиском по форуму:
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
22.11.2011, 19:09  [ТС]     Вывести на экран слова перед которыми стоят запятая и пробел. #15
А как модифицировать программку чтобы осуществлять ввод с клавиатуры?
Yandex
Объявления
22.11.2011, 19:09     Вывести на экран слова перед которыми стоят запятая и пробел.
Ответ Создать тему
Опции темы

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