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

Вывести на экран первое и второе слово - C++

Восстановить пароль Регистрация
 
Vityxa
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 12
12.06.2012, 15:04     Вывести на экран первое и второе слово #1
помогите пожалуйста.

В строке удалить символ двоеточие ( и подсчитать количество удалений. Вывести на экран первое и второе слово.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2012, 15:04     Вывести на экран первое и второе слово
Посмотрите здесь:

C++ поменять местами первое и второе слово в каждой строке
Вывести на экран слова начинающиеся с той же буквы, что и первое слово предложения. Напечатать строку после изъятия этих слов. C++
Даны два слова.Верно ли,что первое слово начинается на ту же букву,на которую заканчивается второе слово (работа с символами строки) C++
Вывести на экран второе слово введённой пользователем строки C++
C++ Дано предложение. Нужно вывести на экран только первое слово предложения
Определить объединение из двух полей. Первое поле - массив из четырех байт, второе - двойное слово C++
Даны два слова.Верно ли, что первое слово начинается на ту же букву, на которую заканчивается второе слово C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.06.2012, 17:29     Вывести на экран первое и второе слово #2
Можно сделать вот так
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
#include <iostream>
#include <string>
using namespace std;
 
int main() 
{ 
    string str = "Jose: Mourinho: entrenador: of Real Madrid"; 
    int n = 0; // счётчик слов
    int count = 0; // счётчик символов двоеточия 
    unsigned int i;
 
    for ( i = 0; i < str.length(); i++) 
    { 
        if(str[i] == ':') 
        { 
            str.erase(i,1);  // удаляем символы из строки
            --i; 
            count++; 
        } 
    } 
 
    cout << str << endl; 
    cout << "Simvolov : v stroke " << count << endl; 
    cout << endl;
 
    for ( i = 0; i < str.length(); i++)  
    {
        if(str[i]==' ')  
        n++;               // считаем слова
        
        cout << str[i];
 
        if ( n == 2) 
            break; 
    }  
    cout << endl;
 
    return 0;
}
Vityxa
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 12
12.06.2012, 17:33  [ТС]     Вывести на экран первое и второе слово #3
Спасибо!))
-=ЮрА=-
Заблокирован
Автор FAQ
12.06.2012, 17:46     Вывести на экран первое и второе слово #4
Цитата Сообщение от Vityxa Посмотреть сообщение
помогите пожалуйста.
В строке удалить символ двоеточие ( и подсчитать количество удалений. Вывести на экран первое и второе слово.
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
#include <cstdio>
#include <iostream>
using namespace std;
 
int main()
{
    char text[1024] = {0};//Буффер для вводимого текста
    char *sub = NULL;//указатель на подстроку в тексте
    char firstWord [32] = {0};//Буффер для 1-го слова
    char secondWord[32] = {0};//Буффер для 2-го слова
    int nDel = 0;//Будет сожержать число удалений двоеточий
    cout<<"Enter text (less than 1024 chars)\n";
    cin.getline(text,1024);
    //Удаление двоеточий
    while(sub = strchr(text,':'))
    {
        if(sub + 1)//если двоеточие не последний символ
        //Последовательно вытираем их
            strcpy(&text[strlen(text) - strlen(sub)],sub + 1);
        text[strlen(text) - 1] = '\0';//обрезаем стркоу на 1 знак
        nDel++;
    }
    cout<<"Text after removing symbols \':\' \n"<<text<<endl;
    sscanf(text,"%s %s ",firstWord, secondWord);
    cout<<"1-st word : "<<firstWord<<endl;
    cout<<"2-nd word : "<<secondWord<<endl;
    system("pause");
    return 0;
}
Миниатюры
Вывести на экран первое и второе слово  
-=ЮрА=-
Заблокирован
Автор FAQ
12.06.2012, 17:48     Вывести на экран первое и второе слово #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
nDel++;
забыл сделать вывод числа удалений, вот так код модернизируй
cout<<nDel<<" was removed from text\n";
cout<<"Text after removing symbols \':\' \n"<<text<<endl;
Vityxa
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 12
12.06.2012, 18:10  [ТС]     Вывести на экран первое и второе слово #6
спасибо большое!))
dyosick
 Аватар для dyosick
61 / 61 / 6
Регистрация: 25.08.2008
Сообщений: 178
12.06.2012, 19:37     Вывести на экран первое и второе слово #7
Ну еще и третий, чтоб навернека. Кстати, символ-разделитель у меня всё, кроме цифр и букв (т.е. словом в моем варианте может быть даже "test12345")
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
#include <iostream>
#include <string>
#include <cctype>
 
#define DEBUG 0
 
#define NPOS std::string::npos
#define WORD_NUMBER 2
 
int main()
{
    unsigned short int word_count = 0;
    std::size_t del_count = 0;
    std::size_t word_start_pos = NPOS;
    std::string str = "::----   test:case::you:  must : delete-:all:colon";
 
    for (std::size_t cur_pos = 0; cur_pos < str.length();) {
        if (isalnum(str[cur_pos])) {
            if (word_count < WORD_NUMBER && word_start_pos == NPOS) {
#if DEBUG
                std::cout << "Found word start char[" << str[cur_pos] << "] at pos[" << cur_pos << "]" << std::endl;
#endif
                word_start_pos = cur_pos;
            }
            ++cur_pos;
        } else {
            if (word_count < WORD_NUMBER && word_start_pos != NPOS) {
                ++word_count;
                std::cout << "Word #" << word_count << ": " << str.substr(word_start_pos, cur_pos - word_start_pos) << std::endl;
                word_start_pos = NPOS;
            }
            if (str[cur_pos] == ':') {
                str.erase(cur_pos, 1);
                ++del_count;
            } else {
                ++cur_pos;
            }
        }
    }
 
    std::cout << "Deleted " << del_count << " colons" << std::endl;
    std::cout << "String after deleting colons: " << str << std::endl;
 
    return 0;
}
Vityxa
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 12
12.06.2012, 20:00  [ТС]     Вывести на экран первое и второе слово #8
спасибо большое за помощь!))
-=ЮрА=-
12.06.2012, 22:05
  #9

Не по теме:

dyosick, лучше используй stringstream

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 05:15     Вывести на экран первое и второе слово
Еще ссылки по теме:

C++ Вывести на экран самое короткое слово заданной строки (если их несколько, то первое)
C++ Дан массив символов, вывести на экран второе слово
C++ Ввести предложение. Поменять первое и второе слово местами
Определить объединение из двух полей. Первое поле – массив из четырех байт, второе – двойное слово C++
C++ Верно ли, что первое слово начинается на ту же букву, на которую заканчивается второе слово?

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5665 / 3144 / 356
Регистрация: 29.11.2010
Сообщений: 8,419
13.06.2012, 05:15     Вывести на экран первое и второе слово #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
 
int main()
{
    std::string str = "There: ar:e many varia::tions :on the punctuation and cas:ing o:f the phrase.::";
    std::cout<< "Before deleting: "<< str<< std::endl;
    str.erase(std::remove(str.begin(), str.end(), ':'), str.end() );
    std::cout<< "After deleting : "<< str<< std::endl;   
    std::size_t pos = str.find(' ', 0);
    if (pos == std::string::npos) { std::cout<< "There's only one word: "<< str; return 0; } 
    std::copy(str.begin(), str.begin() + pos++, std::ostream_iterator<char> (std::cout, "") );
    std::cout<< " ";     
    std::copy(str.begin() + pos, str.begin() + str.find(' ', pos), std::ostream_iterator<char> (std::cout, "") );     
    return 0;
}
http://liveworkspace.org/code/53ef0e...d6725d9da69ec3
http://liveworkspace.org/code/75eccb...2ac77254c9d626 Когда одно слово

Как бы кстати вот этот момент:
C++
1
std::copy(str.begin(), str.begin() + pos++, std::ostream_iterator<char> (std::cout, "") );
покрасивее оформить? А то у меня вкрадываются сомнения, что я извращенец
Yandex
Объявления
13.06.2012, 05:15     Вывести на экран первое и второе слово
Ответ Создать тему
Опции темы

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