Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <locale.h>
- #define STACK struct list *
- #define ELEMENT struct list
- int summa=0;
- struct element
- {
- int value;
- float price;
- };
- struct list
- {
- struct element data;
- struct list *next;
- };
- struct element add(void);
- struct element Pop (STACK *pstack);
- int Push (struct element x, STACK *pstack);
- int Empty(STACK pstack)
- {
- if (pstack==NULL)
- return 1;
- else
- return 0;
- }
- void show(struct list *begin)
- {
- struct element x;
- if(Empty(begin)) return;
- while(begin)
- {
- x=begin->data;
- printf("Количество:%d Цена:%.3f\n", x.value, x.price);
- begin=begin->next;
- }
- }
- int Push (struct element x, STACK *pstack)
- {
- ELEMENT *ins;
- ins = (ELEMENT *) malloc (sizeof (ELEMENT));
- if (ins==NULL) return 0;
- ins->data = x;
- ins->next = *pstack;
- *pstack = ins;
- return 1;
- }
- STACK sell(struct list *begin)
- {
- struct element x;
- puts("Сколько нужно продать?");
- int val;
- float pricetmp;
- int valuetmp;
- float sum=0;
- scanf("%d", &val);
- if(val>summa)
- {
- while(!Empty(begin))
- {
- x=Pop(&begin);
- valuetmp=x.price;
- pricetmp=x.price*1.2;
- sum+=x.value*x.price*1.2;
- printf("Продано товаров %d на сумму %.3f Общая сумма: %.3f\n", x.value, pricetmp, sum);
- }
- printf("Нужно %d\n", abs(summa-val));
- summa=0;
- return NULL;
- }
- while(!Empty(begin))
- {
- x=Pop(&begin);
- if(x.value>val)
- {
- pricetmp=x.price*1.2;
- sum=(float)val*pricetmp;
- x.value-=val;
- printf("%d штук было продано по цене %.3f на сумму %.3f\n", val, pricetmp, sum); printf("Осталось из этой партии %d\n", x.value);
- summa-=val;
- Push(x, &begin);
- show(begin);break;
- }
- else
- {
- val-=x.value;
- pricetmp=x.price*1.2;
- sum= (float)x.value*pricetmp;
- summa-=x.value;
- printf("%d штук было продано по цене %f %f\n", x.value, pricetmp, sum);
- }
- }
- return begin;
- }
- int main()
- {
- struct list *begin=NULL;
- struct element *x;
- setlocale( LC_ALL, "rus");
- int key=-1, i;
- while(key)
- {
- printf("_____________________________\n");
- printf("|1.| Закупить товар |\n");
- printf("|__|_________________________|\n");
- printf("|2.| Продать товар |\n");
- printf("|__|_________________________|\n");
- printf("|0.| Выход |\n");
- printf("|__|_________________________|\n");
- printf("|Всего на складе %12d|\n", summa);
- printf("|____________________________|\n");
- scanf("%d", &key);
- system("CLS");
- switch(key)
- {
- case 1:
- {
- Push(add(),&begin);break;
- }
- case 2:
- {
- begin=sell(begin);system("pause");break;
- }
- }
- }
- return 0;
- }
- struct element Pop (STACK *pstack) //удаление элемента
- {
- ELEMENT *del;
- struct element x;
- del = *pstack;
- *pstack = (*pstack)->next;
- x=del->data;
- free (del);
- return x;
- }
- struct element add(void)
- {
- struct element x;
- ELEMENT p;
- int name;
- printf("Закупить товара:");
- scanf("%d", &x.value);
- summa+=x.value;
- printf("\nЦена закупки:");
- scanf("%f", &x.price);
- return x;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement