#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<windows.h>
#include <crtdbg.h>
//#include <malloc.h>
struct food{
int calories;
int weight;
char name[20];
void begin();
int energy(){ return calories*weight/100;}
//int(food::*pfunc)() = &energy;
};
char begin(int num);
void food::begin(){
system("cls");
setlocale(0,"");
printf("введите название еды: ");
scanf("%s",name);
printf("\n какова его калорийность (на 100 грамм): ");
scanf("%d",&calories);
printf("\n вес ингредиента (в грамма):");
scanf("%d",&weight);
printf("\n ингредиент добавлен");
Sleep(900);
system("cls");
return;
}
int main(){
setlocale(0,"");
int n_food=0;
food *eat;// = (food*)malloc(20 * sizeof(food));
while (1) {
char c = begin(n_food);
switch (c) {
case 'a' :
{
food* temp = new food[n_food + 1];
for (int i = 0; i < n_food; i++)
{
temp[i] = eat[i]; // копируем во временный объект
}
if(n_food)delete[] eat;
eat = temp;
eat[n_food].begin();
n_food++;
}
break;
case 'p':
{
system("cls");
printf("выберите продукт и нажмите Enter:\n");
for (int i = 0; i < n_food; i++) {
printf("%d -- %s \n", i + 1, eat[i].name);
}
int n;
scanf("%d", &n);
printf("\n %d калорий в %s", eat[n - 1].energy(), eat[n - 1].name);
_getch();
system("cls");
}
break;
case 's': {
system("cls");
beg:
printf("калорийность какого количества продуктов вы хотите просуммировать(max %d):\n", n_food);
int n;
scanf("%d", &n);
if (n <= n_food && n > 0) {
for (int i = 0; i < n_food; i++) {
printf("%d -- %s \n", i + 1, eat[i].name);
}
printf("выберите продукты:\n");
int prod[20];
for (int i = 0; i < n; i++) {
scanf("%d", &prod[i]);
}
int sum = 0;
for (int j = 0; j < n; j++) {
sum += eat[prod[j] - 1].energy();
}
printf("\n %d калорий ", sum);
_getch();
system("cls");
}
else {
printf("введите корректные данные!");
goto beg;
}
}
break;
case 'q': {
if(n_food)delete[] eat;
_CrtDumpMemoryLeaks();
return 0;
}
}
}
}
char begin(int num){
char c;
startB:
if(num == 0){
printf(" a -- добавить новый продукт \n q -- выход\n");
c=_getch();
if((c!='a')&&(c!='q')){
system("cls");
printf("\n введите корректные данные \n");
_getch();
system("cls");
goto startB;
}
}
else if(num==1){
printf(" a -- добавить новый продукт \n");
printf(" p -- расчитать калории продукта\n");
printf(" q -- выход \n");
c=_getch();
if((c!='a')&&(c!='q')&&(c!='p')){
system("cls");
printf("\n введите корректные данные \n");
_getch();
system("cls");
goto startB;
}
}
else if(num>1){
printf(" a -- добавить новый продукт \n");
printf(" p -- расчитать калории продукта\n");
printf(" s -- расчитать калории нескольких продуктов\n");
printf(" q -- выход \n");
c=_getch();
if((c!='a')&&(c!='q')&&(c!='p')&&(c!='s')){
system("cls");
printf("\n введите корректные данные \n");
_getch();
system("cls");
goto startB;
}
}
return c;
}