Advertisement
FazEN

Untitled

Oct 22nd, 2022
737
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.90 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <time.h>
  4. #include <math.h>
  5. #include <stdbool.h>
  6. void bubble_sort_up(int col,int row,int a[col][row])
  7. {
  8.     for (int m=0; m<(row * col - 1); m++)   //сдвиги очередных элементов в правильную позицию
  9.         /*сдвиг элемента массива в правильную позицию*/
  10.         for (int i = 0; i<row ; i++){
  11.             for (int j = 0; j<col; j++){
  12.                 /*АНАЛИЗ НА ПОСЛЕДНИЙ ЭЛЕМЕНТ МАССИВА*/
  13.                 if (i==row-1 && j==col-1){  //Если строка последняя и справа тупик, то ничего не делаем
  14.                     continue;
  15.                 }
  16.                 /*КОНЕЦ АНАЛИЗА НА ПОСЛЕДНЮЮ СТРОКУ*/
  17.  
  18.                 if (a[i][j]> a[i][j+1]){ //Если элемент не на своей позиции
  19.                     int temp = a[i][j];        //Обмен местами
  20.                     a[i][j] = a[i][j+1];
  21.                     a[i][j+1] = temp;
  22.                 }
  23.             }
  24.         }
  25. }
  26. void bubble_sort_down(int col,int row,int a[col][row])
  27. {
  28.     for (int m=0; m<(row * col - 1); m++)   //сдвиги очередных элементов в правильную позицию
  29.         /*сдвиг элемента массива в правильную позицию*/
  30.         for (int i = 0; i<row ; i++){
  31.             for (int j = 0; j<col; j++){
  32.                 /*АНАЛИЗ НА ПОСЛЕДНИЙ ЭЛЕМЕНТ МАССИВА*/
  33.                 if (i==row-1 && j==col-1){  //Если строка последняя и справа тупик, то ничего не делаем
  34.                     continue;
  35.                 }
  36.                 /*КОНЕЦ АНАЛИЗА НА ПОСЛЕДНЮЮ СТРОКУ*/
  37.  
  38.                 if (a[i][j] < a[i][j+1]){ //Если элемент не на своей позиции
  39.                     int temp = a[i][j];        //Обмен местами
  40.                     a[i][j] = a[i][j+1];
  41.                     a[i][j+1] = temp;
  42.                 }
  43.             }
  44.         }
  45. }
  46. void print(int n,int m,int a[n][m])
  47. {
  48.     for (int i = 0; i < n; ++i)
  49.     {
  50.         for(int j=0;j<m;++j)
  51.         {
  52.             printf("%d ", a[i][j]);
  53.         }
  54.         printf("\n");
  55.     }
  56. }
  57. int main()
  58. {
  59.     srand(time(NULL));
  60.     /// ЗАДАНИЕ 5. ДВУМЕРНЫЕ МАССИВЫ
  61.     SetConsoleOutputCP(CP_UTF8);
  62.     int n,m;
  63.     printf("Введите размерность матрицы NxM: "); scanf("%d %d",&n,&m);
  64.     printf("Введите границы диапозона через пробел, в котором элементы массива будут заполняться случайным образом: ");
  65.     int a,b;
  66.     scanf("%d %d",&a,&b);
  67.     int array[n][m];
  68.     int s1=0,s2=0, mi = b + 1, ma = a - 1,c1=0,c2=0;
  69.     int max_x,max_y,min_x,min_y;
  70.     for (int i = 0; i < n; ++i)
  71.     {
  72.         for (int j = 0; j < m; ++j) {
  73.             array[i][j]=rand()%(b-a+1)+a;
  74.             if (array[i][j]<mi) {
  75.                 mi = array[i][j];
  76.                 min_x = i;
  77.                 min_y = j;
  78.             }
  79.             if (array[i][j]>ma) {
  80.                 ma = array[i][j];
  81.                 max_x = i;
  82.                 max_y = j;
  83.             }
  84.             if(array[i][j]>0) s1+=array[i][j]; else s2+=array[i][j];
  85.             if(array[i][j]>0) c1++; else if (array[i][j]<0) c2++;
  86.         }
  87.  
  88.     }
  89.     {
  90.         printf("Наш массив:\n");
  91.         print(n, m, array);
  92.         printf("\nСумма положительных элементов:%d\nСумма отрицательных элементов:%d\n", s1, s2);
  93.         printf("Максимальный элемент:%d\nМинимальный элемент:%d\nРазница между минимальным и максимальным:%d\n", ma, mi,
  94.                mi - ma);
  95.         printf("Количество положительных элементов:%d\nКоличество отрицательных элементов:%d\n", c1, c2);
  96.         printf("Элементы, которые больше среднего арифметического:");
  97.     }
  98.     for (int i = 0; i <n ; ++i)
  99.         for(int j=0;j<m;++j)
  100.             if (array[i][j]>((s1+s2)/(n*m)))
  101.                 printf("%d ",array[i][j]);
  102.  
  103.     printf("\n==================\nВыведем наш исходный массив:\n");
  104.     print(n,m,array);
  105.     printf("Сколько элементов будем заменять? : ");
  106.     int el=0;
  107.     scanf("%d",&el);
  108.     if(el==0)
  109.     {
  110.         printf("Отличный выбор!!!!\n");
  111.     }
  112.     else
  113.     {
  114.         printf("Внимание, массив 0 индексации\n");
  115.         for (int i = 0; i < el; ++i)
  116.         {
  117.             int x,y,t;
  118.             printf("Введите строку и стобец элемнта матрицы , который будем менять: ");
  119.             scanf("%d %d",&x,&y);
  120.             printf("Значение этого элемента= %d , на какой меняем?\n",array[x][y]);
  121.             scanf("%d",&t);
  122.             array[x][y]=t;
  123.         }
  124.         printf("Изменённый массив: ");
  125.         print(n,m,array);
  126.     }
  127.     bubble_sort_up(n,m,array);
  128.     printf("Отсортированынй массив методом пузырька:\n");
  129.     print(n,m,array);
  130.     printf("Сравним, что больше: сумма от 1 до x или с x До n. Введите строку и столбец элемента, начиная с 0:");
  131.     int x,y;
  132.     scanf("%d %d",&x,&y);
  133.     int s3=0;
  134.     for (int i = 0; i <= x; ++i) for (int j=0;j<m;++j) s3+=array[i];
  135.     if (s3>s1+s2-array[x][y]) printf("Сумма от 1 до x больше"); else printf("сумма от 1 до x меньше");
  136.     printf("Сортивровка по убыванию:\n");
  137.     bubble_sort_down(n,m,array);
  138.     print(n,m,array);
  139.     printf("минимальный элемент находится на %d строке во %d стобце ",min_x,min_y);
  140.     printf("максимальный элемент находится на %d строке во %d стобце ",max_x,max_y);
  141.     float sr=(s1+s2)/(n*m),sr_r=ma;
  142.     int sr_x=0,sr_y=0;
  143.     for (int i = 0; i < n; ++i) {
  144.         for (int j = 0; j < m; ++j) {
  145.             if (abs(array[i][j]-sr)<sr_r)
  146.             {
  147.                 sr_x=i;
  148.                 sr_y=j;
  149.                 sr_r=abs(array[i][j]-sr);
  150.             }
  151.         }
  152.     }
  153.     printf("\nсреднее арифметическое матрицы=%f"
  154.            "\nэлемент,расположенный ближе всего к этому значению находится на %d строке на %d позиции\n",sr,sr_x,sr_y);
  155.     printf("Проверим, есть ли ваш элемент в матрице, введите его значнеие: ");
  156.     int element;
  157.     scanf("%d",&element);
  158.     bool t=false;
  159.     for (int i = 0; i < n; ++i) {
  160.         for (int j = 0; j < m; ++j) {
  161.             if(array[i][j]==element)
  162.             {
  163.                 printf("Ваш элемент лежит в %d строке на %d позиции\n",i,j);
  164.                 t=true;
  165.                 break;
  166.             }
  167.         }
  168.         if(t==true)
  169.             break;
  170.     }
  171.     if (t==false) printf("ваш элемент не найден в матрице\n");
  172.     int a_2[2][n];
  173.     for (int i = 0; i < n; ++i) {
  174.         a_2[0][i]=rand()%(10-1+1)+1;
  175.         a_2[1][i]=a_2[0][i]*a_2[0][i];
  176.     }
  177.     for (int i = 0; i < 2; ++i) {
  178.         for (int j = 0; j < n; ++j) {
  179.             printf("%d ",a_2[i][j]);
  180.         }
  181.         if (i==0) printf(" Изначальный массив\n");
  182.     }
  183.     printf(" массив квадратов элементов изначального массива\n");
  184.     return 0;
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement