Advertisement
Merkava

Untitled

May 20th, 2014
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <locale.h>
  5. #define STACK struct list *
  6. #define ELEMENT struct list
  7. int summa=0;
  8. struct element
  9. {
  10. int value;
  11. float price;
  12. };
  13. struct list
  14. {
  15. struct element data;
  16. struct list *next;
  17. };
  18.  
  19. struct element add(void);
  20. struct element Pop (STACK *pstack);
  21. int Push (struct element x, STACK *pstack);
  22. int Empty(STACK pstack)
  23. {
  24. if (pstack==NULL)
  25. return 1;
  26. else
  27. return 0;
  28. }
  29. void show(struct list *begin)
  30. {
  31. struct element x;
  32. if(Empty(begin)) return;
  33. while(begin)
  34. {
  35. x=begin->data;
  36. printf("Количество:%d Цена:%.3f\n", x.value, x.price);
  37. begin=begin->next;
  38. }
  39. }
  40. int Push (struct element x, STACK *pstack)
  41. {
  42. ELEMENT *ins;
  43. ins = (ELEMENT *) malloc (sizeof (ELEMENT));
  44. if (ins==NULL) return 0;
  45. ins->data = x;
  46. ins->next = *pstack;
  47. *pstack = ins;
  48. return 1;
  49. }
  50. STACK sell(struct list *begin)
  51. {
  52. struct element x;
  53. puts("Сколько нужно продать?");
  54. int val;
  55. float pricetmp;
  56. int valuetmp;
  57. float sum=0;
  58. scanf("%d", &val);
  59. if(val>summa)
  60. {
  61. while(!Empty(begin))
  62. {
  63. x=Pop(&begin);
  64. valuetmp=x.price;
  65. pricetmp=x.price*1.2;
  66. sum+=x.value*x.price*1.2;
  67. printf("Продано товаров %d на сумму %.3f Общая сумма: %.3f\n", x.value, pricetmp, sum);
  68.  
  69. }
  70. printf("Нужно %d\n", abs(summa-val));
  71. summa=0;
  72. return NULL;
  73. }
  74. while(!Empty(begin))
  75. {
  76.  
  77. x=Pop(&begin);
  78.  
  79. if(x.value>val)
  80. {
  81.  
  82. pricetmp=x.price*1.2;
  83. sum=(float)val*pricetmp;
  84. x.value-=val;
  85. printf("%d штук было продано по цене %.3f на сумму %.3f\n", val, pricetmp, sum); printf("Осталось из этой партии %d\n", x.value);
  86. summa-=val;
  87. Push(x, &begin);
  88. show(begin);break;
  89. }
  90. else
  91. {
  92. val-=x.value;
  93. pricetmp=x.price*1.2;
  94. sum= (float)x.value*pricetmp;
  95. summa-=x.value;
  96. printf("%d штук было продано по цене %f %f\n", x.value, pricetmp, sum);
  97. }
  98. }
  99. return begin;
  100. }
  101. int main()
  102. {
  103. struct list *begin=NULL;
  104. struct element *x;
  105. setlocale( LC_ALL, "rus");
  106. int key=-1, i;
  107. while(key)
  108. {
  109. printf("_____________________________\n");
  110. printf("|1.| Закупить товар |\n");
  111. printf("|__|_________________________|\n");
  112. printf("|2.| Продать товар |\n");
  113. printf("|__|_________________________|\n");
  114. printf("|0.| Выход |\n");
  115. printf("|__|_________________________|\n");
  116. printf("|Всего на складе %12d|\n", summa);
  117. printf("|____________________________|\n");
  118. scanf("%d", &key);
  119. system("CLS");
  120. switch(key)
  121. {
  122. case 1:
  123. {
  124. Push(add(),&begin);break;
  125. }
  126. case 2:
  127. {
  128. begin=sell(begin);system("pause");break;
  129. }
  130. }
  131. }
  132. return 0;
  133. }
  134.  
  135. struct element Pop (STACK *pstack) //удаление элемента
  136. {
  137. ELEMENT *del;
  138. struct element x;
  139. del = *pstack;
  140. *pstack = (*pstack)->next;
  141. x=del->data;
  142. free (del);
  143. return x;
  144. }
  145.  
  146. struct element add(void)
  147. {
  148. struct element x;
  149. ELEMENT p;
  150. int name;
  151. printf("Закупить товара:");
  152. scanf("%d", &x.value);
  153. summa+=x.value;
  154. printf("\nЦена закупки:");
  155. scanf("%f", &x.price);
  156. return x;
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement