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

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

10.07.2015, 16:45. Просмотров 1402. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2015, 16:45
Ответы с готовыми решениями:

Определить количество букв, цифр и остальных символов, присутствующих в строке. Задача в С
Дана строка символов. Определить количество букв, цифр и остальных символов,...

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

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

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

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

1
Геомеханик
787 / 594 / 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