Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Bumer@ng
 Аватар для Bumer@ng
0 / 0 / 0
Регистрация: 20.08.2010
Сообщений: 69
#1

Сумма цифр - C++

20.08.2010, 22:29. Просмотров 1309. Ответов 29
Метки нет (Все метки)

Пользователь вводит с клавиатуры число, необходимо показать на экран сумму его цифр.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2010, 22:29     Сумма цифр
Посмотрите здесь:

C++ Натуральное число, в котором n цифр, если сумма цифр возведённая в nую степень равна числу то вы вывесте число на экран(интервал чисел от 1 до k)
Сумма цифр и количество цифр C++
C++ сумма цифр
Сумма цифр чисел C++
Сумма цифр делится на K C++
C++ Сумма отделенных цифр
Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
21.08.2010, 00:14     Сумма цифр #21
CyBOSSeR, Извените, в силу своей необразованости не понял о чем вы говорили здесь:
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Оператор следования (,) использовать подобным образом вообще не стоит.
easybudda, Зачет
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
21.08.2010, 00:31     Сумма цифр #22
Что-то я увлёкся...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
int main(void){
    char buf[BUFSIZ], * p;
    int sum = 0;
    printf("Enter a number length of %d digits or less\n> ", BUFSIZ - 1);
    if ( ! fgets(buf, BUFSIZ, stdin) ){
        printf("Input error!\n");
        exit(1);
    }
    for ( p = buf; isdigit(*p); ++p )
        sum += *p - '0';
    if ( *p && ! isspace(*p) ){
        printf("Wrong input!\n");
        exit(1);
    }
    printf("Sum of digits: %d\n", sum);
    exit(0);
}
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 00:37     Сумма цифр #23
Цитата Сообщение от outoftime Посмотреть сообщение
Извените, в силу своей необразованости не понял о чем вы говорили здесь
Оператор следования - запятая. Не стоит с ним переусердствовать.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.08.2010, 00:41     Сумма цифр #24
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
if ( *p
это условие никогда не сработает, так как перед этим выкинет из цикла
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
isdigit(*p)
те лишнее условие
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
21.08.2010, 00:42     Сумма цифр #25
alex_x_x,
Вроде как это условие стоит после цикла, а не внутри него...
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.08.2010, 00:44     Сумма цифр #26
а да, все верно, привык везде кавычки ставить
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
21.08.2010, 00:45     Сумма цифр #27
alex_x_x,
Аналогично, но пришлось переучиваться - слишком громоздко выходило)))
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
21.08.2010, 00:59     Сумма цифр #28
alex_x_x, оно сработает, если ввести что-нибудь кроме цифры и ввод признаком EOF закончить (Ctrl + Z / Ctrl + D) - я пробовал... Типа защита от неправильного ввода. Но в основном ( ! isspace(*p) ) при неправильном вводе срабатывает. Всё там правильно, короче!

Добавлено через 6 минут
Цитата Сообщение от easybudda Посмотреть сообщение
оно сработает, если ввести что-нибудь кроме цифры и ввод признаком EOF закончить
вернее даже не так - ( *p ) при нормальном вводе будет всегда работать ( *p == '\n' ) там другой косяк - максимальное количество цифр BUFSIZ - 2, что вобщем-то тоже не мало...
alex_x_x
21.08.2010, 01:00
  #29

Не по теме:

просто это выглядит изрядно сложно, при том, что является заменой scanf'а

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2010, 01:31     Сумма цифр
Еще ссылки по теме:

C++ Подсчитать количество "счастливых" шестизначных автобусных билетов(сумма первых трех цифр равна сумме трех последних цифр)
C++ Сумма цифр числа
C++ Сумма цифр числа
C++ Произведение цифр/сумма цифр
C++ Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n

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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
21.08.2010, 01:31     Сумма цифр #30
Цитата Сообщение от easybudda Посмотреть сообщение
там другой косяк - максимальное количество цифр BUFSIZ - 2
кстати, нифига! всё там нормально, просто всё, что больше, в потоке останется.
Yandex
Объявления
21.08.2010, 01:31     Сумма цифр
Ответ Создать тему
Опции темы

Текущее время: 00:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru