0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 5

Написать функцию, которая принимает строку, подсчитывает количество цифр в ней

20.12.2012, 13:51. Показов 2297. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: Написать функцию, которая принимает в качестве параметра строку с завершающим нулем, подсчитывает количество цифр в ней и выводит результат на экран.
Знаю, что по идеи должно быть что-то типа:
C
1
2
3
4
void calculate_digits(const char * str)
{
   //обращение к элементу i строки str: str[i]
}
Задачка вроде не сложная, но у меня вызывает полнейший ступор. Подскажите, пожалуйста, кому не сложно.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.12.2012, 13:51
Ответы с готовыми решениями:

Нужно написать функцию, которая принимает строку, а возвращает количество гласных, согласных и символов-разделителей
Подскажите,пожалуйста, хотя бы основную идею работы с функциями и указателями. Нужно написать функцию, которая принимает строку, а...

Сделать функцию которая принимает на входе набор цифр и выдает дату
Привет всем, нужно сделать функцию которая принимает на входе набор цифр и выдает дату. Есть 4 массива. день недели(7 значений), день...

Описать рекурсивную функцию, которая подсчитывает количество латинских букв в тексте
Описать рекурсивную функцию abc, которая подсчитывает количество латинских букв в тексте. Текст завершается точкой #include...

7
 Аватар для UriahHeep
224 / 219 / 77
Регистрация: 24.09.2012
Сообщений: 511
Записей в блоге: 2
20.12.2012, 15:06
C
1
2
3
4
5
6
7
8
9
int calculate_digits(const char *string) {
    int cnt = 0;
    while(*string++) {
        if (*string >= '0' && *string <= '9') {
            ++cnt;
        }
    }
    return cnt;
}
2
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 5
20.12.2012, 15:24  [ТС]
Спасибо большое.
0
 Аватар для Пaтрик
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 976
20.12.2012, 15:24
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <ctype.h>
 
void calculate_digits(const char *str)
{
    size_t count = 0;
    while (*str)
        if (isdigit(*str++))
            count++;
    printf("%d", count);
}
 
int main(void)
{
    calculate_digits("1234asd");
    return 0;
}
2
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 5
20.12.2012, 15:45  [ТС]
Цитата Сообщение от Пaтрик Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <ctype.h>
 
void calculate_digits(const char *str)
{
    size_t count = 0;
    while (*str)
        if (isdigit(*str++))
            count++;
    printf("%d", count);
}
 
int main(void)
{
    calculate_digits("1234asd");
    return 0;
}
И Вам большое спасибо. Я так понимаю isdigit возвращает единицу, если встречает число и нуль, если не число. Так?
0
 Аватар для Пaтрик
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 976
20.12.2012, 15:51
Примерно так.
1
 Аватар для UriahHeep
224 / 219 / 77
Регистрация: 24.09.2012
Сообщений: 511
Записей в блоге: 2
20.12.2012, 16:01
Пaтрик, спасибо. Благодаря вашему коду заметил в своём ошибку.
Поправил.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdlib.h>
#include <stdio.h>
 
int calculate_digits(const char *string);
 
int main(void) {
    char *str = "1eqweqeqweqwe";
    printf("%d\n", calculate_digits(str));
    return EXIT_SUCCESS;
}
 
int calculate_digits(const char *string) {
    int cnt = 0;
    while(*string) {
        if (*string >= '0' && *string <= '9') {
            ++cnt;
        }
        ++string;
    }
    return cnt;
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12839 / 7581 / 1765
Регистрация: 25.07.2009
Сообщений: 13,970
20.12.2012, 16:41
Чуть сложнее, за то короче:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <string.h>
 
int calc_digits(const char * s) {
    return ( s = strpbrk(s, "0123456789") ) ? 1 + calc_digits(s + 1) : 0;
}
 
int main(void) {
    char buf[BUFSIZ];
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
        printf("%d digits.\n", calc_digits(buf));
    
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2012, 16:41
Помогаю со студенческими работами здесь

Описать рекурсивную функцию abc, которая подсчитывает количество латинских букв в тексте
Описать рекурсивную функцию abc, которая подсчитывает количество латинских букв в тексте. Текст завершается точкой.

Описать рекурсивную функцию skv, которая подсчитывает количество квадратных скобок в тексте
Описать рекурсивную функцию skv, которая подсчитывает количество квадратных скобок (открывающих и закрывающих) в тексте. Текст завершается...

Написать функцию,которая принимает массив целых чисел
Написать функцию,которая принимает массив целых чисел расположенныъ в динамической памяти(массив заполнен числами от(10,10000)),и создает...

Написать программу, которая принимает от пользователя строку и выводит ее на экран
Написать программу, которая принимает от пользователя строку и выводит ее на экран, перемешав слова в случайном порядке. Замечание:...

Создать функцию, которая принимает указатель на массив и количество элементов
Люди! Огромная просьба помочь. Как сделать функцию, которая принимает указатель на массив и количество элементов и возвращает указатель на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Сложность Колмогорова: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
Состояние гонки в C#: подводные камни многопоточного программировани­я
UnmanagedCoder 20.03.2025
Что такое состояние гонки? Это ситуация, когда результат программы непредсказуемо меняется в зависимости от порядка выполнения потоков. Проще говоря, два или более потока пытаются одновременно. . .
Next.js для разработки React: преимущества серверного рендеринга
Reangularity 20.03.2025
Next. js решает классическую проблему React-приложений: медленную первоначальную загрузку и плохую индексацию поисковиками. Вместо того чтобы заставлять браузер пользователя выполнять всю работу по. . .
JUnit или TestNG: Выбираем Java-фреймворк для тестирования
Javaican 20.03.2025
История тестовых фреймворков в Java началась в конце 90-х, когда Кент Бек и Эрих Гамма разработали JUnit - инструмент, который перевернул представление разработчиков о модульном тестировании. JUnit. . .
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
Python и PDF: Создание и редактирование файлов
py-thonny 20.03.2025
Работа с PDF-документами – одна из популярных задач в современной разработке. Python предлагает несколько инструментов для создания, чтения и редактирования PDF-файлов, среди которых особенно. . .
Корутины в Unity и производительно­сть WaitForSeconds
GameUnited 20.03.2025
Разработчики игр на Unity часто сталкиваются с вопросом: как выполнять действия через определённые промежутки времени, не блокируя основной поток игры? Тут как раз и приходят на помощь корутины —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru