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

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

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

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

10.07.2015, 16:45. Просмотров 826. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных (C++):

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

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

Пользователь вводит количество звёздочек и количество пробелов, через которые должна выводиться каждая звёздоч - C++
Вроде все понятно, не пойму почему не реализуется должным образом. предполагаю не верно указан while, спасибо за помощь заранее=) char...

Пользователь вводит строку вывести на экран количество слов - C++
Пользователь вводит строку вывести на экран количество слов. Надо написать на ТУРБО С++.К сожалению без понятия как считать полные слова...

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

Пользователь вводит строку. Программа находит количество слов, правее самого короткого - C++
Доброго времени суток, помогите найти количество слов после самого короткого слова! Искал в Инете... нашел и изменил код - который находит...

1
Геомеханик
623 / 430 / 310
Регистрация: 26.06.2015
Сообщений: 971
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
Привет! Вот еще темы с ответами:

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

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

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

В последовательности символов подсчитать количество букв и количество цифр - C++
Всем Добрый Вечер!!!Помогите пожалуйста тупенькому =), очень надо. Заранее спс... 1. В последовательности символов подсчитать...


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

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

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