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

Функция подсчёта всех цифр в строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
aus
7 / 7 / 1
Регистрация: 18.10.2010
Сообщений: 56
17.11.2010, 08:06     Функция подсчёта всех цифр в строке #1
Как написать функцию которая считает сумму всех цифр в строке?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.11.2010, 08:11     Функция подсчёта всех цифр в строке #2
Руками...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int sumOfDigits(char *str)
{
    int sum = 0;
    int len;
    int i;
 
    len = strlen(str);
 
    for (i = 0; i < len; i++)
        if (str[i] >= '0' && str[i] <= '9')
            sum += str[i] - '0';
 
    return sum;
}
Предполагается, что строка завершается нуль-терминатором.
aus
7 / 7 / 1
Регистрация: 18.10.2010
Сообщений: 56
17.11.2010, 17:19  [ТС]     Функция подсчёта всех цифр в строке #3
sum += str[i] - '0'
Объясни пожалста зачем здесь 0?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.11.2010, 17:27     Функция подсчёта всех цифр в строке #4
Цитата Сообщение от aus Посмотреть сообщение
Объясни пожалста зачем здесь 0?
отнимаешь код нуля, так как ведь цифры хранятся в виде кода

Добавлено через 16 секунд
и идут друг за другом
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.11.2010, 18:15     Функция подсчёта всех цифр в строке #5
Если быть точнее, то при приведении типа из char в int мы получаем ASCII-код символа, тип которого приводим. И, к сожалению, код символов с 0 по 9 сам не является 0, 1, ..., 9. Но, к счастью, коды этих символов в ASCII-таблице лежат подряд. А значит символ 0 имеет код n, символ 1 - код n+1, ..., символ 9 - код n+9. Таким образом, чтобы получить из символа цифры саму эту цифру, надо от кода символа соответствующей цифры отнять код символа 0, т.е. 0 = n - n, 1 = (n+1) - n, ..., 9 = (n+9) - n.
fasked
17.11.2010, 18:19
  #6

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
9 = (n+9) - n.
железная логика

silent_1991
17.11.2010, 18:20     Функция подсчёта всех цифр в строке
  #7

Не по теме:

fasked, это да, но так понятнее)))

Yandex
Объявления
17.11.2010, 18:20     Функция подсчёта всех цифр в строке
Ответ Создать тему
Опции темы

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