Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- using namespace std;
- const int N = 8;
- struct Queue
- {
- float data_queue[N];
- int last;
- };
- void queue_creation(Queue *Q)
- {
- Q->last = 0;
- }
- bool queue_empty(Queue *Q)
- {
- if (Q->last == 0) return true;
- else return false;
- }
- bool queue_full(Queue *Q)
- {
- if (Q->last == N) return true;
- else return false;
- }
- void enqueue(Queue *Q, float value) // Добавление элемента в очередь
- {
- if (queue_full(Q) == true)
- {
- printf("'error overfow': Queue is overflowed");
- return;
- }
- Q->data_queue[Q->last++] = value;
- }
- float dequeue(Queue *Q)
- {
- if (queue_empty(Q) != false)
- {
- return 0;
- }
- float returned = Q->data_queue[0];
- for (int i = 1 i <=Q->last; i++)
- {
- Q->data_queue[i] = Q->data_queue[i + 1];
- }
- Q->last--;
- return returned;
- }
- int queue_size(Queue *Q)
- {
- return Q->last;
- }
- void show_queue(Queue *Q)
- {
- printf("\nQueue:");
- if (queue_empty(Q) == true)
- {
- printf("\nThe Queue is empty");
- //return;
- }
- for (int i = 1; i <= Q->last; i++)
- {
- if (i == 1)
- printf("\n%d. %.2f <-head", i, Q->data_queue[i - 1]);
- else if (i == (Q->last))
- printf("\n%d. %.2f <-tail\n", i, Q->data_queue[i - 1]);
- else
- printf("\n%d. %.2f", i, Q->data_queue[i - 1]);
- }
- }
- struct List
- {
- float data_list[N + 2];
- int Last;
- };
- void list_creation(List *L)
- {
- L->Last = 0;
- }
- int list_size(List L) // Определение размера списка
- {
- return L.Last;
- }
- float list_get(List *L, int number)
- {
- if (number < L->Last)
- {
- return L->data_list[number]; // Операция получения некоторого элемента списка
- }
- else
- {
- printf("Error");
- return NULL; }
- }
- void list_insert_n(List *L, int number, float value) //Вставляем элемент в некоторое место в списке, причем сдвигаем элементы, которые идут за ним
- {
- if ((number)> L->Last)
- printf("\nError.");
- else
- {
- for (int i = N; i >= number; i--)
- {
- L->data_list[i] = L->data_list[i - 1];
- }
- L->data_list[number - 1] = value;
- }
- }
- void list_delete(List *L, int number)
- {
- if (number > L->Last)
- printf("\n'error': The element with this number doesn't exist");
- else
- {
- for (int i = number - 1; i <= L->Last - 1 ; i++) //Удаляем элемент со списка и сдвигаем список влево
- {
- L->data_list[i] = L->data_list[i + 1];
- }
- L->Last--;
- }
- }
- void list_insert_end(List* L, float value)
- {
- L->data_list[L->Last+1] = value; //Вставка элемента в конец списка
- L->Last++;
- }
- void show_list(List * L)
- {
- printf("\nList");
- if (list_size(*L) == 0)
- {
- printf("\nList is empty");
- }
- for (int i = 1; i <= L->Last; i++)
- {
- printf("\n%d. %.2f", i, L.data_list[i - 1]);
- }
- }
- int main()
- {
- Queue Q;
- queue_creation(&Q);
- int count_for_user;
- printf("Enter quantity of elements ");
- scanf("%d", &count_for_user);
- List L;
- list_creation(&L);
- float value;
- for (int i = 0; i < count_for_user; i++)
- {
- printf("Enter the element ");
- scanf("%f", &value);
- list_insert_end(&L, value);
- }
- show_list(&L);
- printf("\n");
- float Sum = 0;
- float element;
- int count = list_size(L);
- for (int i = 1,j=1; i <= count; i++)
- {
- element = list_get(&L, j);
- if (element>0)
- {
- list_delete(&L, j+1);
- enqueue(&Q, (element+Sum));
- Sum = Sum+element;
- }
- else j++;
- }
- show_list(&L);
- printf("\n\n");
- show_queue(&Q);
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement