Форум программистов, компьютерный форум CyberForum.ru

Рекурсивно вычислить количество цифр в строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.64
Olga93
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 6
09.12.2011, 18:07     Рекурсивно вычислить количество цифр в строке #1
Задача: Разработать рекурсивную функцию, возвращающую значение: для вычисления количества цифр в строке; с помощью данной функции определить, в каком из двух предложений цифр больше.

(Учитывая, что я совершенно ничего не поняла из задания, то у меня нет даже собственной наработки, простите, очень сильно прошу помощи в написании или же подсказок, ведь возможно не так страшен волк как его малюют )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
09.12.2011, 18:21     Рекурсивно вычислить количество цифр в строке #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using namespace std;
 
int digit_count (char *s)
{
    return *s ? *s >= '0' && *s <= '9' ? 1 + digit_count (s+1) : digit_count (s+1) : 0;
}
 
int main(int argc, char* argv[])
{
    char s1[]="123 saf 45 fea" ;
    char s2[]="1sad 3" ;
 
    if ( digit_count (s1) > digit_count (s2) )
        cout <<" In the firts ";
    else
        if ( digit_count (s1) == digit_count (s2) )
            cout <<" Equally ";
        else
            cout <<" In the second ";
 
    cout <<endl;
 
    system ("pause");
    return 0;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.12.2011, 18:53     Рекурсивно вычислить количество цифр в строке #3
C
1
2
3
4
int digit_count (char *s)
{
   return *s ? (isdigit(*s) != 0) + digit_count(s+1) : 0;
}
Olga93
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 6
09.12.2011, 20:30  [ТС]     Рекурсивно вычислить количество цифр в строке #4
go, поясните пожалуйста седьмую строку.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
09.12.2011, 20:34     Рекурсивно вычислить количество цифр в строке #5
Thinker, брутальный вариант
C
1
size_t digits_count(const char * s) { return ( *s ) ? !!isdigit(*s) + digits_count(s+1) : 0; }
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
09.12.2011, 20:43     Рекурсивно вычислить количество цифр в строке #6
Olga93, движемся по строке с помощью рекурсии, одновременно проверяя, является ли символ цифрой.
Olga93
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 6
09.12.2011, 20:51  [ТС]     Рекурсивно вычислить количество цифр в строке #7
go,
Спасибо, и последний, извините вопрос, что какую роль выполняет звёздочка (т.е. char *s, char* argv) в выражениях:

Цитата Сообщение от go Посмотреть сообщение
int digit_count (char *s)


Цитата Сообщение от go Посмотреть сообщение
int main(int argc, char* argv[])
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
09.12.2011, 20:52     Рекурсивно вычислить количество цифр в строке #8
Olga93, список параметров, которые принимает функция.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.12.2011, 21:39     Рекурсивно вычислить количество цифр в строке #9
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
!!isdigit(*s)
Честно говоря, не думал о таком классном приеме
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
09.12.2011, 22:49     Рекурсивно вычислить количество цифр в строке #10
Цитата Сообщение от Olga93 Посмотреть сообщение
какую роль выполняет звёздочка
Прочитайте в любой вменяемой книге раздел про указатели, всё станет ясно. Рекомендую "Язык программирования С" Керниган, Ритчи, или "Полный справочник по С" Шилдт.
go
09.12.2011, 22:52
  #11

Не по теме:

easybudda, Ой, а я видно "по диагонали" прочитал вопрос автора (слово звездочка не заметил)

alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
10.12.2011, 09:17     Рекурсивно вычислить количество цифр в строке #12
Цитата Сообщение от Thinker Посмотреть сообщение
Честно говоря, не думал о таком классном приеме
такие приемы широко применяются на этапе проектирования для сведения логической функции устройства в базис двух логических операций, например из функции в Булевом базисе исключить дизъюнкцию. Мы с вами еще много чего интересного узнаем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2011, 09:33     Рекурсивно вычислить количество цифр в строке
Еще ссылки по теме:

Количество цифр в строке C++
Рекурсивно определить количество арабских цифр в строке C++
Подсчитать количество цифр в строке C++

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
10.12.2011, 09:33     Рекурсивно вычислить количество цифр в строке #13
Цитата Сообщение от alkagolik Посмотреть сообщение
такие приемы широко применяются...

Не по теме:

да, как вижу, полезная штука

Yandex
Объявления
10.12.2011, 09:33     Рекурсивно вычислить количество цифр в строке
Ответ Создать тему
Опции темы

Текущее время: 23:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru