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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
#1

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

08.07.2015, 10:31. Просмотров 310. Ответов 13
Метки нет (Все метки)

Описать рекурсивную подпрограмму, определяющую количество арабских цифр в данной строке.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2015, 10:31     Рекурсивно определить количество арабских цифр в строке
Посмотрите здесь:
C++ Рекурсивно вычислить количество цифр в строке
C++ Составить программу для вычисления количества арабских цифр в введенном с клавиатуры строке символов
C++ строка. Определить количество цифр в строке символов.
C++ В заданной строке определить количество слов и цифр
Определить в строке количество цифр, упорядоченых по возрастанию C++
Определить количество цифр и малых латинских букв в строке St C++
C++ В строке определить количество цифр и общую сумму символов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
08.07.2015, 11:15
  #2
 Комментарий модератора 
Алина1234, название темы должно отражать суть темы.
Пожалуйста называйте темы при создании так, чтобы было понятно о чем пойдет речь. Более как-то детально старайтесь описать.
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
08.07.2015, 11:17  [ТС]     Рекурсивно определить количество арабских цифр в строке #3
Хорошо, в следующий раз буду писать подробно
Вы мне поможете?
Cuellius
176 / 84 / 62
Регистрация: 23.06.2015
Сообщений: 219
Завершенные тесты: 2
08.07.2015, 11:20     Рекурсивно определить количество арабских цифр в строке #4
C++
1
2
3
4
5
int GetCount(std::string &str, int i)
{
    if(i == -1) return 0;
    return GetCount(str, i -  1) + isdigit(str[i]);
}
Вызов:
C++
1
GetCount(std::string str, str.size() - 1)
Derrt
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 11:24     Рекурсивно определить количество арабских цифр в строке #5
Вот, была у меня такая задача на PascalABC.NET
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
uses
    CRT;
const
    // множество символов-цифр
    M = ['0'..'9'];
var
    str: string;
 
procedure countNum(str: string; len, i: integer);
begin
    if (len <> 0) then
    begin
        if (str[len] in M) then i += 1;
        len -= 1;
        countNum(str, len, i);
    end
    else write('count num in str: ', i);
end;
 
begin
    write('In str: ');
    readLn(str);
    countNum(str, length(str), 0);
end.
попробуйте переписать на С++
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
08.07.2015, 11:24  [ТС]     Рекурсивно определить количество арабских цифр в строке #6
Но это же Паскаль, а мне нужно на С++
Cuellius
176 / 84 / 62
Регистрация: 23.06.2015
Сообщений: 219
Завершенные тесты: 2
08.07.2015, 11:30     Рекурсивно определить количество арабских цифр в строке #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
int GetCount(std::string &str, int i)
{
    if(i == -1) return 0;
    return GetCount(str, i - 1) + isdigit(str[i]);
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    std::string str;
    std::getline(std::cin, str);
    std::cout << "Количество арабских цифр в данной строке: " << GetCount(str, int(str.size()) - 1) << std::endl;
    return 0;
}
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
08.07.2015, 11:34  [ТС]     Рекурсивно определить количество арабских цифр в строке #8
Cuellius, Ответ выводит в 4 раза больше, чем нужно.
Derrt
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 11:37     Рекурсивно определить количество арабских цифр в строке #9
там вроде все норм. Я тестировал

на каком варианте у вас в 4x больше?
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
08.07.2015, 11:41  [ТС]     Рекурсивно определить количество арабских цифр в строке #10
Каждый раз

Может я что-то не понимаю, и так должно быть?
Миниатюры
Рекурсивно определить количество арабских цифр в строке  
Derrt
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 11:48     Рекурсивно определить количество арабских цифр в строке #11
эмм. я чего-то не понимаю
Миниатюры
Рекурсивно определить количество арабских цифр в строке  
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
08.07.2015, 11:50  [ТС]     Рекурсивно определить количество арабских цифр в строке #12
Кошмар какой
И что же делать? У меня постоянно такую штуку делает(((
Derrt
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 64
08.07.2015, 12:09     Рекурсивно определить количество арабских цифр в строке #13
попробуйте переписать один из вариантов на паскале. Или почитайте документацию о VisualStudio (я так понял, что у вас именно она)

Добавлено через 1 минуту
компилятор не может по-разному понимать программный код
или может

Добавлено через 12 минут
ну что? разобрались?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2015, 12:11     Рекурсивно определить количество арабских цифр в строке
Еще ссылки по теме:
Рекурсивно вычислить количество цифр в заданном натуральном числе C++
C++ Определить количество букв, цифр и остальных символов, присутствующих в строке. Задача в С
Рекурсивно определить количество отрицательных элементов первой строки матрицы C++
C++ Перевод арабских цифр в римские с++
Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных C++

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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,460
Завершенные тесты: 1
08.07.2015, 12:11     Рекурсивно определить количество арабских цифр в строке #14
Цитата Сообщение от Derrt Посмотреть сообщение
компилятор не может по-разному понимать программный код
или может
Разные компиляторы по разному реализуют разные функции. Стандартизируется только результат работы функции, а как она там внутри устроена это на совести разработчиков конкретного компилятора.

Стандартом оговорено, что isdigit возвращает ненулевое значение, если ее аргумент является числом и ноль в противоположном случае.

Заметьте ни слова тут нет про единицу. Ненулевое.
Все это корнями глубоко проросло в то, что тип bool был сильно позже введен в C++, чем int, на котором его и забазировали.
В данном случае возвращается sizeof( int ) скорее всего. Неплохо было бы проверить на x64.

Вот такая штука починит все:
C++
1
2
3
4
5
int GetCount(std::string &str, int i)
{
    if(i < 0) return 0;
    return GetCount(str, i - 1) + (bool)isdigit(str[i]);
}
Yandex
Объявления
08.07.2015, 12:11     Рекурсивно определить количество арабских цифр в строке
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru