Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 1
Регистрация: 23.09.2013
Сообщений: 21
1

Число символов строке не являющихся ни буквами, ни цифрами

24.12.2013, 17:01. Показов 2554. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На этой не деле, в срочном порядке нам дали несколько заданий в их числе: определить в строке число символов не являющихся ни буквами, ни цифрами. Как это понимать и выполнять?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2013, 17:01
Ответы с готовыми решениями:

Наличие в строке символов, не являющихся цифрами
В функции main() объявляется символьный массив A и инициализируется некоторой строкой символов....

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

Подсчитать в строке количество символов, которые не являются ни цифрами, ни буквами
Ребят помогите плиз сделать в визио 2008 (пустой фаил, среда С++) задача звучит так: нужно...

В введенной строке определить количество символов, которые не являются ни буквами, ни цифрами
Кто может помочь с реализацией программы на Java? #include <iostream> #include <string>...

15
31 / 31 / 4
Регистрация: 15.12.2013
Сообщений: 147
24.12.2013, 17:27 2
Как то так это будет выглядеть на псевдокоде
Код
if ( !(символ==буква || символ==цифра) )
   число_символов++;
0
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
24.12.2013, 17:52 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    string s;
    int k = 0;
    
    cin >> s;
    
    for (int i = 0; i < s.length(); i++)
        if ( !( (s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= '0' && s[i] <= '9') ) )
            k++;
    cout << k << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
1
0 / 0 / 1
Регистрация: 23.09.2013
Сообщений: 21
26.12.2013, 17:18  [ТС] 4
Тут ошибка.
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
26.12.2013, 17:37 5
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
#include <iostream>
#include <cctype>
#include <string>
#include<windows>
 
using namespace std;
 
int main(int argc, char const *argv[])
{
    string str;
    int i, n, counter = 0;
 
    getline(cin, str);
 
    for ( n = str.length(), i = 0; i < n; i++ )
    {
        if ( !( isalnum(str[i]) || isalpha(str[i]) ) )
        {
            counter++;
        }
    }
 
    cout << counter;
        system("PAUSE");
    return 0;
}
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
26.12.2013, 17:46 6
XRoy, а зачем проверять еще isalpha() ?
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
26.12.2013, 18:02 7
Петррр,
Вы правы, сначала использовал isalpha и isnum. Потом вспомнил про isalnum, но так и не удалил второе условие.
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.12.2013, 18:18 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <string>
#include <cctype>
 
int main()
{
    std::string raw = "ljasdf 98oUF 9o*&UFifyo fadfu87Tf78PY)F987YfYf76%Tf987";
    using namespace std::placeholders;
    std::cout << (raw.size() - std::count_if(raw.begin(), raw.end(), 
        static_cast<std::function<bool(char)>>(std::isalnum)));
    
    return EXIT_SUCCESS;
}
Идея понятна, осталось исправить ошибку (:
Bash
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
D:\Projects\c++\help>make
g++ cyberforum.cpp -o run.exe -std=c++11 -I"%BOOST_HOME%" -L"%BOOST_HOME%\lib"
cyberforum.cpp: In function 'int main()':
cyberforum.cpp:13:54: error: no matching function for call to 'std::function<boo
l(char)>::function(<unresolved overloaded function type>)'
   static_cast<std::function<bool(char)>>(std::isalnum)));
                                                      ^
cyberforum.cpp:13:54: note: candidates are:
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algo.h
:66:0,
                 from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\algorithm:62,
                 from cyberforum.cpp:3:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2255:2: note: template<cla
ss _Functor, class> std::function<_Res(_ArgTypes ...)>::function(_Functor)
  function(_Functor);
  ^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2255:2: note:   template a
rgument deduction/substitution failed:
cyberforum.cpp:13:54: note:   couldn't deduce template parameter '_Functor'
   static_cast<std::function<bool(char)>>(std::isalnum)));
                                                      ^
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algo.h
:66:0,
                 from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\algorithm:62,
                 from cyberforum.cpp:3:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2230:7: note: std::functio
n<_Res(_ArgTypes ...)>::function(std::function<_Res(_ArgTypes ...)>&&) [with _Re
s = bool; _ArgTypes = {char}]
       function(function&& __x) : _Function_base()
       ^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2230:7: note:   no known c
onversion for argument 1 from '<unresolved overloaded function type>' to 'std::f
unction<bool(char)>&&'
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2433:5: note: std::functio
n<_Res(_ArgTypes ...)>::function(const std::function<_Res(_ArgTypes ...)>&) [wit
h _Res = bool; _ArgTypes = {char}]
     function<_Res(_ArgTypes...)>::
     ^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2433:5: note:   no known c
onversion for argument 1 from '<unresolved overloaded function type>' to 'const
std::function<bool(char)>&'
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2210:7: note: std::functio
n<_Res(_ArgTypes ...)>::function(std::nullptr_t) [with _Res = bool; _ArgTypes =
{char}; std::nullptr_t = std::nullptr_t]
       function(nullptr_t) noexcept
       ^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2210:7: note:   no known c
onversion for argument 1 from '<unresolved overloaded function type>' to 'std::n
ullptr_t'
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2203:7: note: std::functio
n<_Res(_ArgTypes ...)>::function() [with _Res = bool; _ArgTypes = {char}]
       function() noexcept
       ^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\functional:2203:7: note:   candidate
expects 0 arguments, 1 provided
make: *** [i>?all] Error 1
Добавлено через 5 минут
Помогите поправить (:

Добавлено через 3 минуты
Да, я не хочу использовать лямбду, есть решение с преобразованием типа?
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
26.12.2013, 18:31 9
C++
1
2
3
4
5
6
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <string>
#include <cctype>
Все это правильно и быстро делается через единственную таблицу размером 256 байт, в которой определены классы символов. Сканируем строку и делаем подсчет чего угодно: цифр, букв, разделителей, гласных, шипящих итп. для любого, определенного пользователем набора.
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.12.2013, 19:04 10
gazlan, суть в том что-бы попрактиковаться в использовании STL.
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
26.12.2013, 19:21 11
outoftime, http://ideone.com/BVcNNo
1
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.12.2013, 19:43 12
Петррр, Будь добр расскажи в чем фишка, какая разница между std::isalnum и isalnum ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <string>
#include <cctype>
 
int main()
{
    std::string raw = "ljasdf 98oUF 9o*&UFifyo fadfu87Tf78PY)F987YfYf76%Tf987";
    using namespace std::placeholders;
    std::cout << (raw.size() - std::count_if(raw.begin(), raw.end(), 
        static_cast<std::function<bool(char)>>(isalnum)));
    
    return EXIT_SUCCESS;
}
Работает на ура.

Добавлено через 1 минуту
Кстати, без явного преобразование также пашет.

Добавлено через 12 секунд
C++
1
std::cout << (raw.size() - std::count_if(raw.begin(), raw.end(), isalnum));
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
26.12.2013, 19:43 13
Они разные
1
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
26.12.2013, 19:48 14
Цитата Сообщение от Arh173 Посмотреть сообщение
Тут ошибка.
Боярин, просвети неуча.
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.12.2013, 19:52 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <algorithm>
#include <functional>
#include <string>
#include <cctype>
 
int main()
{
    std::string raw = "ljasdf 98oUF 9o*&UFifyo fadfu87Tf78PY)F987YfYf76%Tf987";
    std::cout << (raw.size() - std::count_if(raw.begin(), raw.end(), isalnum));
    
    return EXIT_SUCCESS;
}
Добавлено через 1 минуту
2 строки, кто короче?
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
26.12.2013, 19:53 16
outoftime, с блэк джеком и лезбиянками - http://ideone.com/xvOj2k
1
26.12.2013, 19:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2013, 19:53
Помогаю со студенческими работами здесь

Регулярные выражения: удаление всех символов, не являющихся цифрами, а также первого символа "+" в строке
Написать регулярное выражение, в котором производится удаление всех символов, не являющихся...

Ввести строку символов, посчитать количество символов, не являющихся буквами английского алфавита
Ввести строку символов, если ее длина &gt;6, то посчитать количество символов, не являющихся буквами...

Подсчитать количество символов, не являющихся буквами
Проблема такова. Нужно подсчитать количество символов, не являющихся буквами. Я делал это так:...

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

Найти количество символов строки, не являющихся буквами
Строки в языке Pascal 3. Вводим с клавиатуры произвольные строки определить и вывести на экран...

Строка: Сколько в массиве символов, не являющихся цифрами?
Создать динамический массив типа unsigned char . Число элементов и их значения ввести с клавиатуры...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru