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

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

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

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

12.06.2012, 15:04. Просмотров 693. Ответов 9
Метки нет (Все метки)

помогите пожалуйста.

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

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

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

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

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

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

Если первое число окажется кратным 5 или второе число будет нечетным, то вывести на экран сумму их модулей - C++
4. Даны два числа N и М. Если первое число окажется кратным 5 или второе число будет нечетным, то вывести на экран сумму модулей заданных...

9
David Sylva
1291 / 953 / 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;
}
1
Vityxa
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 12
12.06.2012, 17:33  [ТС] #3
Спасибо!))
0
-=ЮрА=-
Заблокирован
Автор 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;
}
1
Миниатюры
Вывести на экран первое и второе слово  
-=ЮрА=-
Заблокирован
Автор FAQ
12.06.2012, 17:48 #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
nDel++;
забыл сделать вывод числа удалений, вот так код модернизируй
cout<<nDel<<" was removed from text\n";
cout<<"Text after removing symbols \':\' \n"<<text<<endl;
1
Vityxa
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 12
12.06.2012, 18:10  [ТС] #6
спасибо большое!))
0
dyosick
62 / 62 / 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;
}
1
Vityxa
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 12
12.06.2012, 20:00  [ТС] #8
спасибо большое за помощь!))
0
-=ЮрА=-
12.06.2012, 22:05
  #9

Не по теме:

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

1
MrGluck
Модератор
Эксперт CЭксперт С++
7525 / 4663 / 704
Регистрация: 29.11.2010
Сообщений: 12,738
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/53ef0eea815fee2e26d6725d9da69ec3
http://liveworkspace.org/code/75eccbef02cd0017e62ac77254c9d626 Когда одно слово

Как бы кстати вот этот момент:
C++
1
std::copy(str.begin(), str.begin() + pos++, std::ostream_iterator<char> (std::cout, "") );
покрасивее оформить? А то у меня вкрадываются сомнения, что я извращенец
1
13.06.2012, 05:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 05:15
Привет! Вот еще темы с ответами:

Дано предложение. Нужно вывести на экран только первое слово предложения - C++
Дано предложение. Нужно вывести на экран только первое слово предложения

Вывести на экран самое короткое слово заданной строки (если их несколько, то первое) - C++
Написать функцию, которая выводит на экран самое короткое слово. Если их несколько, то первое. Ребят, помогите, пожалуйста, написать...

поменять местами первое и второе слово в каждой строке - C++
ввести массив из 5 строк с клавиатуры,поменять местами первое и второе слово в каждой строке. помогите решить плиз

Ввести предложение. Поменять первое и второе слово местами - C++
Условие:Ввести предложение.Поменять первое и второе слово местами.Вывести результат на экран. как написать текст программы??


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

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

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