Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
BULBUL_AGLI
0 / 0 / 1
Регистрация: 10.07.2015
Сообщений: 1
#1

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

10.07.2015, 16:45. Просмотров 1224. Ответов 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;
}

http://www.cyberforum.ru/cpp-beginners/thread1943552.html

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2015, 16:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных (C++):

Выведите на экран прямоугольник из нулей. Количество строк вводит пользователь, количество столбцов равно 5
Выведите на экран прямоугольник из нулей. Количество строк вводит пользователь,...

Подсчитать количество цифр в строке, которую вводит пользователь
Подсчитать количество цифр в строке которую вводит пользователь. Помогите...

Пользователь вводит количество звёздочек и количество пробелов, через которые должна выводиться каждая звёздоч
Вроде все понятно, не пойму почему не реализуется должным образом. предполагаю...

Пользователь вводит строку вывести на экран количество слов
Пользователь вводит строку вывести на экран количество слов. Надо написать на...

Реализовать двумерный динамический треугольный массив. Количество строк и сами элементы вводит пользователь. Количество элементов в строке рассчитывае
Реализовать двумерный динамический треугольный массив. Количество строк и сами...

1
Геомеханик
785 / 592 / 937
Регистрация: 26.06.2015
Сообщений: 1,409
10.07.2015, 21:04 #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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2015, 21:04
Привет! Вот еще темы с решениями:

Пользователь вводит строку. Программа находит количество слов, правее самого короткого
Доброго времени суток, помогите найти количество слов после самого короткого...

Определить количество дней в году, который вводит пользователь
Определить количество дней в году, который вводит пользователь. В високосном...

Определить длину данного и количество Букв «а». Вывести имя и количество букв в третьем слове
Ввести фамилию , имя и отчество как одно текстовое данное. Определить длину...

Создать файл, ввести символы, вывести на экран количество не латинских букв, количество цифр
Есть код к заднию , но он не правильно показывает данные - киррилицу не ищет а...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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