Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "iostream"
- #define _USE_MATH_DEFINES
- #include "math.h"
- #include "string"
- #include <iomanip>
- #include <windows.h>
- #include <fstream>
- //setlocale(LC_ALL, "Russian");
- using namespace std;
- // конечная цель - односвязный список структур
- /*
- 1. Структура с вариантами
- 2. односвязный список (*p).next; p ->next;
- */
- struct car
- {
- char Case; // варианты структуры, зависящие 0 - 1вариант, 1 - 2вариант...
- union
- {
- struct
- {
- int num_doors;
- }hatchback;//хетчбек
- struct
- {
- char krisha;
- }cabriolet;//кабриолет
- };
- char name[100];
- int capacity;
- int num_of_steps[3]; // 5, 6, 8
- car *next;
- };
- /*struct information
- {
- };*/
- car *g = NULL,*p;
- void del()
- {
- if (g != NULL)
- {
- car *a = g;
- g = g -> next;
- delete a;
- cout << "Удаление выполнено\n";
- }
- else
- cout << "Список пуст\n";
- cin.ignore();
- cin.ignore();
- system("cls");
- }
- void delNum()
- {
- cout << "Введите номер удаляемого элемента: ";
- int a;
- cin >> a;
- bool error = false;
- if (g != NULL)
- {
- car *b = g;
- if (g -> next == NULL)
- if (a == 1)
- {
- delete b;
- cout << "Удаление выполнено\n";
- }
- else
- cout << "Такого элемента не существет\n";
- else
- {
- car *buf = g;
- while (--a)
- {
- if (b -> next != NULL)
- {
- buf = b;
- b = b -> next;
- }
- else
- {
- error = true;
- cout << "Такого элемента не существет\n";
- break;
- }
- }
- if (!error)
- {
- buf -> next = b -> next;
- delete b;
- cout << "Удаление выполнено\n";
- }
- }
- }
- else
- cout << "Список пуст\n";
- cin.ignore();
- cin.ignore();
- system("cls");
- }
- void input(car *out)
- {
- cout << "Введите название машины:\n";
- cin >> out -> name;
- cout << "Введите тип машины:\n1.Хетчбек\n2.Кабриолет\n";
- cin >> out -> Case;
- switch (out -> Case)
- {
- case '1':
- {
- cout << "Введите количество дверей\n";
- cin >> out -> hatchback.num_doors;
- break;
- }
- case '2':
- {
- cout << "Введите тип крыши(складывающаяся или нет)\n";
- cin >> out -> cabriolet.krisha;
- break;
- }
- }
- cout << "Введите мощность двигателя: ";
- cin >> out -> capacity;
- cout << "введите 0 или 1 в зависимости от количества ступеней коробки передач:\n";
- cout << " 5: ";
- cin >> out -> num_of_steps[0];
- cout << " 6:";
- cin >> out -> num_of_steps[1];
- cout << " 8:";
- cin >> out -> num_of_steps[2];
- }
- void ProgDel()
- {
- while (g != NULL)
- {
- car *p = g;
- g = g -> next;
- delete p;
- }
- }
- void one(bool a)
- {
- if (a)
- cout << "присутствует\n";
- else
- cout << "отсутствует\n";
- }
- void output()
- {
- if (g != NULL)
- {
- p = g;
- int k = 0;
- while (p != NULL)
- {
- cout << "*********************************************************\n";
- k++;
- cout << "Название машины: " << p -> name << "\n";
- cout << k << ") Тип машины: ";
- switch (p -> Case)
- {
- case '1':
- cout << "Хетчбек и количество дверей в нем " << p -> hatchback.num_doors;
- break;
- case '2':
- cout << "Кабриолет и тип крыши в нем " << p -> cabriolet.krisha;
- break;
- }
- cout << "\nКоличество лошадиных сил: " << p -> capacity << "\n";
- for (int i = 0; i < 3; i++)
- {
- switch (i)
- {
- case 0:
- cout << "Пятиступка ";
- one(p -> num_of_steps[i]);
- break;
- case 1:
- cout << "Шестиступенчатая ";
- one(p -> num_of_steps[i]);
- break;
- case 2:
- cout << "Восьмиступенчатый монстр ";
- one(p -> num_of_steps[i]);
- break;
- }
- }
- p = p -> next;
- }
- }
- else
- {
- cout << "Список пуст\n";
- }
- cin.ignore();
- cin.ignore();
- system("cls");
- }
- void AddInStack()
- {
- cout << "*********************************************************\n";
- car *a;
- a = new car;
- input(a);
- if (g != NULL)
- {
- a -> next = g;
- g = a;
- }
- else
- {
- g = a;
- g -> next = NULL;
- }
- system("cls");
- }
- void open()
- {
- ifstream fin("file.txt"); // открыли файл для чтения
- char buff[50];
- fin.getline(buff, 50); // считали строку из файла
- fin.close(); // закрываем файл
- cout << buff << endl; // напечатали эту строку
- }
- void save()
- {
- while (g != NULL)
- {
- ofstream fout;
- fout.open("file.txt");
- //
- fout << g -> name << "|" << g -> capacity;
- fout.close();
- }
- }
- void main()
- {
- open();
- typedef void (*item)();
- item mas[] = {AddInStack, output, del, delNum, ProgDel};
- setlocale(LC_ALL, "Russian");
- //struct *a = Str;
- //int *b = str.param;
- int a = 0;
- while (true)
- {
- cout << "*********************************************************\n";
- cout << "Вы находитесь в меню, выберите действие:\n1) добавить машину\n2) вывести список машин\n"<<
- "3) удалить первую машину из списка\n4) удалить n-ную по счету машину\n5) выйти\n";
- cin >> a;
- if (a >= 1 && a <= 4)
- (*mas[a - 1])();
- else
- if (a == 5)
- {
- (*mas[a - 1])();
- break;
- }
- else
- {
- cout << "Такого пункта не существует";
- cin.ignore();cin.ignore();
- system("cls");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment