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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 151
Завершенные тесты: 1
#1

Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки - C++

23.03.2013, 16:34. Просмотров 2581. Ответов 12
Метки нет (Все метки)

Ввести ленту произвольной длины, которую будем трактовать как текст, в котором слова отделены одним или несколькими пробелами (длина слов, в целом, произвольная). Учитывая, что в тексте встречаются слова, содержащие как буквы, так и цифры, а также просто числа, содержащие цифры, вывести на экран монитора все числа.
Каким образом это можно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 16:34     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки
Посмотрите здесь:
C++ Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа)
Ввести строку вывести каждое слово из этой строки с кол-ом повторений этого слова учитывая все знаки препинания... C++
C++ Ввести строку. Вывести строку так, чтобы за каждым словом следовало количество пробелов, равное длине слова.
C++ Ввести числа, пока не введен 0 и вывести все введеные числа
C++ Как в данной программе сделать так чтобы все генерируемые числа стояли по возрастанию или по убыванию
C++ Ввести строку и слово, удалить все вхождения слова и вывести строку
Ввести строку. Выдать все слова, которые имеют длину больше, чем длина последнего слова строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
23.03.2013, 16:44     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #2
надо копать в сторону функции isdigit
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
23.03.2013, 17:33     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #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
#include <algorithm>
#include <iterator>
#include <iostream>
#include <iomanip>
#include <cstring>
 
int main ()
{
    std::string string;
    std::cout << "Input the string: " << std::endl;
    std::getline(std::cin, string);
    string.insert(string.end(), ' ');
 
    std::string currWord;
    std::cout << "All numbers in the string: " << std::endl;
    for (auto currChar: string) {
        if (currChar != ' ') {
            currWord.push_back(currChar);
        } else {
            std::cout << std::setw(5);
            std::copy_if(currWord.begin(), currWord.end(), std::ostream_iterator <char> (std::cout), [] (char i) -> bool {
                return isdigit(i);
            });
            currWord.clear();
        }
    }
 
    return 0;
}
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
23.03.2013, 17:41     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <vector>
#include <string>
#include <boost/algorithm/string.hpp>
 
int main() 
{
    using namespace boost::algorithm;
 
    std::cout<<"Enter string: ";
    std::string line;
    std::getline(std::cin, line, '\n');
    std::vector<std::string> numbers;
    boost::split(numbers, line, is_alpha() || is_space(), boost::token_compress_on);
    for (auto& x : numbers) std::cout<<x<<"\n";
    
    return 0;
}
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 151
Завершенные тесты: 1
23.03.2013, 17:50  [ТС]     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #5
спасибо. только почему-то ни первая ни вторая програмки не хотят работать, куча каких-то ошибок.
и желательно чтоб программа была без использования vector/algorithm/iterator/boost и т.д., то есть с использование простых функций и циклов, т.к. мы такого как описано выше еще не учили..
может как-то попробовать через isdigit, как говорил Кудаив
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
23.03.2013, 18:04     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #6
gorus95, http://liveworkspace.org/code/1LdAAT

Добавлено через 56 секунд
У вас должен быть установлен Boost
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 151
Завершенные тесты: 1
23.03.2013, 19:36  [ТС]     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #7
понятно. а можно написать как-то так чтоб поверили что это делал студент-первокурсник?
просто мы такого еще не учили, и вряд ли даже если оно работает я смогу им воспользоваться...
как можно сделать через стандартные простые функции и циклы?
например проверять в цикле если символ - цифра то выводим его, если пробел, кома, точка или \t ставим пробел и дальше ищем цифры... логично вроде, только не могу на практике оформить

Добавлено через 30 минут
сделал вот такую сырую простенькую программу, вроде работает
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstring>
using namespace std;
int main(void)
{
    setlocale (LC_ALL, "");
    char text[300];
    gets_s(text);
    for (unsigned int i = 0; i < (unsigned int)strlen(text); i++)
    {
        if (isdigit(text[i]))
        {
            cout << text[i];
 
            if (!isdigit(text[i+1]))
            {
            cout << " ";
            }
        }
        
    }
    cout << endl;
    system("pause");
}

но есть проблема..если вводить не английские символы а кириллицу вылетает ошибка, в чем проблема?
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
23.03.2013, 20:01     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <iomanip>
#include <cstring>
 
int main ()
{
    char string[256];
    gets(string);
 
    char *currWord = strtok(string, " ");
    while (currWord) {
        std::cout << std::setw(5);
        for (unsigned i = 0; i < strlen(currWord); i++)
            if (isdigit(currWord[i]))
                std::cout << currWord[i];
        currWord = strtok(nullptr, " ");
    }
 
    return 0;
}
Добавлено через 33 секунды
Цитата Сообщение от gorus95 Посмотреть сообщение
i < (unsigned int)strlen(text)
Цитата Сообщение от gorus95 Посмотреть сообщение
text[i+1]
за границу выходишь
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 151
Завершенные тесты: 1
23.03.2013, 20:07  [ТС]     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #9
сделал вот так, все работает на ура
как раз надо было чем попроще
только еще один вопрос, можно ли еще сделать так чтоб эти числа не просто выводились как последовательность цифр, а чтоб можно было эти числа например записать в переменные? т.е. числа которые получились в выходном потоке записать именно как числа а не набор цифр
Кликните здесь для просмотра всего текста
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
#include <iostream>
using namespace std;
bool digit (char text)
{
     if (text >= '0' && text <= '9')
     {
     return true;
     } else 
     return false;
}
int main(void)
{
    setlocale (LC_ALL, "");
    int i = 0;
    char text[1000];
    gets(text);
    do
    {
        if (digit(text[i]))
        {
            cout << text[i];
 
            if (!digit(text[i+1]))
            {
            cout << " ";
            }
        }
        i++;
    } while (text[i]); 
    cout << endl;
    system("pause");
}


Добавлено через 2 минуты
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
за границу выходишь
там все равно массив больше того объема текста который мы вводим, так что это не страшно, ведь массив символов дальше есть просто он пустой
programmer_11
94 / 69 / 5
Регистрация: 08.10.2011
Сообщений: 130
23.03.2013, 20:10     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #10
Цитата Сообщение от gorus95 Посмотреть сообщение
сделал вот так, все работает на ура
Твоя программа работает неправильно. Если вводишь слова, в которых есть и буквы, и цифры, то программа выводит эти цифры.
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 151
Завершенные тесты: 1
23.03.2013, 21:20  [ТС]     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #11
как тогда сделать чтоб она выводила только числа?
Shef4u
15 / 15 / 0
Регистрация: 31.10.2011
Сообщений: 116
23.03.2013, 21:39     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #12
как-то так, и ничего сложного
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma hdrstop
#include<iostream.h>
#include<windows.h>
#include<string.h>
#pragma argsused
int main(int argc, char* argv[])
{
  string s;
  cout<<"Vvedite stroku: "<<endl;
  getline(cin,s);
  for(int i=0; i<s.length();i++)
  {
    if(s[i]>='0' && s[i]<='9')
    {
    cout<<s[i];
    }
  }
  cout<<endl;
  system("pause");
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 00:39     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки
Еще ссылки по теме:
Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив C++
Ввести с клавиатуры строку. Выдать на экран все слова из этой строки ... C++
подскажите: как вывести на экран числа от 0 до 20.... и еще одна: вывести все четные числа от 0 до 20... C++
C++ Вывести строку, содержащую эти же слова, но расположенные в обратном порядке. Записать полученную строку в другой файл
Ввести набор номеров и вывести все простые числа C++

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

Или воспользуйтесь поиском по форуму:
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 151
Завершенные тесты: 1
24.03.2013, 00:39  [ТС]     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки #13
Shef4u, читайте выше. я уже сделал программу которая выводит всю числовую информацию. но мне нужно чтоб программа выводила только числа.
например мы ввели
vjks kj343kljfkls 567lk 9043 kdjkssdsj
она должна вывести
только
9043
а не
343 567 9043

Добавлено через 2 часа 44 минуты
задача решена. спасибо всем за помощь.
Yandex
Объявления
24.03.2013, 00:39     Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки
Ответ Создать тему
Опции темы

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