Advertisement
MARSHAL327

Untitled

Dec 25th, 2019
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <fstream>
  4. #include <string>
  5. #include <windows.h>
  6. #include <conio.h>
  7. #include <stdio.h>
  8. #include <cwchar>
  9. #include <map>
  10. #include <list>
  11. using namespace std;
  12.  
  13. string sets(size_t size) {
  14.     string res_s;
  15.     for (int i = 0; i < size; i++) {
  16.         res_s += " ";
  17.     }
  18.     return res_s;
  19. }
  20.  
  21. class Vocabulary {
  22.     multimap <string, string> voc_en_ru;
  23.     multimap <string, string> voc_ru_en;
  24. public:
  25.     Vocabulary() {};
  26.     ~Vocabulary() {};
  27.     void read_file(); // чтение из файла
  28.     void print();
  29.     void search_en(string search_word);
  30. };
  31.  
  32. // чтение из файла
  33. void Vocabulary::read_file() {
  34.     ifstream fin_en("voc_en.txt");
  35.     ifstream fin_ru("voc_ru.txt");
  36.  
  37.     if (!fin_en || !fin_ru) {
  38.         cout << "error" << endl;
  39.         system("pause");
  40.         return;
  41.     }
  42.  
  43.     list<string> key_list_en, key_list_ru;
  44.     list <string> ::iterator it;
  45.     string str_en, str_ru, res_str;
  46.     int k = 0;
  47.  
  48.     while (!fin_ru.eof() || !fin_en.eof()) {
  49.         getline(fin_en, str_en);
  50.         getline(fin_ru, str_ru);
  51.         for (int i = 0; i < str_en.length(); i++) {
  52.             res_str += str_en[i];
  53.             if (str_en[i] == ' ') {
  54.                 k++;
  55.                 key_list_en.push_back(res_str);
  56.             }
  57.         }
  58.  
  59.         for (int i = 0; i < str_ru.length(); i++) {
  60.             res_str += str_ru[i];
  61.             if (str_ru[i] == ' ') {
  62.                 key_list_ru.push_back(res_str);
  63.             }
  64.         }
  65.  
  66.         for (it = key_list_en.begin(); it != key_list_en.end(); it++) {
  67.             voc_en_ru.emplace(str_en, str_ru);
  68.         }
  69.  
  70.         for (it = key_list_ru.begin(); it != key_list_ru.end(); it++) {
  71.             voc_ru_en.emplace(str_ru, str_en);
  72.         }
  73.  
  74.        
  75.     }
  76. }
  77.  
  78. // печать данных
  79. void Vocabulary::print() {
  80.     int translate = 0;
  81.     cout << "выберите вариант перевода" << endl;
  82.     cout << "1 - англо-русский" << endl;
  83.     cout << "2 - русско-английский" << endl;
  84.     cin >> translate;
  85.     multimap<string, string> ::iterator it_en_ru = voc_en_ru.begin();
  86.     multimap<string, string> ::iterator it_ru_en = voc_ru_en.begin();
  87.     cout << "Слово          Перевод" << endl;
  88.     switch (translate) {
  89.     case 1:
  90.         for (int i = 0; it_en_ru != voc_en_ru.end(); it_en_ru++, i++) {
  91.             for (int i = 0; i < it_en_ru->first.length(); i++) {
  92.                 if (it_en_ru->first[i] == ' ') break;
  93.                 cout << it_en_ru->first[i];
  94.             }
  95.             cout << sets(20 - it_en_ru->first.length()) << it_en_ru->second;
  96.             cout << endl;
  97.         }
  98.         break;
  99.     case 2:
  100.         for (int i = 0; it_ru_en != voc_ru_en.end(); it_ru_en++, i++) {
  101.             for (int i = 0; i < it_ru_en->first.length(); i++) {
  102.                 if (it_ru_en->first[i] == ' ') break;
  103.                 cout << it_ru_en->first[i];
  104.             }
  105.             cout << sets(20 - it_ru_en->first.length()) << it_ru_en->second;
  106.             cout << endl;
  107.         }
  108.         break;
  109.     default:
  110.         cout << "error";
  111.         break;
  112.     }
  113. }
  114.  
  115. void Vocabulary::search_en(string search_word) {
  116.     //multimap <string, string> ::iterator it;
  117.  
  118.     multimap <string, string> ::iterator it = voc_en_ru.begin();
  119.     cout << "А вот все отсортированно: " << endl;
  120.     for (int i = 0; it != voc_en_ru.end(); it++, i++) {  // выводим их
  121.         cout << i << ") Ключ " << it->first << ", значение " << it->second << endl;
  122.     }
  123.     /*it = voc_en_ru.find(search_word);
  124.     cout << it->second << endl;*/
  125. }
  126.  
  127. int main() {
  128.     SetConsoleCP(1251);
  129.     SetConsoleOutputCP(1251);
  130.  
  131.     Vocabulary V;
  132.     int item;
  133.     string word;
  134.     do {
  135.         system("CLS");
  136.         cout << "1 - Считывание из файла" << endl;
  137.         cout << "2 - Вывод данных" << endl;
  138.         cout << "3 - Вывод вариантов перевода заданного английского слова" << endl;
  139.         cout << "4 - Вывод вариантов перевода заданного русского слова" << endl;
  140.         cout << "5 - Выход" << endl;
  141.         cout << "============================" << endl;
  142.         cout << "Введите номер пункта меню" << endl;
  143.         cin >> item;
  144.         switch (item) {
  145.         case 1:
  146.             V.read_file();
  147.             break;
  148.  
  149.         case 2:
  150.             V.print();
  151.             system("pause");
  152.             break;
  153.  
  154.         case 3:
  155.             cout << "enter word";
  156.             cin >> word;
  157.             V.search_en(word);
  158.             system("pause");
  159.             break;
  160.  
  161.         case 4:
  162.             cout << "====================================\n\n";
  163.             system("pause");
  164.             break;
  165.  
  166.         case 5:
  167.             return 0;
  168.         default:
  169.             cout << "Неверно введён номер!" << endl;
  170.             cin.get();
  171.             break;
  172.         }
  173.     } while (1);
  174.     return 0;
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement