Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <windows.h>
- #include <time.h>
- #include <math.h>
- #include <stdbool.h>
- void bubble_sort_up(int col,int row,int a[col][row])
- {
- for (int m=0; m<(row * col - 1); m++) //сдвиги очередных элементов в правильную позицию
- /*сдвиг элемента массива в правильную позицию*/
- for (int i = 0; i<row ; i++){
- for (int j = 0; j<col; j++){
- /*АНАЛИЗ НА ПОСЛЕДНИЙ ЭЛЕМЕНТ МАССИВА*/
- if (i==row-1 && j==col-1){ //Если строка последняя и справа тупик, то ничего не делаем
- continue;
- }
- /*КОНЕЦ АНАЛИЗА НА ПОСЛЕДНЮЮ СТРОКУ*/
- if (a[i][j]> a[i][j+1]){ //Если элемент не на своей позиции
- int temp = a[i][j]; //Обмен местами
- a[i][j] = a[i][j+1];
- a[i][j+1] = temp;
- }
- }
- }
- }
- void bubble_sort_down(int col,int row,int a[col][row])
- {
- for (int m=0; m<(row * col - 1); m++) //сдвиги очередных элементов в правильную позицию
- /*сдвиг элемента массива в правильную позицию*/
- for (int i = 0; i<row ; i++){
- for (int j = 0; j<col; j++){
- /*АНАЛИЗ НА ПОСЛЕДНИЙ ЭЛЕМЕНТ МАССИВА*/
- if (i==row-1 && j==col-1){ //Если строка последняя и справа тупик, то ничего не делаем
- continue;
- }
- /*КОНЕЦ АНАЛИЗА НА ПОСЛЕДНЮЮ СТРОКУ*/
- if (a[i][j] < a[i][j+1]){ //Если элемент не на своей позиции
- int temp = a[i][j]; //Обмен местами
- a[i][j] = a[i][j+1];
- a[i][j+1] = temp;
- }
- }
- }
- }
- void print(int n,int m,int a[n][m])
- {
- for (int i = 0; i < n; ++i)
- {
- for(int j=0;j<m;++j)
- {
- printf("%d ", a[i][j]);
- }
- printf("\n");
- }
- }
- int main()
- {
- srand(time(NULL));
- /// ЗАДАНИЕ 5. ДВУМЕРНЫЕ МАССИВЫ
- SetConsoleOutputCP(CP_UTF8);
- int n,m;
- printf("Введите размерность матрицы NxM: "); scanf("%d %d",&n,&m);
- printf("Введите границы диапозона через пробел, в котором элементы массива будут заполняться случайным образом: ");
- int a,b;
- scanf("%d %d",&a,&b);
- int array[n][m];
- int s1=0,s2=0, mi = b + 1, ma = a - 1,c1=0,c2=0;
- int max_x,max_y,min_x,min_y;
- for (int i = 0; i < n; ++i)
- {
- for (int j = 0; j < m; ++j) {
- array[i][j]=rand()%(b-a+1)+a;
- if (array[i][j]<mi) {
- mi = array[i][j];
- min_x = i;
- min_y = j;
- }
- if (array[i][j]>ma) {
- ma = array[i][j];
- max_x = i;
- max_y = j;
- }
- if(array[i][j]>0) s1+=array[i][j]; else s2+=array[i][j];
- if(array[i][j]>0) c1++; else if (array[i][j]<0) c2++;
- }
- }
- {
- printf("Наш массив:\n");
- print(n, m, array);
- printf("\nСумма положительных элементов:%d\nСумма отрицательных элементов:%d\n", s1, s2);
- printf("Максимальный элемент:%d\nМинимальный элемент:%d\nРазница между минимальным и максимальным:%d\n", ma, mi,
- mi - ma);
- printf("Количество положительных элементов:%d\nКоличество отрицательных элементов:%d\n", c1, c2);
- printf("Элементы, которые больше среднего арифметического:");
- }
- for (int i = 0; i <n ; ++i)
- for(int j=0;j<m;++j)
- if (array[i][j]>((s1+s2)/(n*m)))
- printf("%d ",array[i][j]);
- printf("\n==================\nВыведем наш исходный массив:\n");
- print(n,m,array);
- printf("Сколько элементов будем заменять? : ");
- int el=0;
- scanf("%d",&el);
- if(el==0)
- {
- printf("Отличный выбор!!!!\n");
- }
- else
- {
- printf("Внимание, массив 0 индексации\n");
- for (int i = 0; i < el; ++i)
- {
- int x,y,t;
- printf("Введите строку и стобец элемнта матрицы , который будем менять: ");
- scanf("%d %d",&x,&y);
- printf("Значение этого элемента= %d , на какой меняем?\n",array[x][y]);
- scanf("%d",&t);
- array[x][y]=t;
- }
- printf("Изменённый массив: ");
- print(n,m,array);
- }
- bubble_sort_up(n,m,array);
- printf("Отсортированынй массив методом пузырька:\n");
- print(n,m,array);
- printf("Сравним, что больше: сумма от 1 до x или с x До n. Введите строку и столбец элемента, начиная с 0:");
- int x,y;
- scanf("%d %d",&x,&y);
- int s3=0;
- for (int i = 0; i <= x; ++i) for (int j=0;j<m;++j) s3+=array[i];
- if (s3>s1+s2-array[x][y]) printf("Сумма от 1 до x больше"); else printf("сумма от 1 до x меньше");
- printf("Сортивровка по убыванию:\n");
- bubble_sort_down(n,m,array);
- print(n,m,array);
- printf("минимальный элемент находится на %d строке во %d стобце ",min_x,min_y);
- printf("максимальный элемент находится на %d строке во %d стобце ",max_x,max_y);
- float sr=(s1+s2)/(n*m),sr_r=ma;
- int sr_x=0,sr_y=0;
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < m; ++j) {
- if (abs(array[i][j]-sr)<sr_r)
- {
- sr_x=i;
- sr_y=j;
- sr_r=abs(array[i][j]-sr);
- }
- }
- }
- printf("\nсреднее арифметическое матрицы=%f"
- "\nэлемент,расположенный ближе всего к этому значению находится на %d строке на %d позиции\n",sr,sr_x,sr_y);
- printf("Проверим, есть ли ваш элемент в матрице, введите его значнеие: ");
- int element;
- scanf("%d",&element);
- bool t=false;
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < m; ++j) {
- if(array[i][j]==element)
- {
- printf("Ваш элемент лежит в %d строке на %d позиции\n",i,j);
- t=true;
- break;
- }
- }
- if(t==true)
- break;
- }
- if (t==false) printf("ваш элемент не найден в матрице\n");
- int a_2[2][n];
- for (int i = 0; i < n; ++i) {
- a_2[0][i]=rand()%(10-1+1)+1;
- a_2[1][i]=a_2[0][i]*a_2[0][i];
- }
- for (int i = 0; i < 2; ++i) {
- for (int j = 0; j < n; ++j) {
- printf("%d ",a_2[i][j]);
- }
- if (i==0) printf(" Изначальный массив\n");
- }
- printf(" массив квадратов элементов изначального массива\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement