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

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

Войти
Регистрация
Восстановить пароль
 
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 346
#1

Вывести только те слова заданного текстового сообщения, которые содержат хотя бы одну цифру - C++

08.05.2014, 14:50. Просмотров 611. Ответов 13
Метки нет (Все метки)

Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания. Вывести только те слова сообщения, которые содержат хотя бы одну цифру.

Помогите с кодом.

Добавлено через 30 минут
C++
1
2
3
char *str="Зд4сь птицы не п0ют...";
  char digit[]="1234567890"; // строка искомых символов
  int num=strspn(str, digit);  //поиск строки в подстроке
Далее без понятия...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 14:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести только те слова заданного текстового сообщения, которые содержат хотя бы одну цифру (C++):

Вывести только те слова сообщения, которые содержат не более чем n букв - C++
Можете помочь написать программу? Желательно просто и используя using namespace std; Я не сильно понимаю как работать со строками, поэтому...

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

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

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

Дана строка. Указать те слова, которые содержат хотя бы одну букву k - C++
Решите кто может завтра уже здавать. Я просто представления неимею как их делать, я по С++ не шарю нифига.=(((( 1. Дана строка....

Удалить все слова, которые содержат хотя бы одну латинскую букву - C++
Подскажите, почему не работает программа, пожалуйста. :scratch:#include "stdafx.h" #include <iostream> #include <sstream> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
08.05.2014, 15:03 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от b0nny Посмотреть сообщение
Вывести только те слова сообщения, которые содержат хотя бы одну цифру.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include<sstream>
#include<algorithm>
#include<string>
int main()
{
    std::string str = "f1rst string w0rd",word;
    std::stringstream s(str);
    while(s>>word)
        if(std::find_if(word.begin(),word.end(),::isdigit)!=word.end())
            std::cout<<word<<" ";
    return 0;
}
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
08.05.2014, 15:12 #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
#include <iostream>
#include <sstream>
#include <string>
#include <cctype>
 
using namespace std;
 
int main()
{
    string str = "Zd4s ptici ne p0jut a p1ashut";
 
    stringstream ss(str);
 
    string temp;
    int sz;
    bool flag;
    while(!ss.eof())
    {
 
 
        flag = false;
        ss >> temp;
        sz = temp.length();
        for(int i = 0; i != sz; i++)
        {
            if(isdigit(temp[i]))
            flag = true;
        }
        if(flag)
        cout << temp << endl;
 
    }
    return 0;
}
Ilot
Модератор
Эксперт С++
1809 / 1166 / 227
Регистрация: 16.05.2013
Сообщений: 3,071
Записей в блоге: 5
Завершенные тесты: 1
08.05.2014, 15:47 #4
cooller, jurok_85,
"Вася1,любит пиво?"
Оп-ля.
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
08.05.2014, 15:54 #5
любит, потому и пишет не грамотно
BoyStyle
7 / 7 / 0
Регистрация: 24.02.2014
Сообщений: 302
Завершенные тесты: 1
08.05.2014, 15:58 #6
jurok_85, используй
C
1
 setlocale(LC_ALL, "Russian");
чтобы не писать в транслите и не мучатся )
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
08.05.2014, 16:03 #7
NightSun, а у меня code::blocks пробовал setlocale(LC_ALL, "Russian"); все равно что то непонятное выводит. Может потому что windows английский?
BoyStyle
7 / 7 / 0
Регистрация: 24.02.2014
Сообщений: 302
Завершенные тесты: 1
08.05.2014, 16:05 #8
jurok_85,
C
1
setlocale (0,"Rus");
попробуйте это. Вставлять нужно
C
1
2
 int main()
{ сюда }
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
08.05.2014, 16:15 #9
Цитата Сообщение от jurok_85 Посмотреть сообщение
а у меня code::blocks пробовал setlocale(LC_ALL, "Russian"); все равно что то непонятное выводит
попробуй
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
и в свойствах консоли поставь шрифт Lucida Control

Добавлено через 51 секунду
Цитата Сообщение от NightSun Посмотреть сообщение
чтобы не писать в транслите и не мучатся )
писать на английском и не мучатся)
Ilot
Модератор
Эксперт С++
1809 / 1166 / 227
Регистрация: 16.05.2013
Сообщений: 3,071
Записей в блоге: 5
Завершенные тесты: 1
08.05.2014, 16:25 #10
Цитата Сообщение от cooller Посмотреть сообщение
писать на английском и не мучатся)
Правильно. Особенно если забываются локали и фасеты.
SANYAMILITARY
7 / 7 / 3
Регистрация: 07.05.2014
Сообщений: 56
08.05.2014, 19:13 #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <conio.h>
#include <cstring>
#include <cctype>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
 
    char *str = "I 10ve pr0gramming";
    cout << "String: " << str << endl;
    char digit[] = "1234567890";
    cout << "Numbers: " << digit << endl;
    int number = strlen(str);
 
    int start(0);
    int finish(0);
    for (int t(0); t<number; t++)
    {
        if (str[t]==' ') finish = t;
        if(int((str[t])>47 && int(str[t])<58) || start<finish)
        {
            while (str[start] != ' ' && start<=number)
            {
                for (finish; finish<=start; finish++)
                  cout << str[finish];
                start++;
            }
            start++;
        }
 
    }
 
 
    _getch();
    return 0;
}
Добавлено через 56 секунд
Вот мой вариант. Я понимаю, что немного коряво. Не судите строго.

Добавлено через 5 минут
Блин, забыл. Вводить только маленькие английские буквы при желании можна доработать.
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 346
08.05.2014, 19:27  [ТС] #12
Спасибо всем.
Выбрал более понятный вариант для себя.
setlocale(LC_ALL, "Russian"); - не помогает. Фигня какая-то получается на выходе.
При SetConsoleCP(1251); SetConsoleOutputCP(1251); - компилятор ругается. В консоле стоит Lucida Control.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
08.05.2014, 19:30 #13
Добавлено через 58 секунд
Цитата Сообщение от b0nny Посмотреть сообщение
При SetConsoleCP(1251); SetConsoleOutputCP(1251); - компилятор ругается
подключи
C++
1
#include<windows.h>
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 346
08.05.2014, 19:38  [ТС] #14
Что-то как-то мне не понятно.
Точно не пахал в варианте у cooller русский. Я все варианты пробывал. У 2-го точно тоже не пахал у меня. Вот 3-й с русским не пробывал.
setlocale(LC_ALL, "Russian"); - я добавлял один фиг.
Щас не знаю как, но щас русский отображается и без setlocale(LC_ALL, "Russian"); МАГИЯ.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 19:38
Привет! Вот еще темы с ответами:

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

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

Вывести только те слова сообщения, которые начинаются и оканчиваются на заданную букву - C++
В общем задача почти решена, но не понятно немного. Условие: Вывести только те слова сообщения, которые начинаются и ...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.05.2014, 19:38
Ответ Создать тему
Опции темы

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