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

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

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

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

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

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

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

Дальше магия: некоторая функция
[cpp]int SumOfNumbersInString(char A[])[/cpp]
которая принимает строку (массив символов) и возвращает integer, т.е целое число.

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

[cpp]
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;
}
[/cpp]

Здесь происходит следующее. Заводится переменная sum = 0, Дальше пробегаем циклом от начала до конца строки и используя функцию [cpp]bool isNumber(char Symbol)[/cpp]. О ней я писал ранее. Она возвращает true если переданный символ — число или false в любом другом случае.

Если функция вернула true, то заводим строку под этот 1 символ, так как функция [cpp]int atoi(char *)[/cpp] не умеет принимать символы и работает только с преобразованием строк в число.

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

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

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

[cpp]
#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;
}
[/cpp]

1 Response

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