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

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

Войти
Регистрация
Восстановить пароль
 
 
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
#1

Преобразование числа - C++

14.11.2010, 19:24. Просмотров 886. Ответов 17
Метки нет (Все метки)

Дано натуральное число. От этого числа отнимем суму его цыфр. От нового числа опять отнимем суму его цыфр. Так будем делать до тех пор, пока новое число больше нуля. Сколько раз будем выполнять даную операцию?
О_о
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2010, 19:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование числа (C++):

Преобразование в числа - C++
Добрый день! Подскажите пожалуйста, как можно сделать.. В функцию передается строка - fun("1/4") {...} Как можно получить отдельно...

Итерационное преобразование числа - C++
На вход программе подается целое положительное число n. Если оно четное, делим на 2, если нечетное, то умножаем на 3 и прибавляем 1. С...

Преобразование числа в строку!!!! - C++
Как в VS преобразовать число в строку!!! Через itoa что-то не выходит!!!

Преобразование символов в числа - C++
Дан текст. Определить, является ли он правильной десятичной записью целого числа.

Преобразование числа в строку - C++
Всем привет. Имеется следующая функция void LiquidCrystal_I2C_PrintString(char *str){ uint8_t i=0; while(str) { ...

Преобразование числа в строку - C++
Всем доброго времени суток, помогите пожалуйста получить из числа 12345679 (int), строку string = {1, 2, 3, 4, 5, 6, 7, 8, 9}. т.е....

17
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.11.2010, 19:36 #2
Эмм.... Вы же сами написали. Пока новое число больше нуля. В цикле. Отняли, проверили, отняли, проверили...
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 17:31  [ТС] #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
Отняли, проверили, отняли, проверили...
да, это понятно, но как найти суму цыфр числа типа лонг?
1
Tambel
32 / 32 / 2
Регистрация: 10.10.2010
Сообщений: 89
15.11.2010, 17:37 #4
Цитата Сообщение от Mayonez Посмотреть сообщение
да, это понятно, но как найти суму цыфр числа типа лонг?
мне кажется так же, ибо long по моему это тот же самый int (тоесть целочисленный) разница только в размере самой переменной если не ошибаюсь. Проблем мне кажется будет больше с double, где не целые величины.
2
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 17:46  [ТС] #5
Tambel, вы меня не совсем поняли. Вот пример: есть число 142165235. Мне нужно найти сумму его цыфр (тоесть 29). Как это сделать?
C++
1
2
int chislo = 142165235;
int sum = 29 //-----> ????
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
15.11.2010, 17:48 #6
Mayonez, О елки палки.
C++
1
2
3
4
5
6
while(a)
{
   sum+=a%10;
   a/=10;
}
std::cout<<sum<<'\n';
1
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 17:50  [ТС] #7
а если число типа дабл?

Добавлено через 44 секунды
Цитата Сообщение от ForEveR Посмотреть сообщение
О елки палки
...
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
15.11.2010, 17:51 #8
Mayonez, Тут другое дело.
Какая будет сумма цифр у числа 1234.1234?
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 17:55  [ТС] #9
Добавлено через 3 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
Какая будет сумма цифр у числа 1234.1234?
я понял, у меня число целое (просто 2.000.000.000 не помещается в инт) и поетому в дабле
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
15.11.2010, 17:57 #10
Mayonez, long int в помощь. unsigned long int. unsigned long long. Но не double. В doubl-е все не так просто, ибо с double нельзя применять операцию нахождения остатка...

Да и 2 миллиарда должны умещаться в инт. Ну на крайний случай в unsigned int... Хотя все зависит от компа...
0
ISergey
Maniac
Эксперт С++
1390 / 901 / 55
Регистрация: 02.01.2009
Сообщений: 2,693
Записей в блоге: 1
15.11.2010, 17:58 #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
#include <iostream>
 
int main(){
 
    int new_n = 300;
    int count = 0;
 
    std::cout << "Start number: " << new_n << '\n';
    while(new_n)
    {
        int buff = 0, n = new_n;
        while(n)    
        {
            buff += n % 10;
            n /= 10;        
        }
 
        new_n -= buff;
        ++count;
 
        std::cout << "  New_n: " << new_n << "\tCount: " << count << '\n';
    }
 
    std::cout << "Result Count: " << count << '\n';
 
    return 0;
}
http://codepad.org/gpuwn6fG
1
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
15.11.2010, 18:03 #12
А можно вообще вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main()
{
    int sum = 0;
 
    std::cout << "Enter number: ";
 
    while (true)
    {
        char c = std::cin.get();
 
        if (c >= '0' && c <= '9')
            sum += c - '0';
        else
            break;
    }
 
    std::cout << "Sum = " << sum;
 
    std::cin.get();
    return 0;
}
1
Tambel
32 / 32 / 2
Регистрация: 10.10.2010
Сообщений: 89
15.11.2010, 18:03 #13
Цитата Сообщение от Mayonez Посмотреть сообщение
а если число типа дабл?
нужно сначала например из числа 123.456 сделать 123456, а потом уже поменяв его на int или long считать вышесказанным методом. Если из 123.456 сразу сделать int по мы потеряем все что стоит после точки тем самым получим неправильный результат.
1
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 18:12  [ТС] #14
Цитата Сообщение от silent_1991 Посмотреть сообщение
А можно вообще вот так:
так мы находим сумму только один раз. а как это переделать до условия задачи?
0
ISergey
Maniac
Эксперт С++
1390 / 901 / 55
Регистрация: 02.01.2009
Сообщений: 2,693
Записей в блоге: 1
15.11.2010, 18:13 #15
silent_1991, Задача не решена. ты только суму считаешь..
0
15.11.2010, 18:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2010, 18:13
Привет! Вот еще темы с ответами:

Преобразование слов в числа - C++
Как сделать программу, когда вводишь слово &quot;два&quot;, программа должна преобразовать его в 2 и т.д.

Преобразование числа в строку - C++
Подскажите как преобразовать число в строку, пожалуйста!

Быстрое преобразование числа - C++
Здравствуйте уважаемые программисты! Подскажите пожалуйста как быстрее всего получить из положительного числа единицу, а из отрицательного...

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


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

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

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