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

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

Войти
Регистрация
Восстановить пароль
 
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
#1

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

11.11.2011, 08:22. Просмотров 1120. Ответов 14
Метки нет (Все метки)

Вывести на экран слова перед которыми стоят запятая и пробел. Не могу понять как ее реализовать чайниг в этом деле)

Добавлено через 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 секунды
уважаемые помогите пожалуйста. Это так набросок кода если что)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2011, 08:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести на экран слова перед которыми стоят запятая и пробел. (C++):

Напечатать только те слова, перед которыми в строке находятся только меньшие (по алфавиту) слова - C++
Дана строка s, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв. Между соседними словами стоит запятая,...

Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие - C++
Помогите написать программу на языке ANSI C или C++ Дана строка s, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 ...

В строку через пробел вводятся слова. Отсортировать введенные слова по алфавиту. Результат вывести в виде столбца. - C++
В строку через пробел вводятся слова. Отсортировать введенные слова по алфавиту. Результат вывести в виде столбца.

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

Из заданного файла удалить все слова c двумя согласными и вывести на экран оставшиеся слова - C++
Привет всем, в с++ не очень шарю, а до строк в изучении еще не дошел , поэтому не пойму как делать Дан текст. Словом текста считается...

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

14
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;
}
1
talis
792 / 544 / 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

1
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 18:28  [ТС] #4
Подскажите как написать эту программку с применением функции и флага
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 18:35 #5
XaD, какого флага?
0
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 18:43  [ТС] #6
во флаг регистрации символа записать пробел и запятую
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 18:47 #7
Цитата Сообщение от XaD Посмотреть сообщение
Подскажите как написать эту программку с применением функции и флага
Цитата Сообщение от XaD Посмотреть сообщение
во флаг регистрации символа записать пробел и запятую
Собственно, вот ответ. Что конкретно не ясно?
0
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 18:52  [ТС] #8
не могу записать это в программу, на словах понял примерно как но вот в программу записать тяжко
0
talis
792 / 544 / 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 вас больше заинтересует.
1
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 22:48  [ТС] #10
Dar101 запускаю программу хочу при вводе каких нибудь данных программка вылетает безо всяких ошибок. что я неправильно делаю?
0
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.";
1
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 23:18  [ТС] #12
запускаю появляется вот это окно и при нажатиии на любую клавишу окно закрывается
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 23:23 #13
XaD, так это и есть слова после запятой-пробела.
1
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
11.11.2011, 23:25  [ТС] #14
АА спасибо большое во я дурак не догнал по началу) Спасибо еще раз большое Вам!!!
0
XaD
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 15
22.11.2011, 19:09  [ТС] #15
А как модифицировать программку чтобы осуществлять ввод с клавиатуры?
0
22.11.2011, 19:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2011, 19:09
Привет! Вот еще темы с ответами:

Распечатать все буквы, непосредственно перед которыми находится буква С - C++
Дан массив символов S1,...,Sn. Распечатать все буквы, непосредственно перед которыми находится буква С. . n – число в диапазоне от 1 до...

Дана строка символов, состоящая из произвольного текста, слова раз-делены пробелами. Вывести на экран порядковый номер слова, накрывающего k позицию - C++
Помогите с вот такой вот задачкой: Дана строка символов, состоящая из произвольного текста, слова раз- делены пробелами. Вывести на...

Для заданной строки вывести на экран её символы, расположенные перед первой запятой - C++
Для заданной строки вывести на экран её символы, расположенные перед первой запятой

Удалить пробел перед точкой - C++
Вводится текст - необходимо удалить все пробелы перед точкой(запятой). Понимаю, что нужно сделать примерно так: string...


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

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

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