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

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

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

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

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

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

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

Преобразование символов в числа - C++
Дан текст, имеющий вид: dl + d2 + ... + dn, где di — цифры. Вычислить записанную в тексте сумму. Долго ломаю голову но выходит фигня....

Преобразование числа в символ. - C++
Здравствуйте, пишу программу перевода числа из Р-ичной системы счисления в Q-ичную. Столкнулся с такой вот проблемкой... При Q<10 все...

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.11.2010, 19:36     Преобразование числа #2
Эмм.... Вы же сами написали. Пока новое число больше нуля. В цикле. Отняли, проверили, отняли, проверили...
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 17:31  [ТС]     Преобразование числа #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
Отняли, проверили, отняли, проверили...
да, это понятно, но как найти суму цыфр числа типа лонг?
Tambel
32 / 32 / 2
Регистрация: 10.10.2010
Сообщений: 89
15.11.2010, 17:37     Преобразование числа #4
Цитата Сообщение от Mayonez Посмотреть сообщение
да, это понятно, но как найти суму цыфр числа типа лонг?
мне кажется так же, ибо long по моему это тот же самый int (тоесть целочисленный) разница только в размере самой переменной если не ошибаюсь. Проблем мне кажется будет больше с double, где не целые величины.
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 //-----> ????
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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';
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 17:50  [ТС]     Преобразование числа #7
а если число типа дабл?

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

Да и 2 миллиарда должны умещаться в инт. Ну на крайний случай в unsigned int... Хотя все зависит от компа...
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 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
silent_1991
Эксперт С++
4960 / 3036 / 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;
}
Tambel
32 / 32 / 2
Регистрация: 10.10.2010
Сообщений: 89
15.11.2010, 18:03     Преобразование числа #13
Цитата Сообщение от Mayonez Посмотреть сообщение
а если число типа дабл?
нужно сначала например из числа 123.456 сделать 123456, а потом уже поменяв его на int или long считать вышесказанным методом. Если из 123.456 сразу сделать int по мы потеряем все что стоит после точки тем самым получим неправильный результат.
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 18:12  [ТС]     Преобразование числа #14
Цитата Сообщение от silent_1991 Посмотреть сообщение
А можно вообще вот так:
так мы находим сумму только один раз. а как это переделать до условия задачи?
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
15.11.2010, 18:13     Преобразование числа #15
silent_1991, Задача не решена. ты только суму считаешь..
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
15.11.2010, 18:22     Преобразование числа #16
ISergey, я в курсе. Тут пошли вопросы, как посчитать сумму длинного числа. Я показал.

Добавлено через 1 минуту
А, ну хотя да, под условие не подделать... Я просто условие уже забыл, перечитывать не стал, а первое, что прочитал, это "как посчитать сумму"...

Добавлено через 22 секунды
Тогда да, надо через остатки от деления и прочее делать.
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 18:48  [ТС]     Преобразование числа #17
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
#include <iostream>
using namespace std;
 
int sum(int a)
{
   int sum = 0;
   while(a)
   {
   sum += a%10;
   a /= 10;
   }
   return sum;
}
 
int main()
{
   int a; 
   cin >> a;
   int k = 0;
   while (a)
   {
      a -= sum(a);
      k++;
   }
   cout << k << endl;
   system("pause");
   return 0;
}
ну вот

Добавлено через 26 секунд
вроде так

Добавлено через 8 минут
ограничение по времени - 10 секунд
не укладываюсь
что посоветуете?

Добавлено через 5 минут
а пример ISergey укладывается. Это из-за вызова функции у меня?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2010, 21:42     Преобразование числа
Еще ссылки по теме:

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

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

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

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

Преобразование числа в строку - C++
Как преобразовать строку char *s, в которой записано число(возможно со знаком минус), в формат типа long 1) в строке десятичное число ...


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

Или воспользуйтесь поиском по форуму:
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
15.11.2010, 21:42     Преобразование числа #18
Цитата Сообщение от Mayonez Посмотреть сообщение
Это из-за вызова функции у меня?
Да. Выключи режим отладки и сделай функцию inline, тогда будет быстрее.

Ну или если компилятор не захочет делать ее встраиваемой, то можно указать конвенцию вызова __fastcall , тогда параметр будет в функцию передаваться через регистр, а не стек..
Yandex
Объявления
15.11.2010, 21:42     Преобразование числа
Ответ Создать тему
Опции темы

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