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

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

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

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

08.05.2013, 07:58. Просмотров 409. Ответов 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
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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2013, 07:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос объясните пожалуйста код (C++):

Объясните код пожалуйста - C++
FILE* fp = NULL; char* filename = &quot;m:\\2.txt&quot;; if ((fp = fopen(filename,&quot;r&quot;)) == NULL) cout&lt;&lt;&quot;Unable to open...

объясните, пожалуйста, код - C++
есть программа, но не до конца понятно, что она делает... #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;string&gt; #include...

Объясните пожалуйста код - C++
#include &lt;iostream&gt; template &lt;typename T&gt; struct NameOf {}; #define DEF_TYPENAME(type) template &lt;&gt; \ struct NameOf&lt;type&gt; {\ ...

Объясните пожалуйста код - C++
#include&quot;stdafx.h&quot; #include&lt;string.h&gt; #include &lt;iostream&gt; using namespace std; const int MAX = 5; struct polinom ...

Объясните, пожалуйста, код - C++
bool userAgeIs16 = age == 16; if( userAgeIs16 ) { Console.WriteLine(\&quot;В этом возрасте уже можно водить машину!\&quot;); } ...

Объясните, пожалуйста, данный код - C++
Здравствуйте, объясните пожалуйста построчно данный код. Задача: В одномерном массиве исключить все вхождения заданного числа. Массив...

2
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;
}
0
Kolek000
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 112
10.05.2013, 11:32  [ТС] #3
спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2013, 11:32
Привет! Вот еще темы с ответами:

Объясните код, пожалуйста, файловый поток - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; void main() { setlocale(LC_ALL, &quot;&quot;); ...

Класс Вектор. объясните пожалуйста код! - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;cstdlib&gt; using namespace std; class TVector { private: double...

Объясните пожалуйста, как конкретно работает код - C++
Программа считывает из файла фамилии, имена, годы рождения и балы студентов, и записывает в другой файл фамилии, начинающейся с букв А и Б...

Объясните пожалуйста, как работает код. Указатели - C++
Если не сложно, напишите пожалуйста комметнтарии к каждой строке. Никак не могу разобраться. Программа разделяет строку на слова. ...


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

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

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