Dubwyn

Problem 63 TU

Dec 10th, 2021 (edited)
1,194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. const int k = 100; // zadavame konstanta K s koqto da zadadem duljinata na masivite
  6. int i,j,temp, N, K, L, A[k][k], C[k]; //suzdavame promenlivite koito shte polzvame
  7.  
  8. int main()
  9. {
  10.  
  11.     printf("VUVEDI USLOVIE TUKA \n"); //printirame uslovie
  12.     printf("VUVEDI IME NA AVTORA TUKA \n"); //printirame avtor
  13.  
  14.     printf("N: "); //printirame iskane za N
  15.     do
  16.     {
  17.       scanf("%d", &N); //vuvejdame stoinost za N
  18.       if(N <= 0 || N > k){
  19.         printf(" N must be positive or less than %d\n", k);
  20.       }
  21.  
  22.     }while(N <= 0 || N > k);
  23.  
  24.  
  25.     printf("Enter array data: "); //printirame iskane za datata na masiva
  26.     for (i = 0; i < N; i++) // cikul ot 0 do n-1
  27.     {
  28.         for (j = 0; j < N; j++) //cikul ot 0 do n-1
  29.         {
  30.             scanf("%d", &A[i][j]); //vuvejdame stoinost za a[i][j]
  31.             if(A[i][j] < -100 || A[i][j]> 100){ //proverka na stoinosta dali e ot -100 do 100
  32.                 printf("Number must be between -100 and 100!\n"); //ako chisloto ne e mejdu intervala printirai tova
  33.                 j--; //namali broqcha s 1 tui kato ne sme dobavili chislo
  34.             }
  35.         }
  36.     }
  37.  
  38.     //Vuveli sme chislata v dvumerniq masiv
  39.  
  40.  
  41.     printf("2D Array: \n"); //printirame masiva
  42.     for (i = 0; i < N; i++)
  43.     {
  44.         for (j = 0; j < N; j++)
  45.         {
  46.             printf("%d ", A[i][j]); //orintirai chisloto s malko space pred nego
  47.         }
  48.         printf("\n"); //slagame nov red
  49.     }
  50.  
  51.     //printirahme dvumerniq masiv
  52.  
  53.     printf("Enter K-L interval: \n"); //iskane za intervala K do L
  54.     scanf("%d %d", &K, &L); // vuvejdame stoinostite
  55.    
  56.     if(K > L){ //proverka dali K e po-golqmo ot L. Ako da gi razmeni
  57.         temp = K;
  58.         K = L;
  59.         L = temp;
  60.     }
  61.  
  62.     int counter = 0; //broqch za kolko chisla slagame v noviq masiv
  63.     for (i = 0; i < N; i++)
  64.     {
  65.         for (j = 0; j < N; j++)
  66.         {
  67.             if (A[i][j] >= K && A[i][j] <= L) //pravim proverka dali chisloto koeto sme vzeli popada v tozi interval
  68.             {
  69.                 C[counter] = A[i][j]; //ako popada go zapishi v noviq masiv
  70.                 counter++; //uvelichi broqcha s 1
  71.             }
  72.         }
  73.     }
  74.  
  75.     //slojili sme vsichki chisli koito sa mejdu K do L v noviq masiv
  76.  
  77.     //sortirane na noviq masiv (Bucket sort: https://www.geeksforgeeks.org/bucket-sort-2/)
  78.     for (i = 0; i < counter-1; i++) //cikul ot 0 do counter - 2 tui kato ako e counter-1 shte vzemem element sled posledniq
  79.     {
  80.         for (j = 0; j < counter - i-1; j++) //cikul ot 0 do counter-i-1 za da ne gledame elementi koito veche sme sortirali
  81.         {
  82.             if (C[j] > C[j + 1]) //proverka dali leviq element e po-golqm ot desniq
  83.             {
  84.                 temp = C[j]; //ako da gi razmeni s pomoshta na vremenna promenliva
  85.                 C[j] = C[j + 1];
  86.                 C[j + 1] = temp;
  87.             }
  88.         }
  89.     }
  90.  
  91.     //sortirahme uspeshno masiva
  92.  
  93.     //printirai noviq masiva
  94.     printf("Sorted array: \n");
  95.     for (int i = 0; i < counter; i++)
  96.     {
  97.         printf("%d ", C[i]);
  98.     }
  99. }
  100.  
  101. /*
  102. Test Input:
  103. 3
  104. 17 15 13 1 3 5 7 9 11
  105. 5 15
  106.  
  107. Expected output:
  108.  
  109. N: 3
  110. Enter array data: 17 15 13 1 3 5 7 9 11
  111. 2D Array:
  112. 17 15 13
  113. 1 3 5
  114. 7 9 11
  115. Enter K-L interval:
  116. 5 15
  117. Sorted array:
  118. 5 7 9 11 13 15
  119.  
  120.  
  121. Test input 2:
  122. 4
  123. 32   10   18   26 28  22  20  4 30  14  12  6 8   16  24  2
  124. 11 27
  125.  
  126. Expected Output:
  127. N: 4
  128. Enter array data: 32   10   18   26 28  22  20  4 30  14  12  6 8   16  24  2
  129. 2D Array:
  130. 32 10 18 26
  131. 28 22 20 4
  132. 30 14 12 6
  133. 8 16 24 2
  134. Enter K-L interval:
  135. 11 27
  136. Sorted array:
  137. 12 14 16 18 20 22 24 26
  138.  
  139.  
  140. */
  141.  
Add Comment
Please, Sign In to add comment