Advertisement
Guest User

c struct

a guest
Jul 20th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4.  
  5. static const int treshold = 20;
  6.  
  7. typedef struct _pack
  8. {
  9.     int_least32_t values[4000];
  10.     int_least16_t indexes[4000];
  11.     int_least16_t size;
  12. } pack;
  13.  
  14. static pack input, output;
  15.  
  16. static void sort(pack* input)
  17. {
  18.     int_least16_t i;
  19.     int_least16_t j;
  20.     for (i = 0; i < (input->size - 1); i++)
  21.     {
  22.         for (j = i + 1; j < input->size; j++)
  23.         {
  24.             if (input->values[i] < input->values[j])
  25.             {
  26.                 int_least32_t tmp;
  27.                 int_least16_t tmp1;
  28.  
  29.                 tmp = input->values[i];
  30.                 input->values[i] = input->values[j];
  31.                 input->values[j] = tmp;
  32.  
  33.                 tmp1 = input->indexes[i];
  34.                 input->indexes[i] = input->indexes[j];
  35.                 input->indexes[j] = tmp1;
  36.             }
  37.         }
  38.     }
  39. }
  40.  
  41.  
  42. static void print(pack* input, pack* output)
  43. {
  44.     int_least16_t i = 0;
  45.     printf("Up to the first treshold: ");
  46.     while (input->values[i] > treshold && i < input->size)
  47.     {
  48.         printf("%d(%d) ", input->values[i], input->indexes[i]);
  49.         i++;
  50.     }
  51.     printf("\n");
  52.  
  53.     output->size = 0;
  54.  
  55.     for(i = 0; i < input->size; i++)
  56.     {
  57.         if(input->values[i] < treshold && input->values[i] % 2 == 0)
  58.         {
  59.             output->values[output->size] = input->values[i];
  60.             output->indexes[output->size] = input->indexes[i];
  61.             output->size++;
  62.         }
  63.     }
  64. }
  65.  
  66.  
  67. void main()
  68. {
  69.     int_least16_t i;
  70.     int_least16_t n;
  71.  
  72.     printf("Number of elements: ");
  73.     scanf("%d", &(input.size));
  74.  
  75.     printf("\n");
  76.     for (i = 0; i < input.size; i++)
  77.     {
  78.         printf("%d. element: ", i);
  79.         scanf("%d", &(input.values[i]));
  80.         input.indexes[i] = i;
  81.         printf("\n");
  82.     }
  83.  
  84.     sort(&input);
  85.  
  86.     print(&input, &output);
  87.  
  88.     printf("Even numbers smaller than treshold:\n");
  89.     for(i = 0; i < output.size; i++)
  90.         printf("%d(%d) ", output.values[i], output.indexes[i]);
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement