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

Не учитывать регистр

21.04.2013, 23:16. Показов 8393. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Надо чтобы программа считала текст из файла и подсчитала сколько раз встречаются разные буквы не учитывая регистра, т.е А=а б=Б. Я понимаю что можно сделать условия для каждой буквы, но как сделать это короче?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2013, 23:16
Ответы с готовыми решениями:

Обработать исходный файл и определить число каждого из символов (при этом регистр букв не учитывать, а цифры, знаки препинания и пробелы учитывать)
Задан файл .txt с английским текстом. Обработать исходный файл и определить число каждого из...

Не учитывать регистр
Как не учитывать регистр букв? К примеру юзер вводит "А" открывать элемент "а" в xml файле. Всмысле...

Не учитывать регистр букв
Как не учитывать регистр букв в Паскале?

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

7
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
21.04.2013, 23:55 2
Функция tolower(int). Вы входной символ пропускаете через эту функцию и сравниваете её с маленькой буквой в программе. Т.е. идея такова, что работаете вы только с маленькими (ну или с большими, тогда вам в помощь функция toupper(int)) НО! Не работает с кириллицей, для этого нужно писать свою функцию.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2013, 00:12 3
Цитата Сообщение от iRomul Посмотреть сообщение
НО! Не работает с кириллицей
Откуда такие данные?
0
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
22.04.2013, 00:33 4
alsav22, выяснил у Шилдта. Но сейчас выяснил, что всё-таки при смене локали вроде как и поддержка появляется. Так ли это?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2013, 00:36 5
Цитата Сообщение от iRomul Посмотреть сообщение
Так ли это?
Если локаль выставить, то работает.
0
алкокодер
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
22.04.2013, 00:50 6
Можно так, я спрячу под спойлер, если вам интересно написать самому.
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <cstdio>
 
int main(){
    char small[]="abcdefghiklmnopqrstvxyz";
    char big[]="ABCDEFGHIKLMNOPQRSTVXYZ";
 
    int count[sizeof(small)]={0};
    char text[]="AaBbCcDdQPos";
 
    for(int i = 0; text[i]!='\0'; i++){
        for( int j = 0; big[j]!='\0'; j++){
            if( text[i] == big[j] || text[i] == small[j] ){
                count[j]++;
            }
        }
    }
 
    for(int i = 0; big[i]!='\0'; i++){
        printf("%c %d\n", big[i], count[i]);
    }
    
    return 0;
};
0
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
22.04.2013, 01:23 7
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
#include <iterator>
#include <fstream>
 
using namespace std;
 
bool alpha(char c)
{   return isalpha(c);  }
 
int main()
{
    ifstream file("file.txt");
    if (!file)
        return -1;
    unsigned alphaCount = count_if(istream_iterator<char>(file), istream_iterator<char>(), alpha);
    cout << alphaCount;
    return 0;
}
0
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.04.2013, 11:57 8
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
#include <iostream>
#include <fstream>
#include <set>
#include <algorithm>
#include <iterator>
 
struct comp
{
    bool operator()(const char lhs, const char rhs)
    {
        return tolower(lhs) != tolower(rhs);
    }
};
 
int main() 
{
    setlocale (0, "Russian");
    
    std::ifstream ifs("D:/file.txt");
    if (ifs.is_open())
    {
        std::set<char, comp> chars;
        std::copy_if(std::istreambuf_iterator<char>(ifs), std::istreambuf_iterator<char>(),
                std::inserter(chars, chars.begin()), isalpha);
        
        std::cout<<"Result: "<<chars.size()<<"\n";
    }
    else
        std::cout<<"Error opening file.\n";
    
    return 0;
}
0
22.04.2013, 11:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2013, 11:57
Помогаю со студенческими работами здесь

Как не учитывать регистр при сравнении строк
Есть ли какой-нибудь параметр в Oracle, который бы указывал бы, что не надо учитывать регистр при...

Учитывать регистр при вставке строки таблицы
Есть таблица с 4-мя полями. 3 строковых (varchar) и 1 числовое (integer). На 3 строковых поля...

Почему нужно учитывать регистр при вводе оператора
Еще раз здравствуйте! Почему С# придирчев к регистру? Плюсы/Минусы? Например...

Какие буквы и сколько раз встречаются в строке (регистр не учитывать)?
Была такая идея, но как-то не работает Private Sub CommandButton13_Click() Dim i As Integer, x()...


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

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