#include <iostream>
#include <stdlib.h>
#include <string>
#include <sstream>
using namespace std;
bool is_number(const string& s);
int int_pow(int base, int exp);
int main()
{
cout << "Vuvedete chislo: ";
string szInput;
int number;
while(true)
{
getline(cin, szInput);
if(!is_number(szInput))
{
cout << "Vuvedenoto ne beshe chislo!\nOpitaite pak: ";
continue;
}
if(szInput.length() > 10)
{
cout << "Maximalnata stoinost za integer v programnata sreda e 1 073 676 289,\nzatova davai po-kratko, pod 10 cifri: ";
continue;
}
istringstream(szInput) >> number;
number = abs(number);
//Sushtestvenata algoritmichna chast
int power = 0;
int single_digit = 0;
int sum = 0;
string delimiter;
cout << "Sumata e ravna na:\nS = ";
do{
single_digit = (int)(number % int_pow(10, power+1))/(int_pow(10, power));
sum += single_digit;
delimiter = (number > int_pow(10, power+1)) ? " + " : " = "; //opcionalno - za krasota :D
cout << single_digit << delimiter;
power++;
}
while(number > int_pow(10, power));
cout << sum << endl;
//Krai, drugoto e za priglednost :D
break;
}
cout << endl << "Dovijdane! :D" << endl;
return 0;
}
inline bool is_number(const std::string & s)
{
if(s.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != '+'))) return false ;
char * p;
strtol(s.c_str(), &p, 10) ;
return (*p == 0) ;
}
int int_pow(int base, int exp)
{
int result = 1;
while (exp)
{
if (exp & 1)
result *= base;
exp /= 2;
base *= base;
}
return result;
}
#include <iostream>
#include <stdlib.h>
using namespace std;
bool is_number(const string& s);
int int_pow(int base, int exp);
int main()
{
cout << "Vuvedete chislo: ";
string szInput;
while(true)
{
getline(cin, szInput);
if(!is_number(szInput))
{
cout << "Vuvedenoto ne beshe chislo!\nOpitaite pak: ";
continue;
}
cout << "Sumata e ravna na:\nS = ";
int single_digit, sum = 0;
string delimiter;
char c;
//for(char& c : szInput)
for(string::size_type i = 0; i < szInput.size(); ++i)
{
c = szInput[i];
single_digit = c - '0';
sum += single_digit;
delimiter = (i != szInput.size() - 1) ? " + " : " = "; //opcionalno - za krasota :D
cout << single_digit << delimiter;
}
cout << sum << endl;
break;
}
cout << endl << "Dovijdane! :D" << endl;
return 0;
}
inline bool is_number(const std::string & s)
{
if(s.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != '+'))) return false ;
char * p;
strtol(s.c_str(), &p, 10) ;
return (*p == 0) ;
}
int int_pow(int base, int exp)
{
int result = 1;
while (exp)
{
if (exp & 1)
result *= base;
exp /= 2;
base *= base;
}
return result;
}
Регистрирани потребители: Google [Bot]