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

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

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

Программа, преобразующая символы(цифры) в число - C++

04.12.2016, 17:44. Просмотров 198. Ответов 5
Метки нет (Все метки)

Добрый день!
Изучаю книгу Страуструпа для начинающих.
Не получается написать нормальный код для следующий задачи (Глава 6, Задача 9):
"Напишите программу, считывающую цифры и составляющую из них целые числа. Например, число 123 считывается как последовательность символов1,2 и 3. Программа должна вывести на экран сообщение: “123 — это 1 сотня, 2 десятки и 3 единицы”. Число должно быть выведено как значение типа int. Обработайте числа, состоящие из одной цифры, двух, трех и четырех цифр. Подсказка: для того чтобы получить число5 из символа'5', вычтите из него символ '0', иначе говоря,'5'–'0'==5."
Вот мой код:

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
#include <std_lib_facilities.h>
 
int main()
{
    setlocale(LC_ALL, "rus");
    char ch;
    int number = 0;
    vector<char> num(4, 'X');
    int i = 0;
 
    while (i < 4)
    {
        cin >> ch;
        if (ch < '0' || ch > '9') break;
        number *= 10;
        num[i] = ch;
        ch -= '0';
        number += ch;
        ++i;
    }
 
    cout << number << " - это ";
    switch (i)
    {
    case 4: cout << num[0] << " тысяч(а), " << num[1] << " сотен(и), "
        << num[2] << " десяток и " << num[3] << " единиц(а)" << endl;
        break;
    case 3: cout << num[0] << " сотен, " << num[1] << " десяток и "
        << num[2] << " единиц" << endl;
        break;
    case 2: cout << num[0] << " десяток и " << num[1] << " единиц" << endl;
        break;
    case 1: cout << num[0] << " единиц(а)" << endl;
        break;
    default:
        cerr << "error"; break;
    }
    _getch();
    return 0;
 
}
Ничего лучше в голову не приходит, возможно есть более оптимальное решение задачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2016, 17:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Программа, преобразующая символы(цифры) в число (C++):

Программа, которая вводит число из пяти цифр, разделяет число на отдельные цифры - C++
Напишите программу, которая вводит число из пяти цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга с тремя...

Функция преобразующая строку двоичных цифр в целое десятичное число - C++
Написать функцию преобразования строки двоичных цифр в целое десятичное число.В основной прогамме ввести массив из 5 элементов и для...

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

не могу понять задачку. Даны натуральное число n и символы s1, s2,., sn. Получить символы, принадлежащие последовательности s1, s2,., sn, которые - C++
Даны натуральное число n и символы s1, s2,..., sn. Получить символы, принадлежащие последовательности s1, s2,..., sn, которые входят в нее...

Получить число М, которое образуется из числа N путем замены последней цифры на значение наибольшей цифры - C++
Помогите составить программу, пожалуйста! Вот условие: Дано натуральное число N. Получить новое число М, которое образуется из числа...

В десятичной записи числа 42*4* пропущены 2 цифры. Определите эти цифры, если известно, что число кратно 72. - C++
Помогите,пожалуйста! С++

5
Fixer_84
819 / 629 / 300
Регистрация: 30.04.2016
Сообщений: 1,979
04.12.2016, 17:56 #2
Fam69, цифры числа можно получить так (правда порядок будет справа налево):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
int main()
{
    int N;
    cout << "Введите число:" << endl;
    cout << "N = ";
    cin >> N;
    cout << "Цифры числа:" << endl;
    while (N > 0)
    {
        cout << N % 10 << endl;
        N /= 10;
    }
    system("pause");
    return 0;
}
P.S. Если нужен порядок слева направо можно использовать рекурсию...
0
Fam69
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 3
04.12.2016, 18:00  [ТС] #3
Вы не совсем поняли задание.
Нужно не число в цифры перевести. А наоборот, получить набор цифр в типе char и из них составить число.
Вводим '1', '2', '3'. Преобразуем в число типа int 123.
Так же у меня проблема с выводом результатов. Т.е. очень уж много кода для вывода результатов.
0
amaralikyr
61 / 61 / 23
Регистрация: 18.09.2015
Сообщений: 207
Завершенные тесты: 1
04.12.2016, 18:04 #4
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
#include <iostream>
#include <string>
#include <deque>
using namespace std;
 
int main()
{
    string tmp;
    
    deque <int> digits;
 
    do
    {
        int x;
        cin >> x;
        if (x < 0) break;
        digits.push_back(x);
    } while (true);
 
    for (int i = 0; i < digits.size(); i++)
    {
        char dig[2];
        _itoa_s(digits[i], dig, 10);
        tmp += dig;
    }
 
    int a = stoi(tmp);
 
    cout << a << endl;
 
}
0
Harold
31 / 31 / 13
Регистрация: 11.04.2015
Сообщений: 126
Завершенные тесты: 2
04.12.2016, 18:37 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vector>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int x;
    vector <int> v;
    int S = 0;
    while (cin >> x)
        v.push_back(x);
    for (int i = 0; i < v.size(); i++)
    {
        S += (v[i] * pow(10, (v.size() - i)));
    }
    S = S / 10;
    cout << S << endl;
}
2
Fam69
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 3
04.12.2016, 18:53  [ТС] #6
Harold, спасибо. Вот примерно это и нужно было.
0
04.12.2016, 18:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2016, 18:53
Привет! Вот еще темы с ответами:

Образовать новое число, путём замены последней цифры на значение наименьшей цифры в записи исходного числа - C++
Помогите доделать задачу, минимальную цифру нашёл, последнюю цифру нашёл, только осталось присвоить значение минимальной цифры последней,...

Ввести с клавиатуры трехзначное число и найти произведение первой и второй цифры. А также определить четность третей цифры - C++
Ввести с клавиатуры трехзначное число и найти произведение первой и второй цифры. А также определить четность третей цефры. как мне это...

Ввести целое число. Определить, симметрично ли оно, т.е. одинаковы ли цифры слева и справа (12321). Записать 3 последние цифры в одномерный массив. - C++
Ввести целое число. Определить, симметрично ли оно, т.е. одинаковы ли цифры слева и справа (12321). Записать 3 последние цифры в одномерный...

Ввести число n, разбить число на цифры, и найти сумму этих цифр - C++
Здравствуйте.Очень нужно сделать задание, кто может? Заранее спасибо!!! Ввести число n, разбить число на цифры, и найти сумму этих...


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

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

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