Найти сумму введенных элементов пока не будет введен символ на с/с++

ЗАДАНИЕ: Написать программу, которая считает сумму введенных чисел и завершает выполнение по нажатию символа, "q". При введении другого символа (не цифры) программа имеет выдать сообщение об ошибке и продолжить работу.

реализовать, чтоб считалась сума чисел введенных подряд, допустим 111 22, чтобы сумма равнялась 133, у меня получаетсья что сумма равна каждой отдельные цифре 1 + 1 + 1 + 2 + 2 = 7. Вот мой код:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main()
{
    int n;
    int sum = 0;

    printf("Enter the numbers to exit enter <q>:\n");
    while (n = getchar())
    {
        if (n == 'q')
        {
            break;
        }
        else if (n == '\n')
        {
            continue;
        }
        else if (isdigit(n))
        {
            n -= '0';
            sum += n;
        }
        else if (!isdigit(n))
        {
            printf("ERROR\n");
        }
    }
    printf("Sum of entered numbers: %d\n", sum);

    return 0;
}

Ответы (1 шт):

Автор решения: Alexey Vesker

Проблема в том, что getchar() возвращает только один символ за раз, т.е при первом проходе цикла, она из числа 111 она вернет первую 1 (0х31), при втором вторую и так далее. Вам необходимо добавить буфер, в который будете складывать считаные цифровые символы до тех пор, пока не встретите символ конца строки или пробел (из вашего условия не очень ясно как именно вводятся числа). Далее содержимое буфера переводите в число, используя atoi(), и прибавляете его к sum, очищаете буфер. И так до тех пор пока пользователь не введет символ 'q'.

P.S. Код не привожу намеренно, так как реализация алгоритма очень простая и не должна вызывать затруднений.

→ Ссылка