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

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

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

Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных - C++

10.07.2015, 16:45. Просмотров 760. Ответов 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;
unsigned long long dlinna(char *p), chislo = 0, bukvi = 0, rusbukvi = 0, ostal=0;
void main(){
    setlocale(LC_ALL, "rus");
    system("chcp 1251");
    char mas[256];
    cout << "Введите стоку:";
    cin.getline(mas, 256);
    dlinna(mas);
    
    
    cout << "Чисел:\n" << chislo<<endl;
    cout << "Английских букв:\n" << bukvi << endl;
    cout << "Русских букв:\n" << rusbukvi << endl;
    cout << "Остальных знаков:\n" << ostal << endl;
    
    cin.get();
    cin.get();
}
unsigned long long  dlinna(char *p){
    unsigned long long i = 0;
    
    for (; i<strlen(p); i++){
        if (p[i] >= '0'&& p[i] <= '9'){
            chislo++;
        }
        else if (p[i] >= 'a'&& p[i] <= 'z' || p[i] >= 'A'&& p[i] <= 'Z'){
            bukvi++;
        }
        else if (p[i] >= 192 && p[i] <= 255 || p[i] >= 128 && p[i] <= 241){
            rusbukvi++;
        }
        else if (p[i] >= 1 && p[i] <= 47 || p[i] >= 58 && p[i] <= 64 || p[i] >= 91 && p[i] <= 96 || p[i] >= 123 && p[i] <= 127 || p[i] >= 176 && p[i] <= 223) {
            ostal++;
        }
        
 
 
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2015, 16:45     Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных
Посмотрите здесь:
C++ Определить количество букв, цифр и остальных символов, присутствующих в строке. Задача в С
Подсчитать количество цифр в строке, которую вводит пользователь C++
C++ Пользователь вводит количество звёздочек и количество пробелов, через которые должна выводиться каждая звёздоч
C++ Пользователь вводит строку вывести на экран количество слов
C++ Реализовать двумерный динамический треугольный массив. Количество строк и сами элементы вводит пользователь. Количество элементов в строке рассчитывае
Пользователь вводит строку. Программа находит количество слов, правее самого короткого C++
Определить количество дней в году, который вводит пользователь C++
C++ Определить длину данного и количество Букв «а». Вывести имя и количество букв в третьем слове
C++ Создать файл, ввести символы, вывести на экран количество не латинских букв, количество цифр
C++ В последовательности символов подсчитать количество букв и количество цифр
Операции с текстом (длина, количество цифр, количество букв) C++
Определить количество цифр и малых латинских букв в строке St C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Геомеханик
549 / 356 / 266
Регистрация: 26.06.2015
Сообщений: 810
10.07.2015, 21:04     Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных #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
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <cctype>
#include <locale.h>
using namespace std;
#define DIGITS  0
#define ENG     1 
#define RUS     2
#define OTHER   3
 
void counter(const char* s, size_t arr[]){
    const unsigned char* p = (const unsigned char*)s;
 
    while(*p){
        if(isdigit(*p))
            ++arr[DIGITS];
        else if(isalpha(*p)){
            if(*p <= 'z')
                ++arr[ENG];
            else
                ++arr[RUS];
        } else
            ++arr[OTHER];
        ++p;
    }
}
 
int main(void){
    setlocale(LC_CTYPE, "Russian_Russia.1251");
 
    char s[] = "Русских букв [123] ABCDEF 456789";
 
    size_t arr[4] = {0};
    counter(s, arr);
 
    cout << "digits: " << arr[DIGITS] << endl
         << "ch eng: " << arr[ENG]    << endl
         << "ch rus: " << arr[RUS]    << endl
         << "other:  " << arr[OTHER]  << endl; 
    return 0;
}
Yandex
Объявления
10.07.2015, 21:04     Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных
Ответ Создать тему
Опции темы

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