Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2013, 14:34   #1
Ravend
Новичок
Джуниор
 
Регистрация: 18.05.2013
Сообщений: 1
По умолчанию решить простую задачку

Напишите программу, которая вычисляет сумму цифр целого числа. Например, суммой цифр целого числа 2155 будет 2+1+5+5, или 13. Программа должна позволять пользователю вводить любое целое число.
Ravend вне форума Ответить с цитированием
Старый 18.05.2013, 14:36   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Напишите программу
Проспонсируйте написание программы.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 18.05.2013 в 14:45.
ROD вне форума Ответить с цитированием
Старый 18.05.2013, 15:55   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

Цитата:
Сообщение от Ravend Посмотреть сообщение
Напишите программу, которая вычисляет сумму цифр целого числа. Например, суммой цифр целого числа 2155 будет 2+1+5+5, или 13. Программа должна позволять пользователю вводить любое целое число.
для хорошего человека не жалко

Код:
#include <iostream>

template <size_t N>
struct SumOfDigits {
	enum { value = SumOfDigits<N / 10>::value + N % 10 };
};

template <>
struct SumOfDigits<0> {
	enum { value = 0 };
};

int main()
{
	std::cout << SumOfDigits<2155>::value << std::endl;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 18.05.2013, 16:18   #4
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

pproger, спорим, что препод ему не поверит?
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 18.05.2013, 16:46   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

на то и расчет
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 18.05.2013, 17:34   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
pproger, спорим, что препод ему не поверит?
а че тут верить, оно не соответствует заданию )
Цитата:
Программа должна позволять пользователю вводить любое целое число.
rrrFer вне форума Ответить с цитированием
Старый 18.05.2013, 17:39   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

2rrrFer
не определено, что значит "пользователь" и что значит "ввести"
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 18.05.2013, 17:47   #8
frommars
Форумчанин
 
Регистрация: 02.07.2011
Сообщений: 144
По умолчанию

Ну а самому подумать решение задачи? Тут нужно использовать простое деление...
Цитата:
спорим, что препод ему не поверит?
+1
frommars вне форума Ответить с цитированием
Старый 18.05.2013, 18:06   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

2ROD
хотя да, сложновато думаю ему будет

2Ravend
Код:
#include <iostream>
#include <algorithm>
#include <numeric>

using namespace std;

int main()
{
	string str;
	cin >> str;

	if (find_if(str.begin(), str.end(), not1(ptr_fun(::isdigit))) != str.end()) {
		cerr << "NAN" << endl;
		return -1;
	}

	cout << accumulate(str.begin(), str.end(), 0) - str.length() * '0' << endl;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 18.05.2013, 23:14   #10
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Код:
#include <iostream>
#include <cstring>


bool StrCorrectChecking(const char *pStr)
{
	int len = strlen( pStr );
	bool IsCorrect = true;
	for (int i = 0; i < len; i++)
	{
		if ( pStr [ i ] < '0' || pStr[ i ] > '9')
			return IsCorrect = false;
	}
	return true;
	
}
int main()
{
	char pStr[256], ch;
	gets(pStr);
	if ( StrCorrectChecking(pStr) == true )
	{
        the string consits of digits ony
	int pIntArr[256];
	int len = strlen(pStr);
	int sum = 0;
	for (int i = 0; i < len; i++)
	{
		ch = pStr[ i ];
		pIntArr[ i ] = atoi(&ch);
		std::cout << "Arr: " << pIntArr[ i ] << std::endl;
	}
	for (int i = 0; i < len; i++)
		sum+=pIntArr[ i ];

	std::cout << "Sum: " << sum << std::endl;
	}
	else std::cout << "Wrong string" << std::endl;
	system("pause");
}
Правда здесь смесь и C и C++. Можете просто заменить cout на printf();

Последний раз редактировалось Igor95; 18.05.2013 в 23:33.
Igor95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу решить простую задачу Artem_host Общие вопросы Delphi 2 04.02.2012 23:34
Помогите решить простую задачу asercbr123 Microsoft Office Excel 4 11.12.2008 13:25
Помогите решить простую задачу Teh Общие вопросы Delphi 4 24.04.2008 07:37
Помогите решить простую задачу по C++ steal13 Общие вопросы C/C++ 6 03.01.2008 09:40