Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <windows.h>
- using namespace std;
- //прототипы фи-й
- void output();
- void add();
- void menuv();
- void menu2();
- void sortByColor();
- void sortByWeight();
- void sortByName();
- int main (){
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- menuv();
- system("pause");
- return 0;
- }
- //главное меню
- void menuv(){
- int menu = 0;
- // выводим информацию о меню пользователю
- cout << "Выберите пункт меню: \n";
- cout << " 1 - Вывод всех жывотных \n 2 - Добавление жывотных \n 3 - Сортировка \n 4 - Exit\n";
- cout << ">>";
- cin >> menu;
- switch (menu) {
- case 1: system("cls"); output(); cout << "\n"; menuv(); break;
- case 2: system("cls"); add(); cout << "\n"; menuv(); break;
- case 3: system("cls"); menu2(); /*cout << "\n";*/ menuv(); break;
- case 4: return; // выход
- default: cout << "\nATTENTION!! Левое число\n\n"; menuv(); // включаем защиту от левых чисел
- }
- }
- //ф-ия вывода
- void output(){
- const int n = 50;
- const int m = 20;
- char animalMass[m][n]; //создаём массив для хранения
- ifstream P2;
- int i=0;
- P2.open("input.txt"); //открываем файл для чтнеия
- cout << "Список животных: \n" << endl;
- for(i;!P2.eof();i++)
- P2.getline(animalMass[i], n);
- for (int g=0;g<i;g++)
- cout << animalMass[g] << endl;
- P2.close(); //закрываем файл
- return;
- }
- //ф-ия добавления
- void add(){
- string animalString; //переменная для хранения
- ofstream P1;
- cin.ignore();
- cout << "Введите животное в формате (Название цвет вес): " << "\n>>";
- getline(cin,animalString); //ввод в массив с клавиатуры
- P1.open("input.txt", ios::app); //Открываем файл для дозаписи
- P1 << animalString << endl; //запись из массива в файл
- P1.close(); //закрытие файла
- system("cls");
- output(); //вывод изменений
- return;
- }
- //меню сортировки
- void menu2(){
- int menu;
- cout << "Выберите вид сортировки:\n";
- cout << " 1 - По имени \n 2 - По цвету \n 3 - По весу \n 4 - Выход в основное меню\n";
- cout << ">>";
- cin >> menu;
- switch(menu) {
- case 1: system("cls"); sortByName(); cout << "\n"; menu2(); break;
- case 2: system("cls"); sortByColor(); cout << "\n"; menu2(); break;
- case 3: system("cls"); sortByWeight(); cout << "\n"; menu2(); break;
- case 4: system("cls"); return;
- }
- return;
- }
- //сортировка по цвету
- void sortByColor(){
- //массивы для хранения
- const int n = 50;
- char mas[n];
- char mas0[n];
- char mas01[n];
- char mas02[n];
- //буферы
- string change;
- string change10;
- string change3;
- //массивы для сортировки
- string mas1[n];
- string mas10[n];
- string mas2[n];
- string mas3[n];
- int gh = 0;
- int j = 0;
- //открываем файл на чтение
- ifstream p1;
- p1.open("input.txt");
- //узанём длину файла
- for (gh; !p1.eof(); gh++){
- p1.getline(mas, n);
- mas1[gh] = mas;
- }
- p1.close();
- //открываем файл на чтение
- ifstream p2;
- p2.open("input.txt");
- //заполенение массивов с названиями, цветами и весами
- for (int i = 0; !p2.eof() ; i++){
- p2 >> mas0;
- mas10[i] = mas0;
- p2 >> mas01;
- mas2[i] = mas01;
- p2 >> mas02;
- mas3[i] = mas02;
- }
- //пузырьковая сортировка
- for (int j = 0; j < gh; j++){
- for (int i = 0; i < gh-1; i++){
- if (mas2[i] > mas2[i+1]){
- change = mas2[i];
- change10 = mas10[i];
- change3 = mas3[i];
- mas2[i] = mas2[i+1];
- mas10[i] = mas10[i+1];
- mas3[i] = mas3[i+1];
- mas2[i+1] = change;
- mas10[i+1] = change10;
- mas3[i+1] = change3;
- }
- }
- }
- cout << "Сортировка животных по цвету (по возрастанию):\n\n";
- for (int i = 0; i<gh; i++){
- cout << mas10[i] << " " << mas2[i] << " " << mas3[i] << "\n";
- }
- p2.close();
- return;
- }
- //сортировка по весу
- void sortByWeight(){
- //массивы для хранения
- const int n = 50;
- char mas[n];
- char mas0[n];
- char mas01[n];
- char mas02[n];
- //буферы
- string change;
- string change10;
- int change3;
- //массивы для сортировки
- string mas1[n];
- string mas10[n];
- string mas2[n];
- string mas3[n];
- int mas31[n];
- int gh = 0;
- int j = 0;
- //открываем файл для чтения
- ifstream p1;
- p1.open("input.txt");
- //узнаём длину файла
- for (gh; !p1.eof(); gh++){
- p1.getline(mas, n);
- mas1[gh] = mas;
- }
- p1.close();
- //открываем файл для чтения
- ifstream p2;
- p2.open("input.txt");
- //заполенение массивов с названиями, цветами и весами
- for (int i = 0; !p2.eof() ; i++){
- p2 >> mas0;
- mas10[i] = mas0;
- p2 >> mas01;
- mas2[i] = mas01;
- p2 >> mas02;
- mas3[i] = mas02;
- }
- //перевод массива из строчного в целочисленный
- for (int i = 0; i<gh; i++){
- mas31[i] = atoi(mas3[i].c_str());
- }
- //пузырьковая сортировка
- for (int j = 0; j < gh; j++){
- for (int i = 0; i < gh-1; i++){
- if (mas31[i] > mas31[i+1]){
- change = mas2[i];
- change10 = mas10[i];
- change3 = mas31[i];
- mas2[i] = mas2[i+1];
- mas10[i] = mas10[i+1];
- mas31[i] = mas31[i+1];
- mas2[i+1] = change;
- mas10[i+1] = change10;
- mas31[i+1] = change3;
- }
- }
- }
- //вывод данных
- cout << "Сортировка животных по весу (по возрастанию):\n\n";
- for (int i = 0; i<gh; i++){
- cout << mas10[i] << " " << mas2[i] << " " << mas31[i] << "\n";
- }
- p2.close();
- return;
- }
- //сортировка по имени
- void sortByName(){
- const int n = 50;
- //массив для хранения
- char mas[n];
- int gh = 0;
- //массив для сортировки
- string mas1[n];
- //буфер
- string tmp;
- //открываем файл на чтение
- ifstream p1;
- p1.open("input.txt");
- //записываем файл в строковый массив
- for (gh; !p1.eof(); gh++){
- p1.getline(mas, n);
- mas1[gh] = mas;
- }
- //пузырьковая сортировка
- for (int i = 0; i < gh;i++){
- for (int j = 0; j < gh-1 ; j++){
- if (mas1[j] > mas1[j + 1]){
- tmp = mas1[j];
- mas1[j] = mas1[j + 1];
- mas1[j + 1] = tmp;
- }
- }
- }
- //вывод
- cout << "Сортировка животных по имени (по возрастанию):\n";
- for (int i = 0; i < gh;i++)
- cout << mas1[i] << endl;
- p1.close();
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement