Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <windows.h>
- #include <math.h>
- typedef struct {
- char name[20]; // наименование продукта
- int count; // количество продуктов
- int preis; // цена продукта
- }Product;
- // добавка продукта
- void add(Product* pr) {
- printf("\nВведите наименование продукта: ");
- scanf("%19s", pr->name);
- printf("Количество продуктов: ");
- scanf("%d", &pr->count);
- printf("И цену: ");
- scanf("%d", &pr->preis);
- printf("\nВаш продукт успешно добавлен.\n");
- }
- // удаление продукта
- void del(Product* pr, int count) {
- int n;
- printf("\nВведите номер продукта, который хотите удалить из списка: ");
- scanf("%d", &n);
- n--;
- while (n < 0 || n > count) {
- printf("\nТакого номера нет, введите существующий: ");
- scanf("%d", &n);
- n--;
- }
- pr[n] = pr[count];
- }
- // таблица продукта
- void table(Product* pr, int count) {
- printf("\n\n\nСписок продуктов:\n");
- printf("Наименование\tКол-во\tЦена\n");
- for (int i = 0; i < count; i++) {
- printf("%s\t\t%d\t%d\n", pr[i].name, pr[i].count, pr[i].preis);
- }
- }
- // по указанной начальной подстроке названия
- void search_name(Product* pr, int count) {
- boolean f = true;
- char name[20];
- printf("Введите наименования продукта: ");
- scanf("%19s", &name);
- printf("\nСписок продуктов:\n");
- for (int i = 0; i < count; i++) {
- if (strcmp(name, pr[i].name) == 0) {
- printf("%s\t\t%d\t%d\n", pr[i].name, pr[i].count, pr[i].preis);
- f = false;
- }
- }
- if (f)
- printf("Список подходящих продуктов пуст.");
- }
- // по заданному диапазону цен
- void search_preis(Product* pr, int count) {
- int max, min;
- do{
- printf("Введите диапазон цен, для поиска продуктов: ");
- scanf("%d%d", &min, &max);
- if (min > max) {
- int x = min;
- min = max;
- max = x;
- }
- }while(max < 0 || min < 0);
- boolean f = true;
- printf("\nСписок продуктов:\n");
- for (int i = 0; i < count; i++) {
- if (pr[i].preis >= min && pr[i].preis <= max) {
- printf("%s\t\t%d\t%d\n", pr[i].name, pr[i].count, pr[i].preis);
- f = false;
- }
- }
- if (f)
- printf("Список подходящих продуктов пуст.");
- }
- int menu(int count) {
- int use;
- printf("\n\n\t\tМеню\n");
- printf("1. Вывод списка на экран.\n");
- printf("2. Добавить продукт в список.\n");
- printf("3. Удалить продукт из списка.\n");
- printf("4. Поиск по названию.\n");
- printf("5. Поиск по заданному диапазону цен.\n");
- printf("6. Для выхода из системы.\n");
- if (count == 1) {
- printf("Ваш список пуст добавьте в него продукт.\n");
- return 2;
- }
- else {
- do {
- printf("Введите цифру пункта, который вы желаете выполнить.\n");
- scanf("%d", &use);
- } while (use < 1 || use > 6);
- return use;
- }
- }
- void main() {
- system("chcp 1251");
- int count = 1;
- Product* pr;
- pr = (Product*)malloc(sizeof(Product) * count);
- while (count != -1) {
- int i = menu(count);
- switch (i)
- {
- case 1:
- table(pr, count - 1);
- break;
- case 2:
- add(&pr[count - 1]);
- count++;
- pr = (Product*)realloc((void*)pr, sizeof(Product) * count);
- break;
- case 3:
- del(pr, count - 2);
- count--;
- pr = (Product*)realloc((void*)pr, sizeof(Product) * count);
- break;
- case 4:
- search_name(pr, count);
- break;
- case 5:
- search_preis(pr, count);
- break;
- default:
- count = -1;
- break;
- }
- }
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement