Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.73 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 5
  4.  
  5.  
  6. typedef struct row {
  7.     int data[MAX];
  8.     int f;
  9.     int r;
  10. } ROW;
  11.  
  12.  
  13. int isFULL(ROW *);
  14. int isEmpty(ROW *);
  15. int add(ROW *, int);
  16. int delete(ROW *, int *);
  17. int print(ROW *buffer);
  18.  
  19.  
  20. int main()
  21. {
  22.     ROW buffer;
  23.     char choice;
  24.     int data;
  25.  
  26.     buffer.f = buffer.r = -1;
  27.     do
  28.     {
  29.         printf("[1] Add new\n");
  30.         printf("[2] Delete\n");
  31.         printf("[3] Print all\n");
  32.         printf("[0] Exit\n");
  33.         printf(">> ");
  34.  
  35.         fscanf(stdin, " %c", &choice);
  36.  
  37.         switch (choice)
  38.         {
  39.             case '1':
  40.                 printf("Enter number that you whis to add: ");
  41.  
  42.                 fscanf(stdin, "%d", &data);
  43.  
  44.                 if (!add(&buffer, data))
  45.                 {
  46.                     printf("Couldn't add the number, the buffer is full.\n");
  47.                 }
  48.                 break;
  49.             case '2':
  50.                 if (delete(&buffer, &data))
  51.                 {
  52.                     printf("The number %d has been sucessfully deleted.\n", data);
  53.                 }
  54.                 else
  55.                 {
  56.                     printf("Nothing to delete, the buffer is empty.\n");
  57.                 }
  58.  
  59.                 break;
  60.             case '3':
  61.                 if (!print(&buffer))
  62.                 {
  63.                     printf("Nothing to print, the buffer is empty.\n");
  64.                 }
  65.                 break;
  66.         }
  67.         printf("\n");
  68.     }  while (choice != '0');
  69.     return 0;
  70. }
  71.  
  72.  
  73. int isFULL(ROW *buffer)
  74. {
  75.     return (buffer->r + 1) % MAX == buffer->f;
  76. }
  77.  
  78.  
  79. int isEmpty(ROW *buffer)
  80. {
  81.     return buffer->f == -1;
  82. }
  83.  
  84.  
  85. int add(ROW *buffer, int data)
  86. {
  87.     if (isFULL(buffer))
  88.     {
  89.         return 0;
  90.     }
  91.     if (buffer->f == -1)
  92.     {
  93.         buffer->f = 0;
  94.     }
  95.  
  96.     buffer->r = (buffer->r + 1) % MAX;
  97.     buffer->data[buffer->r] = data;
  98.  
  99.     return 1;
  100. }
  101.  
  102.  
  103. int delete(ROW *buffer, int *data)
  104. {
  105.     if (isEmpty(buffer))
  106.     {
  107.         return 0;
  108.     }
  109.  
  110.     *data = buffer->data[buffer->f];
  111.  
  112.     if (buffer->f == buffer->r)
  113.     {
  114.         buffer->f = buffer->r = -1;
  115.     }
  116.     else
  117.     {
  118.         buffer->f = (buffer->f + 1) % MAX;
  119.     }
  120.  
  121.     return 1;
  122. }
  123.  
  124.  
  125. int print(ROW *buffer)
  126. {
  127.     if (isEmpty(buffer))
  128.     {
  129.         return 0;
  130.     }
  131.  
  132.     int i = buffer->f;
  133.  
  134.     if (buffer->f <= buffer->r)
  135.     {
  136.         while (i <= buffer->r)
  137.         {
  138.             printf("%d\n", buffer->data[i++]);
  139.         }
  140.     }
  141.     else
  142.     {
  143.         while(i <= MAX - 1)
  144.         {
  145.             printf("%d\n", buffer->data[i++]);
  146.         }
  147.         i = 0;
  148.         while(i <= buffer->r)
  149.         {
  150.             printf("%d\n", buffer[i++]);
  151.         }
  152.     }
  153.     return 1;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement