Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Spiceofprime
4 / 4 / 0
Регистрация: 21.03.2013
Сообщений: 8
1

дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка должна вводиться с клавиатуры.

24.03.2013, 10:04. Просмотров 2300. Ответов 10
Метки нет (Все метки)

Будьте добры,помогите с решением задачи: дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа.
Строка должна вводиться с клавиатуры.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2013, 10:04
Ответы с готовыми решениями:

Дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа
Дана строка, изображающая целое положительное число. Вывести сумму цифр этого...

. Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа
срочно помогите пожалуйста

Ввести с клавиатуры целое положительное число и вывести на экран сумму его цифр
Написать программу, которая после ввода с клавиатуры целого положительного...

Дана строка, изображающая арифметическое выражение. Вывести значение
помогите пожалуйста решить 1)Дана строка, изображающая арифметическое...

Дано целое положительное число. Вывести символы, изображающие цифры этого числа (в порядке справа налево). Заранее всем
Дано целое положительное число. Вывести символы, изображающие цифры этого числа...

10
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 51
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
24.03.2013, 10:11 2
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main() {
    setlocale(0,"");
 
    string num;
    cin >> num;
 
    for(int i = 0; i < num.size(); ++i) {
        if(num[i] < '0' || num[i] > '9') {
            cout << "Число введено некорректно";
 
            return 0;
        }
    }
 
    int summ = 0;
 
    for(int i = 0; i < num.size(); ++i) {
        summ += (num[i] - '0');
    }
 
    cout << summ;
}
1
Spiceofprime
4 / 4 / 0
Регистрация: 21.03.2013
Сообщений: 8
24.03.2013, 10:18  [ТС] 3
Не могли бы Вы откомментировать свою программу?Сам в си новичок,много чего не понимаю.
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 51
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
24.03.2013, 10:25 4
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
#include <iostream> //подключение библиотеки ввода-вывода
#include <cstring> //подключение библиотеки для работы со строками string
 
using namespace std; //использовать пространство имен std (чтобы не писать std::cout)
 
int main() { //главная функция (с нее начинается работа программы)
    setlocale(0,""); //русский язык в консоли
 
    string num; //объявление строки типа string с именем num
    cin >> num; //запрос на ввод строки num
 
    for(int i = 0; i < num.size(); ++i) { //цикл (пробегаем по всей строке)
        if(num[i] < '0' || num[i] > '9') { //проверка на цифру (если символ в строке не цифра, то завершаем программу)
            cout << "Число введено некорректно"; //вывод сообщения в консоль (произойдет, если не цифра)
 
            return 0; //завершение работы программы
        }
    }
 
    int summ = 0; //объявление переменной summ (сумма) со значением 0
 
    for(int i = 0; i < num.size(); ++i) { //опять пробегаем по строке
        summ += (num[i] - '0'); //изменение значения переменной summ
    }
 
    cout << summ; //Вывод summ (суммы) в консоль
 
    return 0;//завершение работы программы
}
0
Catstail
Модератор
23623 / 11723 / 2047
Регистрация: 12.02.2012
Сообщений: 19,120
24.03.2013, 10:30 5
или так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
 
int sumdig(int n)
{
    if (n < 10)
        return n;
    else
        return (n % 10)+sumdig(n / 10);
}
 
int main(int argc, char* argv[])
{
    int k;
    cout << "Enter number: ";
    cin >> k;
    cout << "Sum of digits is " << sumdig(k) << endl;
 
    return 0;
}
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 51
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
24.03.2013, 10:38 6
Catstail, дана строка
1
Catstail
Модератор
23623 / 11723 / 2047
Регистрация: 12.02.2012
Сообщений: 19,120
24.03.2013, 12:17 7
Нет проблем:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>
#include <stdlib.h>
 
int sumdig(int n)
{
    if (n < 10)
        return n;
    else
        return (n % 10)+sumdig(n / 10);
}
 
 
int main(int argc, char* argv[])
{
    char S[20];
    int k;
    for (k=0; k<20; k++) S[k]=0;
    cout << "Enter number: ";
    cin >> S;
    cout << "Sum of digits is " << sumdig(atoi(S)) << endl;
 
    return 0;
}
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 51
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
24.03.2013, 12:20 8
Catstail, опять же, ограниченная 20 символами.
1
Catstail
Модератор
23623 / 11723 / 2047
Регистрация: 12.02.2012
Сообщений: 19,120
24.03.2013, 13:08 9
На самом деле даже не двадцатью, а меньше (тип int имеет ограничение). Но если исходить из того, что "дана строка", то можно предложить похожее решение...

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
int sumdig(char * s, int l)
{
    if (l == 1)
        return s[0]-48;
    else
        return (s[0]-48)+sumdig(s+1,l-1);
}
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 51
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
24.03.2013, 13:12 10
string - строка c++;
char* - строка C.

Тут выбор
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5117 / 1555 / 950
Регистрация: 23.01.2011
Сообщений: 3,185
Завершенные тесты: 1
24.03.2013, 13:29 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <algorithm>
#include <iterator>
#include <iostream>
#include <numeric>
#include <cstring>
 
int main ()
{
    std::string strNumber;
    std::cin >> strNumber;
 
    int countOfDigits = std::count_if(strNumber.begin(), strNumber.end(), [] (char currChar) -> bool {
        return isdigit(currChar);
    });
    if (countOfDigits == strNumber.length())
        std::cout << "Sum: " << std::accumulate(strNumber.begin(), strNumber.end(), 0, [] (unsigned sum, char currChar) -> unsigned {
            return sum += currChar - '0';
        }) << std::endl;
    else
        std::cout << "String is not correct!" << std::endl;
 
    return 0;
}
0
24.03.2013, 13:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 13:29

С клавиатуры вводиться строчка, строка символов, вывести строку в обратном порядке.
Вообщем нужно сделать 3 задачи: 1)С клавиатуры вводиться строчка, строка...

Дана непустая строка S и целое число N
Дана непустая строка S и целое число N(&gt;0). Вывести строку, содержащую символы...

Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки
Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru