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

Посчитать сколько цифр в слове - C++

Восстановить пароль Регистрация
 
Fedek
2 / 2 / 1
Регистрация: 05.09.2011
Сообщений: 39
06.05.2014, 21:57     Посчитать сколько цифр в слове #1
это моя первая программа, подскажите что тут не так

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
#include <iostream>
#include <string.h>
#include <stdio.h>
int main( int argc, char* argv[])
{
int a, n, i;
string k;
if (argc == 2) {
        k = argv[1];
        n= strlen(k);
        a = 0;
        for (i=0; i<n; i++)
                {
                        if (k[i]>='0'&& k[i]<='1000')
                        {
                        a = a + 1;
                        }
                        else
                        {
                        a = a;
                        }
                }
}
printf("Kolichestvo chisel: %d", a);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.05.2014, 22:05     Посчитать сколько цифр в слове #2
Цитата Сообщение от Fedek Посмотреть сообщение
подскажите что тут не так
формулировка вопроса.
Fedek
2 / 2 / 1
Регистрация: 05.09.2011
Сообщений: 39
07.05.2014, 06:42  [ТС]     Посчитать сколько цифр в слове #3
посчитать сколько цифр в слове
nmcf
4281 / 3712 / 1247
Регистрация: 14.04.2014
Сообщений: 14,516
07.05.2014, 07:32     Посчитать сколько цифр в слове #4
7-ю строку замени на
C++
1
char *k;
Условие на
C++
1
isdigit(k[i])
и else вообще убрать. Это если искать отдельные цифры. А если именно числа, то тогда будет сложнее.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
07.05.2014, 10:06     Посчитать сколько цифр в слове #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<string>
#include<cstdio>
#include<cctype>
int main( int argc, char* argv[])
{
    int a = 0;
    std::string str;
    if (argc == 2) {
        str = argv[1];
        for (int i = 0; i < str.size(); ++i)
            if (isdigit(str[i]))
                ++a;
    }
    printf("Kolichestvo chisel: %d", a);
    system("pause");
    return 0;
}
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.05.2014, 12:12     Посчитать сколько цифр в слове #6
Цитата Сообщение от Ilot Посмотреть сообщение
Kolichestvo chisel
zifer

Добавлено через 55 минут
Ilot, а еще можно использовать стандартный алгоритм:
C++
1
2
3
4
5
6
7
8
9
10
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
 
int main() {
    std::string s = "01234kokoko56";
    std::cout << std::count_if( s.begin(), s.end(), static_cast<int(*)(int)>(std::isdigit) ) << std::endl;
    return 0;
}
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
07.05.2014, 12:21     Посчитать сколько цифр в слове #7
Цитата Сообщение от Tulosba Посмотреть сообщение
Ilot, а еще можно использовать стандартный алгоритм:
Ага, но ТС это врядли поможет.
И еще... разве isdigit входит в пространство имен std и с какой целью используется static_cast?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2014, 12:54     Посчитать сколько цифр в слове
Еще ссылки по теме:

Определить сколько различных символов в каждом слове C++
Определить, сколько различных букв в слове C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.05.2014, 12:54     Посчитать сколько цифр в слове #8
Цитата Сообщение от Ilot Посмотреть сообщение
разве isdigit входит в пространство имен std
хедер <cctype> вносит isdigit в std.
Цитата Сообщение от Ilot Посмотреть сообщение
с какой целью используется static_cast
С целью подсказать компилятору сигнатуру isdigit. Т.к. в std есть еще isdigit, принимающая локаль вторым аргументом. По сути, можно было использовать просто isdigit (без указания пространства имен) или ::isdigit (явно указываем, что берем глобальную версию) и тогда преобразование static_cast уже не требуется.
Короче говоря, добавил сложности в код
Yandex
Объявления
07.05.2014, 12:54     Посчитать сколько цифр в слове
Ответ Создать тему
Опции темы

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