Отделить цифры от букв и найти сумму цифр - C (СИ)
Формулировка задачи:
Есть массив,N размера.В массиве присутствуют буквы и цифры.Нужно отделить цифры от букв и найти сумму цифр:
отделяем буквы от цифр:
и итоге сумма всех цифр выводит не понятно что,как найти сумму всех чисел в массиве?
int NumSum(char s[]) { int i,sum; for (i=0;s[i]!=0;i++) sum=int(( strchr ( "0123456789",s[i]) )+s[i]); return sum; }
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <Windows.h> int NumDigits ( char s[] ) { int i, count = 0; for (i = 0; i < int (strlen(s)); i ++ ) if( strchr ( "0123456789", s[i] ) ) count ++; return count; } int NumSum(char s[]) { int i,sum; for (i=0;s[i]!=0;i++) sum=int(( strchr ( "0123456789",s[i]) )+s[i]); return sum; } void main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); char s[80]; int n,sum; printf ( "Введите строку\n" ); gets_s(s); n = NumDigits ( s ); sum = NumSum(s); printf ( "Нашли %d цифр,сумма =%d", n,sum ); }
Решение задачи: «Отделить цифры от букв и найти сумму цифр»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> int sum(const char * s){ return ( *s == '\0' ) ? 0 : ( isdigit(*s) ) ? *s - '0' + sum(s+1) : sum(s+1); } int main(void){ char buf[BUFSIZ]; while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) printf("Sum of digits: %d\n", sum(buf)); return 0; }
Объяснение кода листинга программы
Выделим в виде списка элементы кода, описывая их назначение:
- #include
Указывает компилятору включить в программу функции файла стандартного ввода/вывода, нужные для отправки сообщений в консоль - #include
Подключает функции файла ctype.h, позволяющие работать со строками и определять является ли символ буквой или цифрой - *int sum(const char s) {...}** Функция принимает на вход указатель на строку символов и возвращает сумму цифр в ней
- *return ( s == '\0' ) ? 0 : ( isdigit(s) ) ? s - '0' + sum(s+1) : sum(s+1);** Внутри функции происходит рекурсивный обход строки. Если текущий символ является концом строки (т.е. '\0'), то возвращается 0. Если символ является цифрой, то он преобразуется в целое число и добавляется к сумме, после чего вызывается функция sum для следующей цифры
- int main(void){...} Главная функция программы, которая организует взаимодействие с пользователем
- char buf[BUFSIZ]; Объявление переменной-массива типа char для хранения строки, вводимой пользователем
- *while ( printf(
String:
) && fgets(buf, BUFSIZ, stdin) && buf != '\n' )** Организация цикла, который будет выполняться до тех пор, пока пользователь не введет пустую строку (т.е. не нажмет Enter) - printf(
Sum of digits: %d\n
, sum(buf)); Внутри цикла выводится сообщение с суммой цифр в введенной строке - return 0; Обозначает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д