Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Сумма цифр заданного натурального числа  (Прочитано 18410 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
alliance
Постоялец

ru
Offline Offline

« : 16-06-2008 12:44 » 

Помогите написать программу найти сумму цифр заданного натурального числа использую циклы и ветвления
ну или ввожу например 321 как мне получить в итоге цифры 3 2 1 ?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 16-06-2008 13:10 » new

Простая математика. Вот пример программы, которая выводит разряды
Код:
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int i=321;
    vector<int> stek;
    while (i>0)
    {
        stek.push_back(i % 10);
        i /=10;
    }
    vector<int>::reverse_iterator beg;
    for (beg=stek.rbegin(); beg != stek.rend(); ++beg) cout << *beg << " ";
    cout << endl;
    return 0;
}
Для твоего примера не нужно сохранять в векторе, а сразу суммировать. Так что поработай чуть напильником.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
alliance
Постоялец

ru
Offline Offline

« Ответ #2 : 16-06-2008 14:38 » 

хм...незнакомы синтаксис немного ( у меня получилось
Код:
/
#include <iostream.h>
#include <conio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
void main ()
{
clrscr();
int a,b=10000,c,h,i=0,l;
cout<<"wwedite a: ";
cin>>a;
for(b=10000;b;b/=10)
{
c=a/b;
if(c==0)
i++;
else
break;
}


for(l=b;l;l/=10)
{
c=a/l;
h=a-c*l;
a=h;
cout<<c<<" ";

getch();
}
/[code]
[/code]
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 16-06-2008 16:25 » 

alliance, А если число будет больше чем 10000? (Хотя для 16 разрядной системы такого не может быть.)
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
alliance
Постоялец

ru
Offline Offline

« Ответ #4 : 16-06-2008 17:13 » 

всесто b=10000 можно хоть сискстиллиард записать, все равно он будет 0 отбрасывать пока до отличного от 0 не дойдет
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 16-06-2008 17:37 » 

alliance, Оно то можно, но тебе нужно править все время будет код Улыбаюсь Учись сразу универсальный код писать, чтобы не получать ошибок по типу "Ошибка 2000 года".
В твоей задаче в принципе такой код был бы самый раз
Код:
int num = ......;
int sum = 0;
if (num <0) num *= -1;
while (num>0)
{
   sum+= num % 10;
   num /=10;
}
cout << sum << endl;
Будут просумированны все числа, и при этом коду без разници какая разрядность.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
alliance
Постоялец

ru
Offline Offline

« Ответ #6 : 16-06-2008 17:53 » 

Спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines