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

Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. - C++

Восстановить пароль Регистрация
 
Aleksandr852
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 14
10.04.2013, 14:14     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #1
5.17 Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово.
Например:
S = «С началом второй мировой войны правительства разных стран начали разрабатывать вычислительные машины, осознавая их стратегическую роль в ведении войны».
Ответ: «С стран стратегическую».
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2013, 14:14     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово.
Посмотрите здесь:

Дана строка текста, в которой слова разделены пробелами... C++
C++ Дана строка текста, в которой слова разделены пробелами.
C++ Дана строка текста в которой слова разделены пробелами...
C++ Строка, слова в которой разделены пробелами
дана строка. найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
10.04.2013, 14:34     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #2
Aleksandr852, держи
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
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
 
int main()
{
    char fstchr = 0;//ïåðâГ*Гї ГЎГіГЄГўГ* Гў 1-Г¬ ñëîâå
    string word ="";//ГІГҐГЄГіГ№ГҐГҐ ñëîâî
    //Ââîä äåëГ*Г© ëþáîé Гї ÷òîáû Г±ГЅГЄГ®Г*îìèòü âðåìÿ Г±Г°Г*çó ГўГЎГЁГ« ëèòåðГ*Г«
    string text = "This is the test of program";
    cout<<"Input : "<<text<<endl;
    stringstream ss;
    ss.str(text);
    text = "";//î÷èñòèëè ГЎГіГґГҐГ° ГІГҐГЄГ±ГІГ*
    while(ss>>word)
    {
        if(!fstchr)
            fstchr = tolower(word[0]);
        //ГЋГЎГїГ§Г*òåëüГ*Г® Г±Г°Г*ГўГ*ГЁГўГ*ГҐГ¬ ГЎГіГЄГўГ» Гў 1-Г¬ ðåãèñòðå
        if(fstchr == tolower(word[0]))
            text += (word + " ");
    }
    cout<<"Output: "<<text<<endl;
    cin.get();
    return 0;
}
Миниатюры
Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово.  
-=ЮрА=-
10.04.2013, 14:37
  #3

Не по теме:

PS:Руссификация делается через setlocale(LC_ALL, "RUS") в самом начале мєйна, я не стал приводить, т.к не знаю компилятор под который будем пытаться руссифицировать, так что привёл код в стандарте С++ http://codepad.org/zPUKjOrR

isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
10.04.2013, 21:54     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #4
-=ЮрА=- подскажи пожалуйста как сделать, чтобы можно было вводить текст с клавиатуры????????? Заранее огромное спасибо.
-=ЮрА=-
Заблокирован
Автор FAQ
10.04.2013, 22:00     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #5
Цитата Сообщение от isaak Посмотреть сообщение
-=ЮрА=- подскажи пожалуйста как сделать, чтобы можно было вводить текст с клавиатуры????????? Заранее огромное спасибо.
- для последних версий студии вот так
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
string word ="";//текущее слово
* * //Вот и все изменения
* * string text = "";
cout<<"Enter text : ";cin>>text;

* * cout<<"Input : "<<text<<endl;
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
10.04.2013, 22:27     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #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
26
27
28
29
30
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );
    char fstchr = 0;//первая буква в 1-м слове
    string word ="";//текущее слово
    //Ввод делай любой я чтобы сэкономить время сразу вбил литерал
    string text = "";
    cout<<"Введите текст";
    cin>>text;
    cout<<"Ввод : "<<text<<endl;
    stringstream ss;
    ss.str(text);
    text = "";//очистили буфер текста
    while(ss>>word)
    {
        if(!fstchr)
            fstchr = tolower(word[0]);
        //Обязательно сравниваем буквы в 1-м регистре
        if(fstchr == tolower(word[0]))
            text += (word + " ");
    }
    cout<<"Output: "<<text<<endl;
    cin.get();
return 0;
}
Заранее огромное спасибо!!!!!
-=ЮрА=-
Заблокирован
Автор FAQ
10.04.2013, 22:41     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #7
isaak, что именно не работает?
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
10.04.2013, 23:06     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #8
-=ЮрА=- у меня программа не правильно работает, она должна выводить слова в которых совпадает первая буква, а у меня выводит одно слово?????? Заранее огромное спасибо!!!!!!
Миниатюры
Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово.  
-=ЮрА=-
Заблокирован
Автор FAQ
10.04.2013, 23:13     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #9
Цитата Сообщение от isaak Посмотреть сообщение
cout<<"Введите текст";
* * cin>>text;
isaak, да вижу. Я пропустил что ввод стринги завершается на пробеле, вобщем вместо cin надо
getline(cin, text);

C++
1
2
cout<<"Введите текст";
getline(cin, text);
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
10.04.2013, 23:20     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #10
Спасибо -=ЮрА=- все заработало!!!!!
cygwin
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 17
11.04.2013, 00:47     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #11
А можно и так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
#include <regex>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian_Russia.1251");
 
    string str("С началом второй мировой войны правительства разных стран начали разрабатывать вычислительные машины, осознавая их стратегическую роль в ведении войны");
 
    string exp = "(^| )[^";
    exp +=  toupper(str[0]);
    exp +=  tolower(str[0]);
    exp +=  "][^ ]*";
 
    string s = regex_replace(str, regex(exp), string(""));
 
    printf("%s\n", s.c_str());
 
    return 0;
}
>>С стран стратегическую
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2013, 02:28     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово.
Еще ссылки по теме:

C++ Дана строка текста, в которой слова разделены символами "#" и пробелами
Дана строка. Найте в ней те слова, которые начинаются и оканчиваются одной и той же буквой C++
Дана строка текста, в которой слова разделены пробелами и запятыми, вывести повторяющиеся слова C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
11.04.2013, 02:28     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. #12
cygwin, лучше не юзать имена стандлартных функций из cmath для переменных
Цитата Сообщение от cygwin Посмотреть сообщение
string exp
Цитата Сообщение от cygwin Посмотреть сообщение
printf("%s\n", s.c_str());
- Си и С++ совмещать не следует,
а в целом да можно поюзать и regex_replace c пометкой С11+ (не все компиляторы поддерживают пока что)
Yandex
Объявления
11.04.2013, 02:28     Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово.
Ответ Создать тему
Опции темы

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