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 menuv();
- void output();
- void add();
- void menu4Sort();
- void sortByName();
- void sortByColor();
- void sortByWeight();
- void uFind();
- void uDelete();
- struct animals{
- string name;
- string color;
- int weight;
- };
- 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 - Поиск \n 5 - Удаление \n 6 - 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"); menu4Sort(); menuv(); break;
- case 4: system("cls"); uFind(); cout << "\n"; menuv(); break;
- case 5:system("cls"); uDelete(); cout << "\n"; menuv(); break;
- case 6: return; // выход
- default: cout << "\nATTENTION!! Левое число\n\n"; menuv(); // включаем защиту от левых чисел
- }
- }
- //ф-ия вывода
- void output(){
- int g = 0;
- int n = 50;
- animals animal[50];
- ifstream P1;
- P1.open("input.txt");
- for (g; !P1.eof(); g++){
- P1 >> animal[g].name;
- P1 >> animal[g].color;
- P1 >> animal[g].weight;
- }
- //вывод данных
- for (int i = 0; i<g-1; i++)
- cout << animal[i].name << " " << animal[i].color << " " << animal[i].weight << "\n";
- P1.close();
- return;
- }
- //ф-ия добавления
- void add(){
- animals animal;
- ofstream P1;
- //игнорирование предыдщего cin
- cin.ignore();
- int n = 4;
- char arr[n];
- string mass[1];
- //открываем файл на дозапись
- P1.open("input.txt", ios::app);
- cout << "Введите название животного: " << "\n>>";
- getline(cin,animal.name);
- system("cls");
- cout << "Введите цвет животного: " << "\n>>";
- getline(cin,animal.color);
- system("cls");
- cout << "Введите вес животного: " << "\n>>";
- cin.getline(arr, n);
- mass[0] = arr;
- //перевод строки в число
- animal.weight = atoi(mass[0].c_str());
- //запись полученных данных в файл
- P1 << animal.name << " " << animal.color << " " << animal.weight << endl;
- P1.close();
- system("cls");
- //выводим изменённый файл на экран
- output();
- return;
- }
- //меню сортировки
- void menu4Sort(){
- int menu = 0;
- // выводим информацию о меню пользователю
- cout << "Выберите сортировку: \n";
- cout << " 1 - По названию \n 2 - По цвету \n 3 - По весу \n 4 - Exit\n";
- cout << ">>";
- cin >> menu;
- switch (menu) {
- case 1: system("cls"); sortByName(); cout << "\n"; menu4Sort(); break;
- case 2: system("cls"); sortByColor(); cout << "\n"; menu4Sort(); break;
- case 3: system("cls"); sortByWeight(); cout << "\n"; menu4Sort(); break;
- case 4: system("cls"); return; // выход
- default: cout << "\nATTENTION!! Левое число\n\n"; menu4Sort(); // включаем защиту от левых чисел
- }
- return;
- }
- //сортировка по названию
- void sortByName(){
- const int n = 50;
- animals animal[n];
- string bN, bC;
- int g = 0, bW = 0;
- ifstream P1;
- P1.open("input.txt");
- for (g = 0; !P1.eof(); g++){
- P1 >> animal[g].name;
- P1 >> animal[g].color;
- P1 >> animal[g].weight;
- }
- for (int i = 0; i<g; i++){
- for (int j = 0; j<g-1; j++){
- if (animal[j].name > animal[j+1].name){
- bN = animal[j].name;
- bC = animal[j].color;
- bW = animal[j].weight;
- animal[j].name = animal[j+1].name;
- animal[j].color = animal[j+1].color;
- animal[j].weight = animal[j+1].weight;
- animal[j+1].name = bN;
- animal[j+1].color = bC;
- animal[j+1].weight = bW;
- }
- }
- }
- cout << "Сортировка животных по названию (по возрастанию):\n\n";
- for (int i = 1; i<g; i++){
- cout << animal[i].name << " " << animal[i].color << " " << animal[i].weight << "\n";
- }
- P1.close();
- return;
- }
- //сортировка по цвету
- void sortByColor(){
- const int n = 50;
- animals animal[n];
- string bN, bC;
- int g = 0, bW = 0;
- ifstream P1;
- P1.open("input.txt");
- for (g = 0; !P1.eof(); g++){
- P1 >> animal[g].name;
- P1 >> animal[g].color;
- P1 >> animal[g].weight;
- }
- for (int i = 0; i<g; i++){
- for (int j = 0; j<g-1; j++){
- if (animal[j].color > animal[j+1].color){
- bN = animal[j].name;
- bC = animal[j].color;
- bW = animal[j].weight;
- animal[j].name = animal[j+1].name;
- animal[j].color = animal[j+1].color;
- animal[j].weight = animal[j+1].weight;
- animal[j+1].name = bN;
- animal[j+1].color = bC;
- animal[j+1].weight = bW;
- }
- }
- }
- cout << "Сортировка животных по названию (по возрастанию):\n\n";
- for (int i = 1; i<g; i++){
- cout << animal[i].name << " " << animal[i].color << " " << animal[i].weight << "\n";
- }
- P1.close();
- return;
- }
- //сортировка по весу
- void sortByWeight(){
- const int n = 50;
- animals animal[n];
- string bN, bC;
- int g = 0, bW = 0;
- ifstream P1;
- P1.open("input.txt");
- for (g = 0; !P1.eof(); g++){
- P1 >> animal[g].name;
- P1 >> animal[g].color;
- P1 >> animal[g].weight;
- }
- for (int i = 0; i<g; i++){
- for (int j = 0; j<g-1; j++){
- if (animal[j].weight > animal[j+1].weight){
- bN = animal[j].name;
- bC = animal[j].color;
- bW = animal[j].weight;
- animal[j].name = animal[j+1].name;
- animal[j].color = animal[j+1].color;
- animal[j].weight = animal[j+1].weight;
- animal[j+1].name = bN;
- animal[j+1].color = bC;
- animal[j+1].weight = bW;
- }
- }
- }
- cout << "Сортировка животных по названию (по возрастанию):\n\n";
- for (int i = 0; i<g-1; i++){
- cout << animal[i].name << " " << animal[i].color << " " << animal[i].weight << "\n";
- }
- P1.close();
- return;
- }
- void uFind(){
- const int n = 50;
- char mas[n];
- animals animal;
- string userWord, weight;
- int f = 0, fn = 0, fc = 0, fw = 0, len = 0;
- ifstream P2;
- P2.open("input.txt");
- cout << "Введите фразу для поиска: ";
- cin >> userWord;
- //узнаём длину файла
- for (len; !P2.eof(); len++){
- P2.getline(mas, n);
- }
- P2.close();
- ifstream P1;
- P1.open("input.txt");
- for (int i = 0; i < len-1; i++){
- P1 >> animal.name;
- P1 >> animal.color;
- P1 >> animal.weight;
- weight = to_string(animal.weight);
- fn = animal.name.find(userWord);
- fc = animal.color.find(userWord);
- fw = weight.find(userWord);
- if (fn>=0 || fc>=0 || fw>=0)
- cout << animal.name << " " << animal.color << " " << animal.weight << "\n";
- }
- P1.close();
- return;
- }
- //удаление
- void uDelete(){
- const int n = 50;
- char mas[n];
- animals animal[n];
- string userWord, weight[n], buf, memory;
- int fn = 0, fc = 0, fw = 0, len = 0;
- ifstream P2;
- P2.open("input.txt");
- cout << "Введите фразу для поиска и дальнейшего удаления строки: ";
- cin >> userWord;
- //узнаём длину файла и переписываем его в массивы
- for (len; !P2.eof(); len++){
- P2 >> animal[len].name;
- P2 >> animal[len].color;
- P2 >> animal[len].weight;
- weight[len] = animal[len].weight;
- }
- P2.close();
- ofstream P1;
- P1.open("input.txt");//
- P1.close(); //очищаем файл
- P1.open("input.txt", ios::app); //открываем на дозапись
- for (int i = 0; i < len-1; i++){
- //переводим число в строку
- weight[i] = to_string(animal[i].weight);
- //ищем введённое слово во всех масиивах
- fn = animal[i].name.find(userWord);
- fc = animal[i].color.find(userWord);
- fw = weight[i].find(userWord);
- //если совпадений нет, записываем строку в файл
- if (fn==-1 && fc==-1 && fw==-1){
- P1 << animal[i].name << " " << animal[i].color << " " << animal[i].weight << endl;
- }
- }
- P1.close();
- output();
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement