C++: Cумма цифр в строке

А это моя лабораторная.

Написать программу, которая принимает с клавиатуры строку и считает сумму цифр в этой строке. Использовать atoi() Вычисления организовать функциями.

Начну поэтапно и буду раскручивать дальше это приложение.

Первое что должно быть — Объявление необходимых переменных и чтение данных в фунции main()

int _tmain(int argc, _TCHAR* argv[])
{
char A [255];
printf("Enter string");
gets(A);
printf("%d", SumOfNumbersInString(A));
scanf("");
return 0;
}

Заводится массив символов размерностью 255. Это число — максимально возможная длина строки для анализа. Далее я пишу сообщение пользователю, мол введи-ка,ты, строку мне, далее читаю строку в объявленный массив.

Дальше магия: некоторая функция

int SumOfNumbersInString(char A[])

которая принимает строку (массив символов) и возвращает integer, т.е целое число.

Рассмотрим эту функцию более подробно:

int SumOfNumbersInString(char A [])
{
int sum = 0;
for (int i = 0; i < strlen(A); i++)
{
if (isNumber(A[i]))
{
char s_num[3];
s_num[0] = A[i];
s_num[1] = '\0';
sum += atoi(s_num);
}
}
return sum;
}

Здесь происходит следующее. Заводится переменная sum = 0, Дальше пробегаем циклом от начала до конца строки и используя функцию

bool isNumber(char Symbol)

. О ней я писал ранее. Она возвращает true если переданный символ — число или false в любом другом случае.

Если функция вернула true, то заводим строку под этот 1 символ, так как функция

int atoi(char *)

не умеет принимать символы и работает только с преобразованием строк в число.

В первый элемент строки записываем значение, во второй — терминатор — символ \0.  В итоге получается строка, которая состоит из одного символа, который является числом.

Далее при помощи функции atoi() преобразуем строку в число и прибавляем к переменной sum. По окончании цикла возвращаем значение sum.

Спасибо, что дочитались до этого места. Вот весь код одним куском:

#include "stdafx.h"
#include <string.h>
#include <stdlib.h>

bool isNumber(char Symbol);
int SumOfNumbersInString(char A []);

int _tmain(int argc, _TCHAR* argv[])
{
char A [255];
printf("Enter string");
gets(A);
printf("%d", SumOfNumbersInString(A));
scanf("");
return 0;
}

int SumOfNumbersInString(char A [])
{
int sum = 0;
for (int i = 0; i < strlen(A); i++)
{
if (isNumber(A[i]))
{
char s_num[3];
s_num[0] = A[i];
s_num[1] = '\0';
sum += atoi(s_num);
}
}
return sum;
}
bool isNumber(char Symbol)
{
if (Symbol >= '0' && Symbol <= '9')
return true;
return false;
}

1 Response

Добавить комментарий