Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. using namespace std;
  4.  
  5. const int N = 8;
  6.  
  7. struct Queue
  8. {
  9. float data_queue[N];
  10. int last;
  11. };
  12. void queue_creation(Queue *Q)
  13. {
  14. Q->last = 0;
  15. }
  16. bool queue_empty(Queue *Q)
  17. {
  18. if (Q->last == 0) return true;
  19. else return false;
  20. }
  21. bool queue_full(Queue *Q)
  22. {
  23. if (Q->last == N) return true;
  24. else return false;
  25. }
  26. void enqueue(Queue *Q, float value) // Добавление элемента в очередь
  27. {
  28. if (queue_full(Q) == true)
  29. {
  30. printf("'error overfow': Queue is overflowed");
  31. return;
  32. }
  33. Q->data_queue[Q->last++] = value;
  34. }
  35. float dequeue(Queue *Q)
  36. {
  37. if (queue_empty(Q) != false)
  38. {
  39. return 0;
  40. }
  41. float returned = Q->data_queue[0];
  42. for (int i = 1 i <=Q->last; i++)
  43. {
  44. Q->data_queue[i] = Q->data_queue[i + 1];
  45. }
  46. Q->last--;
  47. return returned;
  48.  
  49. }
  50. int queue_size(Queue *Q)
  51. {
  52. return Q->last;
  53. }
  54. void show_queue(Queue *Q)
  55. {
  56. printf("\nQueue:");
  57. if (queue_empty(Q) == true)
  58. {
  59. printf("\nThe Queue is empty");
  60. //return;
  61. }
  62.  
  63. for (int i = 1; i <= Q->last; i++)
  64. {
  65. if (i == 1)
  66. printf("\n%d. %.2f <-head", i, Q->data_queue[i - 1]);
  67. else if (i == (Q->last))
  68. printf("\n%d. %.2f <-tail\n", i, Q->data_queue[i - 1]);
  69. else
  70. printf("\n%d. %.2f", i, Q->data_queue[i - 1]);
  71. }
  72. }
  73.  
  74. struct List
  75. {
  76. float data_list[N + 2];
  77. int Last;
  78. };
  79.  
  80. void list_creation(List *L)
  81. {
  82. L->Last = 0;
  83. }
  84. int list_size(List L) // Определение размера списка
  85. {
  86. return L.Last;
  87. }
  88.  
  89. float list_get(List *L, int number)
  90. {
  91. if (number < L->Last)
  92. {
  93. return L->data_list[number]; // Операция получения некоторого элемента списка
  94. }
  95. else
  96. {
  97. printf("Error");
  98. return NULL; }
  99. }
  100. void list_insert_n(List *L, int number, float value) //Вставляем элемент в некоторое место в списке, причем сдвигаем элементы, которые идут за ним
  101. {
  102. if ((number)> L->Last)
  103. printf("\nError.");
  104. else
  105. {
  106. for (int i = N; i >= number; i--)
  107. {
  108. L->data_list[i] = L->data_list[i - 1];
  109. }
  110. L->data_list[number - 1] = value;
  111.  
  112. }
  113. }
  114. void list_delete(List *L, int number)
  115. {
  116. if (number > L->Last)
  117. printf("\n'error': The element with this number doesn't exist");
  118. else
  119. {
  120. for (int i = number - 1; i <= L->Last - 1 ; i++) //Удаляем элемент со списка и сдвигаем список влево
  121. {
  122. L->data_list[i] = L->data_list[i + 1];
  123.  
  124. }
  125. L->Last--;
  126. }
  127.  
  128. }
  129. void list_insert_end(List* L, float value)
  130. {
  131. L->data_list[L->Last+1] = value; //Вставка элемента в конец списка
  132. L->Last++;
  133. }
  134. void show_list(List * L)
  135. {
  136. printf("\nList");
  137. if (list_size(*L) == 0)
  138. {
  139. printf("\nList is empty");
  140. }
  141. for (int i = 1; i <= L->Last; i++)
  142. {
  143. printf("\n%d. %.2f", i, L.data_list[i - 1]);
  144. }
  145. }
  146. int main()
  147. {
  148. Queue Q;
  149. queue_creation(&Q);
  150. int count_for_user;
  151. printf("Enter quantity of elements ");
  152. scanf("%d", &count_for_user);
  153. List L;
  154. list_creation(&L);
  155. float value;
  156. for (int i = 0; i < count_for_user; i++)
  157. {
  158. printf("Enter the element ");
  159. scanf("%f", &value);
  160. list_insert_end(&L, value);
  161. }
  162. show_list(&L);
  163. printf("\n");
  164. float Sum = 0;
  165. float element;
  166. int count = list_size(L);
  167. for (int i = 1,j=1; i <= count; i++)
  168. {
  169. element = list_get(&L, j);
  170. if (element>0)
  171. {
  172. list_delete(&L, j+1);
  173. enqueue(&Q, (element+Sum));
  174. Sum = Sum+element;
  175.  
  176. }
  177. else j++;
  178.  
  179.  
  180. }
  181. show_list(&L);
  182. printf("\n\n");
  183.  
  184. show_queue(&Q);
  185. getch();
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement