Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

Ввести целое число и найти сумму его цифр
(1 чел.) (1) гость
  • Страница:
  • 1

Ввести целое число и найти сумму его цифр

Ввести целое число и найти сумму его цифр 16/01/2016 16:01 #1

  • Alexandra CH
  • ( Пользователь )
  • Вне сайта
  • Новый участник
  • Постов: 1
  • Баллов: 3
  • Репутация: 0
Помогите,пожалуйста решить задачу,совсем запуталась.Ввести целое число и найти сумму его цифр.

Ввести целое число и найти сумму его цифр 10/01/2017 22:13 #2

  • vvm
  • ( Пользователь )
  • Вне сайта
  • Новый участник
  • Постов: 5
  • Баллов: 26
  • Репутация: 1
Вот что у меня получилось.
Задача не из простых.

#include <iostream>
#include <sstream>
#include <string>
#include <string.h>
#include <stdio.h>
 #include <stdexcept> // для runtime_error
// включите поддержку с++11 когда будете  компилировать
using namespace std;

void chartostr(char charr[], string &ret){
    ret = charr;
    ret[sizeof(ret)] = '\0';
}

int StrToInt(const char s[])
{
  int n;
  char c;
  if (sscanf(s, " %i %c", &n, &c) != 1)
  {
    ostringstream st;
    st << "Cannot convert '" << s << "' to integer.";
    throw runtime_error(st.str());
  }
  return n;
}

inline int StrToInt(const string& s)
{
  return StrToInt(s.c_str());
}


int main()
{

   stringstream ss; // http://www.cplusplus.com/reference/sstream/stringstream/
    ss << "123408"; // записать 22 в ss - тут можете вводить свое число или считать его с клавиатуры
    string str; // обычная строка
    ss>>str;// записать в строку

  
   
   
    int temp=0;
    int ilen = str.length(); // посчитать длину строки


for (unsigned i=0; i<ilen; ++i)
  {
      string str_temp;
       str_temp+= str.at(i); // извлечь символ
       temp += StrToInt(str_temp); // конвертировать символ в int и прибавить к temp
    std::cout <<"str =" <<StrToInt(str_temp)<<endl;
  }

    cout <<endl<<"summ = " <<temp <<  endl;//вывести то что получилось
    return 0;
}
Последнее редактирование: 10/01/2017 22:17 от vvm. Причина: дополнение, лишние переменные

Ввести целое число и найти сумму его цифр 14/01/2017 20:08 #3

  • vvm
  • ( Пользователь )
  • Вне сайта
  • Новый участник
  • Постов: 5
  • Баллов: 26
  • Репутация: 1
Можно еще так :
#include <iostream>

using namespace std;

int main()
{

       string str = "23556"; // наша строка
    std::string::size_type sz;
    int arr[str.length()];
     int icount = 0;





for (unsigned i=0; i<str.length(); ++i)
  {
       string str_temp;
       str_temp = str.at(i);
      arr[i] = std::stoi(str_temp,&sz,10);


  }

for (unsigned i=0; i<str.length(); ++i)
  {
      std::cout <<"arr = " << arr[i]<<endl;


  }

  for (unsigned i=0; i<str.length(); ++i)
  {
      icount +=arr[i];



  }
std::cout <<"summ = " << icount<<endl;


    return 0;
}




Но тут есть один нюанс. Можно использовать atio, но не все компиляторы его поддерживают.
stoi() - не все пофиксили ошибку.
stackoverflow.com/questions/22084783/function-stoi-not-declared

Как я решил проблему с stoi(), прочитал вот здесь:
tehsausage.com/mingw-to-string
  • Страница:
  • 1
Время создания страницы: 0.23 секунд