Advertisement
Kostiggig

LAB_13 -> 1

Dec 3rd, 2022
634
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.58 KB | None | 0 0
  1. void printArray(const int a[], int n) {
  2.     printf("\n");
  3.     printf("\n");
  4.     printf("[");
  5.     for(int i = 0; i < n; i++) {
  6.  
  7.         // printf with no dividers
  8.         if(i + 1 == n) {
  9.             printf("%d", a[i]);
  10.         } else {
  11.             printf("%d, ", a[i]);
  12.         }
  13.     }
  14.     printf("]");
  15.     printf("\n");
  16.     printf("\n");
  17. }
  18.  
  19. void moveToTheRightBy1Element(int *a, int count) {
  20.     int copyCount = count;
  21.     a[0] = 0;
  22.     for(int i = count; i > 0; i--) {
  23.         a[i] = a[i - 1];
  24.     }
  25. }
  26.  
  27. void sorrtedByBbleSort(int *src, int length) {
  28.     bool isSorted = false;
  29.     while(!isSorted) {
  30.         isSorted = true;
  31.  
  32.         for(int i = 0; i < length - 1; i++) {
  33.             int currentElement = src[i];
  34.             if(currentElement > src[i + 1]) {
  35.                 isSorted = false;
  36.                 src[i] = src[i + 1];
  37.                 src[i + 1] = currentElement;
  38.             }
  39.         }
  40.  
  41.     }
  42. }
  43.  
  44. void task_1() {
  45.  
  46.     int A, B, n;
  47.     double sum = 0;
  48.  
  49.     printf("Введите n: ");
  50.     scanf("%d", &n);
  51.     if(n < 0) {
  52.         printf("Input data is not corrected");
  53.     } else {
  54.         int a[n];
  55.  
  56.         printf("Введите range.");
  57.         printf("\nstart: ");
  58.         scanf("%d", &A);
  59.  
  60.         printf("end: ");
  61.         scanf("%d", &B);
  62.  
  63.         if(A > B) {
  64.             int temp = A;
  65.             A = B;
  66.             B = temp;
  67.         }
  68.  
  69.         for(int i = 0; i < n; i++) {
  70.             printf("current i %d", i);
  71.             a[i] = rand() % (B - A + 1) + A;
  72.         }
  73.  
  74.         printf("\nArray is ");
  75.         printArray(a, n);
  76.  
  77.         // calculate an average sum of the elements
  78.         for(int i = 0; i <= n; i++) {
  79.             sum += a[i];
  80.         }
  81.  
  82.         double average = sum/n;
  83.         if(average < 0) average = -average;
  84.        
  85.         printf("\nAverage sum is %.3lf", average);
  86.  
  87.         // make a copy of a
  88.         int modifiedArray[n];
  89.         for(int i = 0; i < n; i++) {
  90.             modifiedArray[i] = a[i];
  91.         }
  92.  
  93.         // write unOdds to odds positions and vice versa
  94.         for(int i = 0; i < n - 1; i+= 2) {
  95.             modifiedArray[i] = a[i + 1];
  96.         }
  97.  
  98.         for(int i = 1; i < n; i+= 2) {
  99.             modifiedArray[i] = a[i - 1];
  100.         }
  101.  
  102.         printf("\n\nArray after replacing odds by unodds is ");
  103.         printArray(modifiedArray, n);
  104.  
  105.         moveToTheRightBy1Element(modifiedArray, n);
  106.         printf("\n\nArray after moving to the right by 1 ");
  107.         printArray(modifiedArray, n);
  108.  
  109.         printf("Sorted via the bubble sort array.");
  110.         sorrtedByBbleSort(modifiedArray, n);
  111.         printArray(modifiedArray, n);
  112.  
  113.         int countOfElementsMoreThanMiddle = 0;
  114.         int middleIndex = n/2;
  115.        
  116.         if(middleIndex + 1 <= n) {
  117.             int middleElement = modifiedArray[middleIndex];
  118.             printf("middle index %d, middle element %d", middleIndex, middleElement);
  119.             for(int i = middleIndex + 1; i < n; i++) {
  120.                 if(modifiedArray[i] > middleElement) countOfElementsMoreThanMiddle++;
  121.             }
  122.         }
  123.  
  124.         printf("countOfElementsMoreThanMiddle %d ", countOfElementsMoreThanMiddle);
  125.     }
  126.  
  127.    
  128. }
  129.  
  130.  
  131.  
  132. int main() {
  133.  
  134.     int numOfTask = 0;
  135.     do
  136.     {
  137.         printf("\nEnter a number of the task: ");
  138.         scanf("%d", &numOfTask);
  139.  
  140.         switch (numOfTask) {
  141.         case 1:
  142.             task_1();
  143.             break;
  144.         default:
  145.             printf("\nThe task by num %d has not found", numOfTask);
  146.             break;
  147.         }
  148.  
  149.     } while (numOfTask != 0);
  150.    
  151.     return 0;
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement