Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <Windows.h>
- #include <cstdlib>
- using namespace std;
- struct storage {
- char name[20];
- unsigned int number : 14;
- double cost;
- float percent;
- };
- union
- {
- int in;
- double dou;
- float fl;
- }t;
- enum choice { input = 1, output, sorting, search, change, deleting, exits };
- enum inside_choice { name = 1, cost, number, persent };
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int n, i;
- cout << "Введите количество товаров ";
- n = 1;
- storage *a = new storage[n];
- while (n != 0) {
- system("cls");
- cout << "+---------------------------------------------------+" << "\n";
- cout << "|1) Ввод массива структур; |" << "\n";
- cout << "|2) Вывод массива структур; |" << "\n";
- cout << "|3) Сортировка массива структур; |" << "\n";
- cout << "|4) Поиск в массиве структур по заданному параметру;|" << "\n";
- cout << "|5) Изменение заданной структуры; |" << "\n";
- cout << "|6) Удаление структуры из массива; |" << "\n";
- cout << "|7) Выход. |" << "\n";
- cout << "+---------------------------------------------------+" << "\n";
- cout << "Введите выбранный пункт ";
- cin >> t.in;
- switch (t.in)
- {
- case input: {
- cout << "Введите количество товаров ";
- cin >> n;
- a = new storage[n];
- for (i = 0; i < n; i++) {
- cout << "Введите название товара ";
- cin >> (a + i)->name;
- cout << "Введите цену ";
- cin >> t.dou;
- a[i].cost = t.dou;;
- cout << "Введите количество товаров ";
- cin >> t.in;
- a[i].number = t.in;
- cout << "Введите процент торговой надбавки ";
- cin >> t.fl;
- a[i].percent = t.fl;
- }
- for (i = 0; i < n; i++)
- for (int z = i + 1; z < n; z++)
- if (strcmp(a[i].name, a[z].name)>0) {
- swap(a[z], a[i]);
- }
- break;
- }
- case output:
- {
- for (i = 0; i < n; i++)
- cout << i + 1 << " " << (a + i)->name << "\t" << (a + i)->cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
- system("pause");
- break;
- }
- case sorting:
- {
- cout << "1)Название товара " << "\n" << "2)Цена" << "\n" << "3)Количество товаров" << "\n" << "4)Процент торговой надбавки" << "\n" << "Введите параметр для сортировки ";
- cin >> t.in;
- switch (t.in)
- {
- case name: {
- for (i = 0; i < n; i++)
- for (int z = i + 1; z < n; z++)
- if (strcmp(a[i].name, a[z].name) > 0) {
- swap(a[z], a[i]);
- }
- break;
- }
- case cost: {
- for (i = 0; i < n; i++)
- for (int z = i + 1; z < n; z++)
- if (a[i].cost > a[z].cost) {
- swap(a[z], a[i]);
- }
- break;
- }
- case number: {
- for (i = 0; i < n; i++)
- for (int z = i + 1; z < n; z++)
- if (a[i].number > a[z].number) {
- swap(a[z], a[i]);
- }
- break;
- }
- case persent: {
- for (i = 0; i < n; i++)
- for (int z = i + 1; z < n; z++)
- if (a[i].percent > a[z].percent) {
- swap(a[z], a[i]);
- }
- break;
- }
- }
- break;
- }
- case search: {
- cout << "1)Название товара " << "\n" << "2)Цена" << "\n" << "3)Количество товаров" << "\n" << "4)Процент торговой надбавки" << "\n" << "Введите параметр для поиска ";
- cin >> t.in;
- switch (t.in)
- {
- case name: {
- char w[20];
- cout << "Введите название ";
- cin >> w;
- for (i = 0; i < n; i++)
- if (strcmp(a[i].name, w) == 0) {
- cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
- system("pause");
- }
- break;
- }
- case cost: {
- cout << "Введите значение ";
- cin >> t.dou;
- for (i = 0; i < n; i++)
- if (a[i].cost == t.dou) {
- cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
- system("pause");
- }
- break;
- }
- case number: {
- cout << "Введите значение ";
- cin >> t.in;
- for (i = 0; i < n; i++)
- if (a[i].number == t.in) {
- cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
- system("pause");
- }
- break;
- }
- case persent: {
- cout << "Введите значение ";
- cin >> t.fl;
- for (i = 0; i < n; i++)
- if (a[i].percent == t.fl) {
- cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
- system("pause");
- }
- break;
- }
- }
- break;
- }
- case change: {
- for (i = 0; i < n; i++)
- cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
- cout << "Введите номер строки для изменения";
- int q;
- cin >> q;
- cout << "Введите название нового товара ";
- cin >> a[q - 1].name;
- cout << "Введите новую цену ";
- cin >> t.dou;
- a[q - 1].cost = t.dou;
- cout << "Введите новое количество товаров ";
- cin >> t.in;
- a[q - 1].number = t.in;
- cout << "Введите новый процент торговой надбавки ";
- cin >> t.fl;
- a[q - 1].percent = t.fl;
- break;
- }
- case deleting: {
- for (i = 0; i < n; i++)
- cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
- cout << "Введите номер структуры для удаления ";
- cin >> t.in;
- storage *b=new storage[n-1];
- for (int j = 0, m = 0; j < n; j++, m++)
- if (j != t.in-1)
- b[m] = a[j];
- else m--;
- delete[] a;
- n--;
- a = b;
- break;
- }
- case exits:
- {
- delete[] a;
- exit(0);
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement