Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5.  
  6. int main()
  7. {
  8.   int N = 20;
  9.   char str[4];
  10.   char d[N+1][4];
  11.   char x[4];
  12.   char tmp[4];
  13.   int i,j,k,m,o;
  14.  
  15.   srand(time(NULL));
  16.  
  17.   i = 19;
  18.   while (i--)
  19.   {
  20.       j = 4;
  21.       while (j--)
  22.         d[i][j] = 0;
  23.   }
  24.  
  25.   printf("---Przed---:\n");
  26.  
  27.   for(i = 1; i <= N; i++)
  28.   {
  29.     o = 3;
  30.     while(o--)
  31.         d[i][o] = (rand() % 25)+65;
  32.  
  33.     printf("%s ", d[i]);
  34.   }
  35.  
  36.   printf("\n");
  37.  
  38. // Budujemy kopiec
  39.   for(i = 2; i <= N; i++)
  40.   {
  41.     j = i; k = j / 2;
  42.     strcpy(x, d[i]);
  43.  
  44.     while((k > 0) && (strcmp(d[k],x) < 0))
  45.     {
  46.       strcpy(d[j], d[k]);
  47.       j = k; k = j / 2;
  48.     }
  49.     strcpy(d[j], x);
  50.   }
  51.  
  52. // Rozbieramy kopiec
  53.   for(i = N; i > 1; i--)
  54.   {
  55.     strcpy(tmp, d[1]);
  56.     strcpy(d[1], d[i]);
  57.     strcpy(d[i], tmp);
  58.  
  59.     j = 1; k = 2;
  60.     while(k < i)
  61.     {
  62.       if((k + 1 < i) && (strcmp(d[k+1],d[k]) > 0))
  63.         m = k + 1;
  64.       else
  65.         m = k;
  66.  
  67.       if((strcmp(d[m],d[j]) <= 0))
  68.         break;
  69.  
  70.       strcpy(tmp, d[j]);
  71.       strcpy(d[j], d[m]);
  72.       strcpy(d[m], tmp);
  73.  
  74.       j = m; k = j + j;
  75.     }
  76.   }
  77.  
  78.  
  79.   printf("\n---Po---\n");
  80.  
  81.   for(i = 1; i <= N; i++)
  82.     printf("%s ", d[i]);
  83.  
  84.   printf("\n");
  85.   return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement