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

Сумма цифр введённого числа - C++

Восстановить пароль Регистрация
 
Quiet Snow
 Аватар для Quiet Snow
4340 / 1202 / 198
Регистрация: 25.04.2010
Сообщений: 2,846
04.04.2011, 15:50     Сумма цифр введённого числа #1
Создал сабж т.к. решение написано по теме, но не по разделу.
По воле администрации сохраняю все исходники в соотв. разделах

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
42
43
44
45
46
47
48
49
50
51
52
53
54
// digits_sum.cpp: главный файл проекта.
 
#include "stdafx.h"
 
using namespace System;
 
int main(array<System::String ^> ^args)
{
//Написано на .NET но должно быть кристально понятно любому. 
String ^ input;
 
int how_many_digits = 1;
int summa =0;
int check_if_zero = 0;
 
bool stopcount = false;
float ostatok =0;
Console::Write(L"Введите число: ");
input = Console::ReadLine();
int number = Convert::ToInt32(input); //пляска с бубном, ибо не нашел как считать целое с консоли. Сорри, не до этого было 
if(number>10){
while(stopcount==false){
how_many_digits++;
check_if_zero = number/Math::Pow(10,how_many_digits); //Math::Pow(10,how_many_digits) - возведение 10 в степень how_many_digits
 
 
//ВНИМАНИЕ: поскольку check_if_zero имеет тип int, то произойдет ЦЕЛОЧИСЛЕННОЕ деление. Если разделить 10 на 3 в результате будет 3(ТРИ).
if (check_if_zero<=0){ //проверяем, если число, деленное на десять возведенное в степень how_many_digits меньше единицы(то есть, подвинулся ли разряд дальше нуля до запятой)
stopcount = true;
//how_many_digits--; //это же неверно? Получается мы посчитали на разряд больше? Поправим разряд 
} 
}//посчитали цифирь
 
int current_digit = 0;
stopcount = false;
while(!stopcount){
 
if (how_many_digits>0){ // все цифры прошли? 
ostatok = number % Convert::ToInt32(Math::Pow(10,how_many_digits-1)); //Внимание! % в языке c++ - это "остаток от деления". Тип - float
current_digit = (number - (ostatok))/Math::Pow(10,how_many_digits-1); //Вычисляем текущую цифру: из числа вычитаем остаток, делим на 10 * количество разрядов-1
summa += current_digit; //сумма
number = number - (current_digit * Math::Pow(10,how_many_digits-1)); //уменьшаем число, убирая больший десятичный разряд.
} else {
stopcount = true;
 
}
how_many_digits--;
}
 
}
Console::WriteLine("\n{0}",how_many_digits);
    
-   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2011, 15:50     Сумма цифр введённого числа
Посмотрите здесь:

Найдите такие натуральные числа, чтобы сумма их цифр, а также сумма цифр следующего за ним числа делилась на 7 C++
C++ Найти простые числа, чтобы сумма их цифр, а также сумма цифр следующего за ним числа, делилась на 7
Найти сумму квадратов цифр введённого числа C++
Определить для числа: является ли сумма его цифр двузначным числом; больше ли сумма его цифр числа "а" C++
C++ Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27
Рекурсия: количество цифр в числе, сумма цифр и реверс числа C++
C++ Вывод цифр введённого числа в прямом порядке
C++ Найти сумму цифр введённого числа

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
04.04.2011, 18:08     Сумма цифр введённого числа #2
Все будет проще, если вы не будете спещить преобразовывать строку в число.
Кво цифр - это длина строки.
Берете цикл с конца строки до ее начала и каждый последующий символ переводите в число и суммируете.

Например, строка input = 12345.
Длина - 5.
Цикл, счетчик от 4 до 0: преобразуем 5 в число, преобразуем 4 в число ...:
sum = 5+4+3+2+1 = 15
Yandex
Объявления
04.04.2011, 18:08     Сумма цифр введённого числа
Ответ Создать тему
Опции темы

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