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

нужен тип целого числа для числа 19!= 121 645 100 408 832 000 - C++

Восстановить пароль Регистрация
 
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
18.01.2011, 20:51     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #1
Нужно посчитать сумму цифр целого положительного числа.

C++
1
2
3
4
5
6
7
8
9
10
double summacifr(double chislo)
{
    double summa=0;
    while(chislo)
    {
        summa+=chislo%10;
        chislo/=10;
    }
    return summa;
}
Дело в том, что для операции остатка нужно целое число, а такое число в int и unsigned long не вмещается.

Хотя программа работает с таким числом. Почему? Разве в unsigned long вмещается не больше 4294967295?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2011, 20:51     нужен тип целого числа для числа 19!= 121 645 100 408 832 000
Посмотрите здесь:

C++ Найти порядок n для целого числа k
Для заданного целого числа n вычислить значение суммы C++
C++ Для заданного целого числа n вычислить значение суммы
C++ Составьте программу, которая для целого числа k (от 1 до 99)
C++ Используя арифметические операции, определить и вывести сумму цифр трехзначного целого числа k (100<=k<=255)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
18.01.2011, 20:58     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #2
помещай его в массив char, потом при суммировании преобразуешь каждый символ в число и суммируешь

char chislo[]="121645100408832000";
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
18.01.2011, 21:05  [ТС]     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #3
офигеть, а более простого способа нет?)))
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
18.01.2011, 21:05     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #4
функция конвертер:
C++
1
2
3
4
int CharToInt(char C)
{
   if (C>=48&&C<=57) return C-48;
}
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
18.01.2011, 21:08     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #5
deadlock, Или так
C++
1
2
3
4
int char_to_int(char ch)
{
    return ch - '0';
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.01.2011, 21:09     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #6
Цитата Сообщение от deadlock Посмотреть сообщение
помещай его в массив char
да оно и в unsigned long long (он же uint64_t) поместится...
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
18.01.2011, 21:10     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #7
Цитата Сообщение от asics Посмотреть сообщение
deadlock, Или так
C++
1
2
3
4
int char_to_int(char ch)
{
    return ch - '0';
}
а проверить, что это цифра не мешает
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
18.01.2011, 21:11  [ТС]     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #8
А такой тип unsigned long long есть?
Проверил, все таки с int не работает правильно.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
18.01.2011, 21:13     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #9
Цитата Сообщение от deadlock Посмотреть сообщение
а проверить, что это цифра не мешает
Так програма по дефолту подразумивает роботу з числами, так-что проверка никчему.
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
18.01.2011, 21:14     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #10
Цитата Сообщение от Chelioss Посмотреть сообщение
А такой тип unsigned long long есть?
Проверил, все таки с int не работает правильно.
размер int 4 байта, а unsigned long long 8 байт, то есть можно адресовать число максимум 18446744073709551615
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
18.01.2011, 21:15  [ТС]     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #11
Такой тип есть, спасибо.
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
18.01.2011, 21:15     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #12
Цитата Сообщение от asics Посмотреть сообщение
Так програма по дефолту подразумивает роботу з числами, так-что проверка никчему.
думается, что число будут с клавиатуры вводить, а не в тексте программы, поэтому нужно
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
18.01.2011, 21:16  [ТС]     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #13
В ВУЗе ваши способы не прокатят, но все равно спасибо)
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
18.01.2011, 21:17     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #14
deadlock, В таком случае, проверка нужна не в функции-конвертере, а сразу после ввода числа.Потому что, какой резон работать не понятно с чем.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
18.01.2011, 21:37     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #15
Chelioss, посмотрите найти факториал числа...
Здесь вы можете подсчитать факториалы больших чисел, а также написать небольшой метод для решения вашей задачи. Т.к. в решении значение факториала хранится в виде массива, значение каждого элемента которого не превышает 999 - вы можете обойтись обычным интом
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.01.2011, 21:39     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #16
Цитата Сообщение от Chelioss Посмотреть сообщение
А такой тип unsigned long long есть?
нет, я его от балды придумал!
нужен тип целого числа для числа 19!= 121 645 100 408 832 000
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
18.01.2011, 21:47  [ТС]     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #17
А какая разница между unsigned long long и unsigned long long int?
M128K145
Для первого курса и 4 лабораторной такое не сойдет)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2011, 23:32     нужен тип целого числа для числа 19!= 121 645 100 408 832 000
Еще ссылки по теме:

Генерировать и вывести на экран массив с целого числа n случайных чисел от -100 до 100 C++
Фильтр для ввода целого числа в данном диапазоне C++
Определить цифры целого числа (тип числа - целое без знака) C++

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.01.2011, 23:32     нужен тип целого числа для числа 19!= 121 645 100 408 832 000 #18
Chelioss, Никакой
Yandex
Объявления
18.01.2011, 23:32     нужен тип целого числа для числа 19!= 121 645 100 408 832 000
Ответ Создать тему
Опции темы

Текущее время: 03:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru