Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <windows.h>
- #include <math.h>
- typedef struct {
- char name[20]; // нименование продукта
- int cal, bel, jir, ugl; // калорийность, белки, жиры, углеводы
- char land[20]; // страна производства
- int preis; // цена продукта
- }Product;
- void add(Product* pr) {
- printf("\nВведите наименование продукта: ");
- scanf_s("%19s", &pr->name);
- printf("\nКалорийность, количество белков, жиров и углеводов: ");
- scanf_s("%d%d%d%d", &pr->cal, &pr->bel, &pr->jir, &pr->ugl);
- printf("\nСтрану происхождения: ");
- scanf_s("%19s", &pr->land);
- printf("\nИ цену: ");
- scanf_s("%d", &pr->preis);
- printf("\nВаш продукт успешно добавлен.\n");
- }
- void del(Product* pr, int count) {
- int n;
- do {
- printf("\nВведите номер продукта, который хотите удалить из списка: ");
- scanf_s("%d", &n);
- } while (n < 1 || n > count);
- pr[n] = pr[count];
- }
- void table(Product* pr, int count) {
- printf("\n\n\nСписок продуктов:\n");
- printf("Наименование\t\tКалорийность\tБелки\tЖиры\tУглеводы\tСтрана\tЦена\n");
- for (int i = 0; i < count; i++) {
- printf("%s\t\t%d\t%d\t%d\t%d\t%s\t%d\n", pr[i].name, pr[i].cal, pr[i].bel, pr[i].jir, pr[i].ugl, pr[i].land, pr[i].preis);
- }
- }
- void search_land_best_cal(Product* pr, int count) {
- float max1 = 0, max2 = 0, max3 = 0;
- int name1 = -1, name2 = -1, name3 = -1;
- char land[20];
- printf("Введите страну производителя: ");
- scanf_s("%19s", &land);
- for (int i = 0; i < count; i++) {
- if (pr[i].land == land) {
- if (max1 < pr[i].cal) {
- max3 = max2; max2 = max1; max1 = pr[i].cal;
- name3 = name2; name2 = name1; name1 = i;
- }
- else if (max2 < pr[i].cal) {
- max3 = max2; max2 = pr[i].cal;
- name3 = name2; name2 = i;
- }
- else if (max3 < pr[i].cal) {
- max3 = pr[i].cal;
- name3 = i;
- }
- }
- }
- if (name1 == -1 && name2 == -1 && name3 == -1)
- printf("Продуктов, которые имеют страну производстава %s, нет в списке.\n", land);
- else {
- printf("Список наиболее калорийных продуктов, по заданной стране:\n");
- printf("1. %s\n", pr[name1].name);
- if (name2 != -1)
- printf("2. %s\n", pr[name2].name);
- if (name3 != -1)
- printf("3. %s\n", pr[name3].name);
- }
- }
- void search_best_cal_no_ugl(Product* pr, int count) {
- float bestcal = -1;
- int bestpr = -1;
- for (int i = 0; i < count; i++) {
- if (bestcal < pr[i].cal / pr[i].preis && pr[i].ugl == 0) {
- bestcal = pr[i].cal / pr[i].preis;
- bestpr = i;
- }
- }
- if (bestpr == -1)
- printf("Продукт у которого не имеется углеводов в списке не оказалось.");
- else
- printf("Энергетически наиболее эффективный продукт это %s, в нем содержится %2.f калорий в расчете на рубль.", pr[bestpr].name, bestcal);
- }
- int menu() {
- 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");
- printf("Введите цифру пункта, который вы желаете выполнить.\n");
- do {
- scanf_s("%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();
- switch (i)
- {
- case 1:
- table(pr, count);
- break;
- case 2:
- add(&pr[count-1]);
- count++;
- pr = (Product*)realloc((void*)pr, sizeof(Product) * count);
- break;
- case 3:
- del(pr, count);
- count--;
- pr = (Product*)realloc((void*)pr, sizeof(Product) * count);
- break;
- case 4:
- search_land_best_cal(pr, count);
- break;
- case 5:
- search_best_cal_no_ugl(pr, count);
- break;
- default:
- count = -1;
- break;
- }
- }
- }
- /*
- 1) создание новой записи в списке; +
- 2) вывод списка на экран в табличном виде; +
- 3) поиск записей в списке;
- 4) удаление записи из списка. +
- 5) Сделать меню */
- /* Обеспечить поиск а) трёх наиболее
- калорийных продуктов, произведенных в заданной стране;
- б) энергетически наиболее эффективного продукта (имеющего
- наиболее высокую калорийность в расчете на рубль), не
- содержащего углеводов. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement