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

объясните пожалуйста код - C++

Восстановить пароль Регистрация
 
Kolek000
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 112
08.05.2013, 07:58     объясните пожалуйста код #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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <string>
#include <sstream>
#include <stdlib.h>
#include <ctype.h>
#include <vector>
 
// Perevodit russko-angliiskuu stroku v nijnii registr
std::string LoweringCase(std::string const& str)
{
    std::string sret;
    for(std::string::const_iterator cib(str.begin()); cib != str.end(); ++cib)
    {
        if(char(*cib) == char(0xf0))
            sret += char(0xf1);
        else if(char(*cib) >= char(0x80) && char(*cib) <= char(0x8f))
            sret += char(*cib) + char(0x20);
        else if(char(*cib) >= char(0x90) && char(*cib) <= char(0x9f))
            sret += char(*cib) + char(0x50);
        else
            sret += tolower(char(*cib));
    }
    return sret;
}
 
int main()
{
    std::string str, sword, strlow, swordlow;
    std::cout << "Vvedite russko-angliiskuu stroku (slova i probeli):\n";
    std::getline(std::cin, str);
    std::cout << "Vvedite posledovatel'nost' simvolov (slovo) dlya poiska:\n";
    std::cin >> sword;
    //std::cout << std::hex << (char(*str.begin()) == char(0xf0)) << "\n\n";
    strlow = LoweringCase(str);
    //std::cout << strlow << "\n\n";
    swordlow = LoweringCase(sword);
    //std::cout << swordlow << "\n\n";
    std::stringstream sstr(strlow);
    std::vector<std::string> vec, veclow;
    while(sstr >> sword)
        veclow.push_back(sword);
    sstr.clear();
    sstr.str(str);
    while(sstr >> sword)
        vec.push_back(sword);
    std::cout << "Naideni slova:\n\n";
    for(std::vector<std::string>::iterator ib(veclow.begin()); ib != veclow.end(); ++ib)
    {
        if(ib->find(swordlow) != std::string::npos)
        {
            std::cout << vec.at(ib - veclow.begin()) << '\n';
        }
        //std::cout << val << '\n';
    }
    system("pause");
    return 0;
}
 
// ЁvR маCDПа   ёаёvRЯNv Ю ёЁvR
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2013, 07:58     объясните пожалуйста код
Посмотрите здесь:

C++ Объясните пожалуйста код и ход работы программы на С++
C++ Объясните пожалуйста, как конкретно работает код
Объясните код пожалуйста C++
C++ Объясните пожалуйста, как работает код. Указатели
C++ Объясните, пожалуйста, данный код
C++ Объясните, пожалуйста, код
C++ Объясните код, пожалуйста, файловый поток
Класс Вектор. объясните пожалуйста код! C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cyberbrain1000
 Аватар для cyberbrain1000
23 / 23 / 3
Регистрация: 15.04.2013
Сообщений: 62
09.05.2013, 21:00     объясните пожалуйста код #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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <string>
#include <sstream>
#include <stdlib.h>// для ф-ции system
#include <ctype.h>// для ф-ции tolower
#include <vector>
 
// Perevodit russko-angliiskuu stroku v kodirovke oem866 v nijnii registr
std::string LoweringCase(std::string const& str)
{
    std::string sret;// результат
    for(std::string::const_iterator cib(str.begin()); cib != str.end(); ++cib)// цикл по строке
    {
        if(char(*cib) == char(0xf0))// если символ строки равен Ё (в кодировке oem866) то
            sret += char(0xf1);// то делаем его ё
        else if(char(*cib) >= char(0x80) && char(*cib) <= char(0x8f)) // если символ равен А-П то
            sret += char(*cib) + char(0x20);// то делаем его а-п
        else if(char(*cib) >= char(0x90) && char(*cib) <= char(0x9f)) // если символ равен Р-Я то
            sret += char(*cib) + char(0x50);// то делаем его р-я
        else// если символ - латинская буква в верхнем регистре то
            sret += tolower(char(*cib));// то понижаем регистр ф-цией tolower
    }
    return sret;//возврат результата ( строка в нижн. регистре)
}
 
int main()
{
    std::string str, sword, strlow, swordlow;
    std::cout << "Vvedite russko-angliiskuu stroku (slova i probeli):\n";
    std::getline(std::cin, str);
    std::cout << "Vvedite posledovatel'nost' simvolov (slovo) dlya poiska:\n";
    std::cin >> sword;
    //std::cout << std::hex << (char(*str.begin()) == char(0xf0)) << "\n\n";
    strlow = LoweringCase(str);// понижаем регистр строки str и кладём его в strlow
    //std::cout << strlow << "\n\n";
    swordlow = LoweringCase(sword);// понижаем регистр слова sword и кладём его в swordlow
    //std::cout << swordlow << "\n\n";
    std::stringstream sstr(strlow);// загрузка в поток строки strlow
    std::vector<std::string> vec, veclow;// векторы слов
    while(sstr >> sword)// разбиваем строку strlow на слова и
        veclow.push_back(sword);// и кладём слова в вектор veclow
    sstr.clear();// очистка флагов потока
    sstr.str(str);// загрузка в поток строки str
    while(sstr >> sword)// разбиваем строку str на слова и
        vec.push_back(sword);// и кладём слова в вектор vec
    std::cout << "Naideni slova:\n\n";
    for(std::vector<std::string>::iterator ib(veclow.begin()); ib != veclow.end(); ++ib)// цикл по вектору veclow
    {
        if(ib->find(swordlow) != std::string::npos)// если в слове вектора veclow найдено слово strlow nj
        {
            std::cout << vec.at(ib - veclow.begin()) << '\n'; // то выводим его на экран
        }
        //std::cout << val << '\n';
    }
    system("pause");// чтобы консоль сразу не закрывалась
    return 0;
}
Kolek000
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 112
10.05.2013, 11:32  [ТС]     объясните пожалуйста код #3
спасибо
Yandex
Объявления
10.05.2013, 11:32     объясните пожалуйста код
Ответ Создать тему
Опции темы

Текущее время: 14:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru