Advertisement
Xsufu

3rd lab

Mar 7th, 2020
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <windows.h>
  5. using namespace std;
  6.  
  7. //прототипы фи-й
  8. void output();
  9. void add();
  10. void menuv();
  11. void menu2();
  12. void sortByColor();
  13. void sortByWeight();
  14. void sortByName();
  15.  
  16. int main (){
  17.     SetConsoleOutputCP(1251);
  18.     SetConsoleCP(1251);
  19.     menuv();
  20.      
  21.     system("pause");
  22.     return 0;
  23. }
  24.  
  25. //главное меню
  26. void menuv(){
  27.     int menu = 0;
  28.  
  29.     // выводим информацию о меню пользователю
  30.     cout << "Выберите пункт меню: \n";
  31.     cout << " 1 - Вывод всех жывотных \n 2 - Добавление жывотных \n 3 - Сортировка \n 4 - Exit\n";
  32.     cout << ">>";
  33.     cin >> menu;
  34.  
  35.     switch (menu) {
  36.         case 1: system("cls"); output(); cout << "\n"; menuv(); break;
  37.         case 2: system("cls"); add(); cout << "\n"; menuv(); break;
  38.         case 3: system("cls"); menu2(); /*cout << "\n";*/ menuv(); break;
  39.         case 4: return; // выход
  40.         default: cout << "\nATTENTION!! Левое число\n\n"; menuv(); // включаем защиту от левых чисел
  41.     }
  42.  
  43. }
  44.  
  45. //ф-ия вывода
  46. void output(){
  47.     const int n = 50;
  48.     const int m = 20;
  49.     char animalMass[m][n]; //создаём массив для хранения
  50.    
  51.     ifstream P2;
  52.     int i=0;
  53.    
  54.     P2.open("input.txt"); //открываем файл для чтнеия
  55.    
  56.     cout << "Список животных: \n" << endl;
  57.     for(i;!P2.eof();i++)
  58.         P2.getline(animalMass[i], n);
  59.     for (int g=0;g<i;g++)
  60.         cout << animalMass[g] << endl;
  61.  
  62.  
  63.     P2.close(); //закрываем файл
  64.     return;
  65. }
  66.  
  67. //ф-ия добавления
  68. void add(){
  69.     string animalString; //переменная для хранения
  70.     ofstream P1;
  71.     cin.ignore();
  72.     cout << "Введите животное в формате (Название цвет вес): " << "\n>>";
  73.    
  74.     getline(cin,animalString); //ввод в массив с клавиатуры
  75.    
  76.     P1.open("input.txt", ios::app); //Открываем файл для дозаписи
  77.     P1 << animalString << endl; //запись из массива в файл
  78.     P1.close(); //закрытие файла
  79.    
  80.     system("cls");
  81.     output(); //вывод изменений
  82.  
  83.     return;
  84. }
  85.  
  86. //меню сортировки
  87. void menu2(){
  88.     int menu;
  89.    
  90.     cout << "Выберите вид сортировки:\n";
  91.     cout << " 1 - По имени \n 2 - По цвету \n 3 - По весу \n 4 - Выход в основное меню\n";
  92.     cout << ">>";
  93.     cin >> menu;
  94.    
  95.     switch(menu) {
  96.         case 1: system("cls"); sortByName(); cout << "\n"; menu2(); break;
  97.         case 2: system("cls"); sortByColor(); cout << "\n"; menu2(); break;
  98.         case 3: system("cls"); sortByWeight(); cout << "\n"; menu2(); break;
  99.         case 4: system("cls"); return;
  100.     }
  101.    
  102.     return;
  103. }
  104.  
  105. //сортировка по цвету
  106. void sortByColor(){
  107.     //массивы для хранения
  108.     const int n = 50;
  109.     char mas[n];
  110.     char mas0[n];
  111.     char mas01[n];
  112.     char mas02[n];
  113.    
  114.     //буферы
  115.     string change;
  116.     string change10;
  117.     string change3;
  118.    
  119.     //массивы для сортировки
  120.     string mas1[n];
  121.     string mas10[n];
  122.     string mas2[n];
  123.     string mas3[n];
  124.    
  125.     int gh = 0;
  126.     int j = 0;
  127.    
  128.     //открываем файл на чтение
  129.     ifstream p1;
  130.     p1.open("input.txt");
  131.    
  132.     //узанём длину файла
  133.     for (gh; !p1.eof(); gh++){
  134.         p1.getline(mas, n);
  135.         mas1[gh] = mas;
  136.     }
  137.     p1.close();
  138.    
  139.     //открываем файл на чтение
  140.     ifstream p2;
  141.     p2.open("input.txt");
  142.    
  143.     //заполенение массивов с названиями, цветами и весами
  144.     for (int i = 0; !p2.eof() ; i++){
  145.         p2 >> mas0;
  146.         mas10[i] = mas0;
  147.         p2 >> mas01;
  148.         mas2[i] = mas01;
  149.         p2 >> mas02;
  150.         mas3[i] = mas02;
  151.     }
  152.    
  153.     //пузырьковая сортировка
  154.     for (int j = 0; j < gh; j++){
  155.         for (int i = 0; i < gh-1; i++){
  156.             if (mas2[i] > mas2[i+1]){
  157.                 change = mas2[i];
  158.                 change10 = mas10[i];
  159.                 change3 = mas3[i];
  160.                
  161.                
  162.                 mas2[i] = mas2[i+1];
  163.                 mas10[i] = mas10[i+1];
  164.                 mas3[i] = mas3[i+1];
  165.                
  166.                
  167.                 mas2[i+1] = change;
  168.                 mas10[i+1] = change10;
  169.                 mas3[i+1] = change3;
  170.             }
  171.         }
  172.     }  
  173.    
  174.     cout << "Сортировка животных по цвету (по возрастанию):\n\n";
  175.     for (int i = 0; i<gh; i++){
  176.         cout << mas10[i] << " " << mas2[i] << " " << mas3[i] << "\n";
  177.     }
  178.    
  179.    
  180.     p2.close();
  181.     return;
  182. }
  183.  
  184. //сортировка по весу
  185. void sortByWeight(){
  186.     //массивы для хранения
  187.     const int n = 50;
  188.     char mas[n];
  189.     char mas0[n];
  190.     char mas01[n];
  191.     char mas02[n];
  192.    
  193.     //буферы
  194.     string change;
  195.     string change10;
  196.     int change3;
  197.    
  198.     //массивы для сортировки
  199.     string mas1[n];
  200.     string mas10[n];
  201.     string mas2[n];
  202.     string mas3[n];
  203.     int mas31[n];
  204.    
  205.     int gh = 0;
  206.     int j = 0;
  207.    
  208.     //открываем файл для чтения
  209.     ifstream p1;
  210.     p1.open("input.txt");
  211.    
  212.     //узнаём длину файла
  213.     for (gh; !p1.eof(); gh++){
  214.         p1.getline(mas, n);
  215.         mas1[gh] = mas;
  216.     }
  217.     p1.close();
  218.    
  219.     //открываем файл для чтения
  220.     ifstream p2;
  221.     p2.open("input.txt");
  222.    
  223.     //заполенение массивов с названиями, цветами и весами
  224.     for (int i = 0; !p2.eof() ; i++){
  225.         p2 >> mas0;
  226.         mas10[i] = mas0;
  227.         p2 >> mas01;
  228.         mas2[i] = mas01;
  229.         p2 >> mas02;
  230.         mas3[i] = mas02;
  231.     }
  232.    
  233.     //перевод массива из строчного в целочисленный
  234.     for (int i = 0; i<gh; i++){
  235.         mas31[i] = atoi(mas3[i].c_str());
  236.     }
  237.  
  238.     //пузырьковая сортировка
  239.     for (int j = 0; j < gh; j++){
  240.         for (int i = 0; i < gh-1; i++){
  241.             if (mas31[i] > mas31[i+1]){
  242.                 change = mas2[i];
  243.                 change10 = mas10[i];
  244.                 change3 = mas31[i];
  245.                
  246.                
  247.                 mas2[i] = mas2[i+1];
  248.                 mas10[i] = mas10[i+1];
  249.                 mas31[i] = mas31[i+1];
  250.                
  251.                
  252.                 mas2[i+1] = change;
  253.                 mas10[i+1] = change10;
  254.                 mas31[i+1] = change3;
  255.             }
  256.         }
  257.     }  
  258.    
  259.     //вывод данных
  260.     cout << "Сортировка животных по весу (по возрастанию):\n\n";
  261.     for (int i = 0; i<gh; i++){
  262.         cout << mas10[i] << " " << mas2[i] << " " << mas31[i] << "\n";
  263.     }
  264.    
  265.     p2.close();
  266.    
  267.    
  268.     return;
  269. }
  270.  
  271. //сортировка по имени
  272. void sortByName(){
  273.     const int n = 50;
  274.    
  275.     //массив для хранения
  276.     char mas[n];
  277.    
  278.     int gh = 0;
  279.     //массив для сортировки
  280.     string mas1[n];
  281.     //буфер
  282.     string tmp;
  283.     //открываем файл на чтение
  284.     ifstream p1;
  285.     p1.open("input.txt");
  286.    
  287.     //записываем файл в строковый массив
  288.     for (gh; !p1.eof(); gh++){
  289.         p1.getline(mas, n);
  290.         mas1[gh] = mas;
  291.     }
  292.    
  293.     //пузырьковая сортировка
  294.     for (int i = 0; i < gh;i++){
  295.    
  296.         for (int j = 0; j < gh-1 ; j++){
  297.        
  298.             if (mas1[j] > mas1[j + 1]){
  299.                 tmp = mas1[j];
  300.                 mas1[j] = mas1[j + 1];
  301.                 mas1[j + 1] = tmp;
  302.             }
  303.            
  304.         }
  305.        
  306.     }
  307.    
  308.     //вывод
  309.     cout << "Сортировка животных по имени (по возрастанию):\n";
  310.     for (int i = 0; i < gh;i++)
  311.         cout << mas1[i] << endl;
  312.    
  313.     p1.close();
  314.    
  315.    
  316.  
  317.     return;
  318. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement