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

Как определить на какую букву начинаются слова в строке??? - C++

Восстановить пароль Регистрация
 
Owen04
 Аватар для Owen04
5 / 5 / 3
Регистрация: 25.12.2009
Сообщений: 144
17.04.2010, 13:08     Как определить на какую букву начинаются слова в строке??? #1
С++

Вот задание: выделить из строки 1 все слова начинающиеся с гластной, а из 2 строки все согластные и образовать 3 строку состоящую из выделеных слов обеих строк, что бы слова разделялись двумя пробелами.

Гластных всего 6 ( a, e, i, o, u, y);

Я тут не могу понять как строку разбить на слова, что бы сравнить первую букву с этими шестью гластными!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2010, 13:08     Как определить на какую букву начинаются слова в строке???
Посмотрите здесь:

C++ Удалить из строки все слова, которые начинаются на заглавную букву
Вывести слова, которые начинаются на ту же букву, на которую заканчивается предыдущее слово C++
Удалить все слова, которые начинаются и заканчиваются за одну и ту же букву C++
Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. C++
Вывести из файла все слова, которые начинаются на заданную букву C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.04.2010, 14:01     Как определить на какую букву начинаются слова в строке??? #2
Можно в цикле считывать посимвольно от пробела до пробела, затем копировать это дело в буфер, там сравнивать первый симовл, если совпадает - копировать из буфера в результирующую строку. Так как все сравнения происходят на одной итерации, проблем с перемещением по строке не будет, счётчик всегда будет указывать на пробел после последнего проверенного слова.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
17.04.2010, 14:54     Как определить на какую букву начинаются слова в строке??? #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
#include <iostream>
#include <sstream>
#include <string>
#include <cctype>
    
bool isVowel(char ch){
    static const std::string vowels = "AEIOUY";
    return (vowels.find(std::toupper(ch)) != std::string::npos);
}   
 
int main(){
    std::string s1, s2, s3, tmp;
    std::cout << "First string: ";
    std::getline(std::cin, s1);
    std::cout <<"Second string: ";
    std::getline(std::cin, s2);
    
    s3 = "";
    std::istringstream ist(s1);
    while ( ist >> tmp )
        if ( isVowel(*tmp.begin()) )
            s3 += tmp + " ";
    
    ist.clear();
    ist.str(s2);
    while ( ist >> tmp )
        if ( !isVowel(*tmp.begin()) )
            s3 += tmp + " ";
    
    std::cout << "Result: " << s3 << std::endl;
    
    return 0;
}
Owen04
 Аватар для Owen04
5 / 5 / 3
Регистрация: 25.12.2009
Сообщений: 144
18.04.2010, 19:58  [ТС]     Как определить на какую букву начинаются слова в строке??? #4
Что такое std и ist??
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
18.04.2010, 21:00     Как определить на какую букву начинаются слова в строке??? #5
std - "пространство имен - некая объявляемая область, необходимая для того, чтобы избежать конфликтов имен идентификаторов.
Содержание заголовков нового стиля помещается в пространстве имен std."
-Г.Шилдт Самоучитель С++ 3 издание
C++
1
2
3
4
5
//можно после объявления заголовочных файлов
#include<iostream>
//#include...
//#include...написать
using namespace std;
и тогда можно будет убрать std::
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.04.2010, 21:08     Как определить на какую букву начинаются слова в строке??? #6
Цитата Сообщение от Vorona Посмотреть сообщение
и тогда можно будет убрать std::
Но лучше этого не делать. Почему - ищите на форуме, не раз уже говорили.
ist - объект класса istringstream.
Owen04
 Аватар для Owen04
5 / 5 / 3
Регистрация: 25.12.2009
Сообщений: 144
18.04.2010, 21:15  [ТС]     Как определить на какую букву начинаются слова в строке??? #7
Мда, почти всё ясно!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2010, 22:13     Как определить на какую букву начинаются слова в строке???
Еще ссылки по теме:

Вывести только те слова сообщения, которые начинаются и оканчиваются на одну и ту же букву C++
C++ Удалить все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву
Вывести все слова, которые начинаются и заканчиваются на одну букву C++

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

Или воспользуйтесь поиском по форуму:
Owen04
 Аватар для Owen04
5 / 5 / 3
Регистрация: 25.12.2009
Сообщений: 144
25.04.2010, 22:13  [ТС]     Как определить на какую букву начинаются слова в строке??? #8
Цитата Сообщение от Owen04 Посмотреть сообщение
Мда, почти всё ясно!
Вот еще вариант! =))
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
#include<iostream.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define MAX_LEN 1024
 
int whatisletter(char symbol)
{
    if((symbol >= 'a') && (symbol <= 'z'))
    {
        if ((symbol == 'a') || (symbol == 'e') || (symbol == 'i') || (symbol == 'o') || (symbol == 'u') || (symbol == 'y'))
        {
            return 1;
        }
        else
        {
            return 2;
        }
    }
    
    return -1;
}
 
int rezult(int len, char str[], char rez[], int *N, int let)
{
    char buffer[20];
    for (int i=0, j=0; i<len; i++)
    {
    while (str[i] == ' ')
    {
        i++;
    }
      while ((str[i]>='a') && (str[i]<='z'))
      {
        buffer[j] = str[i];
        i++;
        j++;
      }
    if (whatisletter(buffer[0]) == let)
    {
        for (int k=0; k<j; k++, (*N)++)
        {
        rez[*N]=buffer[k];
        }
        rez[*N] = ' ';
        (*N)++;
    }
    j=0;
    }
    return 0;
}
 
int main()
{   clrscr ();
    char str1[MAX_LEN];
    char str2[MAX_LEN];
    char str3[MAX_LEN];
    int len1, len2;
    int N=0;
 
    cout<<"Vvedite stroku 1: ";
    gets(str1);
    len1 = strlen(str1);
 
    cout<<"Vvedite stroku 2: ";
    gets(str2);
    len2 = strlen(str2);
 
    rezult(len1, str1, str3, &N, 1);
    rezult(len2, str2, str3, &N, 2);
 
    cout<<"Stroka 3: "<<str3;
 
    getch();
    return 0;
}
Yandex
Объявления
25.04.2010, 22:13     Как определить на какую букву начинаются слова в строке???
Ответ Создать тему
Опции темы

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