Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- const int k = 100; // zadavame konstanta K s koqto da zadadem duljinata na masivite
- int i,j,temp, N, K, L, A[k][k], C[k]; //suzdavame promenlivite koito shte polzvame
- int main()
- {
- printf("VUVEDI USLOVIE TUKA \n"); //printirame uslovie
- printf("VUVEDI IME NA AVTORA TUKA \n"); //printirame avtor
- printf("N: "); //printirame iskane za N
- do
- {
- scanf("%d", &N); //vuvejdame stoinost za N
- if(N <= 0 || N > k){
- printf(" N must be positive or less than %d\n", k);
- }
- }while(N <= 0 || N > k);
- printf("Enter array data: "); //printirame iskane za datata na masiva
- for (i = 0; i < N; i++) // cikul ot 0 do n-1
- {
- for (j = 0; j < N; j++) //cikul ot 0 do n-1
- {
- scanf("%d", &A[i][j]); //vuvejdame stoinost za a[i][j]
- if(A[i][j] < -100 || A[i][j]> 100){ //proverka na stoinosta dali e ot -100 do 100
- printf("Number must be between -100 and 100!\n"); //ako chisloto ne e mejdu intervala printirai tova
- j--; //namali broqcha s 1 tui kato ne sme dobavili chislo
- }
- }
- }
- //Vuveli sme chislata v dvumerniq masiv
- printf("2D Array: \n"); //printirame masiva
- for (i = 0; i < N; i++)
- {
- for (j = 0; j < N; j++)
- {
- printf("%d ", A[i][j]); //orintirai chisloto s malko space pred nego
- }
- printf("\n"); //slagame nov red
- }
- //printirahme dvumerniq masiv
- printf("Enter K-L interval: \n"); //iskane za intervala K do L
- scanf("%d %d", &K, &L); // vuvejdame stoinostite
- if(K > L){ //proverka dali K e po-golqmo ot L. Ako da gi razmeni
- temp = K;
- K = L;
- L = temp;
- }
- int counter = 0; //broqch za kolko chisla slagame v noviq masiv
- for (i = 0; i < N; i++)
- {
- for (j = 0; j < N; j++)
- {
- if (A[i][j] >= K && A[i][j] <= L) //pravim proverka dali chisloto koeto sme vzeli popada v tozi interval
- {
- C[counter] = A[i][j]; //ako popada go zapishi v noviq masiv
- counter++; //uvelichi broqcha s 1
- }
- }
- }
- //slojili sme vsichki chisli koito sa mejdu K do L v noviq masiv
- //sortirane na noviq masiv (Bucket sort: https://www.geeksforgeeks.org/bucket-sort-2/)
- for (i = 0; i < counter-1; i++) //cikul ot 0 do counter - 2 tui kato ako e counter-1 shte vzemem element sled posledniq
- {
- for (j = 0; j < counter - i-1; j++) //cikul ot 0 do counter-i-1 za da ne gledame elementi koito veche sme sortirali
- {
- if (C[j] > C[j + 1]) //proverka dali leviq element e po-golqm ot desniq
- {
- temp = C[j]; //ako da gi razmeni s pomoshta na vremenna promenliva
- C[j] = C[j + 1];
- C[j + 1] = temp;
- }
- }
- }
- //sortirahme uspeshno masiva
- //printirai noviq masiva
- printf("Sorted array: \n");
- for (int i = 0; i < counter; i++)
- {
- printf("%d ", C[i]);
- }
- }
- /*
- Test Input:
- 3
- 17 15 13 1 3 5 7 9 11
- 5 15
- Expected output:
- N: 3
- Enter array data: 17 15 13 1 3 5 7 9 11
- 2D Array:
- 17 15 13
- 1 3 5
- 7 9 11
- Enter K-L interval:
- 5 15
- Sorted array:
- 5 7 9 11 13 15
- Test input 2:
- 4
- 32 10 18 26 28 22 20 4 30 14 12 6 8 16 24 2
- 11 27
- Expected Output:
- N: 4
- Enter array data: 32 10 18 26 28 22 20 4 30 14 12 6 8 16 24 2
- 2D Array:
- 32 10 18 26
- 28 22 20 4
- 30 14 12 6
- 8 16 24 2
- Enter K-L interval:
- 11 27
- Sorted array:
- 12 14 16 18 20 22 24 26
- */
Add Comment
Please, Sign In to add comment