Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Поменять местами строки с минимальными и
- максимальными суммами элементов*/
- #include <stdlib.h>
- #include <stdio.h>
- #include <time.h>
- int summ(int m[],int n) //функция подсчета суммы в строке
- {
- int res=0;
- for(int i=0; i<n;++i)
- res+=m[i];
- return res;
- }
- void main(void)
- {
- int max, min, imin, imax, **M, m, n, k=0, *b;
- srand(time(0));
- printf("\n Enter m: ");
- scanf("%d", &m); //кол-во строк
- n=m; //кол-во элементов= кол-во строк (квадратная матрица)
- //выделение участка памяти
- M=new int *[m];
- if(!M) {printf("\n Not enough memory"); return;}
- for(int i=0;i<n;++i)
- {
- M[i]=new int[n];
- if(!M[i]) {printf("\n Not enough memory"); return;}
- }
- //заполнение матрицы и подсчет суммы в строках
- for(int i=0;i<n;++i)
- {
- for(int j=0;j<n;++j)
- {
- M[i][j]=rand()%10;
- printf("%d ",M[i][j]);
- }
- printf("| %d", summ(M[i],n));
- putchar('\n');
- }
- imax=imin=0;
- min=max=summ(M[0],n);
- //поиск минимальной и максимальной строк
- for(int i=1; i<n; i++)
- {
- k=summ(M[i],n);
- if(k<min)
- {
- min=k;
- imin=i;
- }
- if(k>max)
- {
- max=k;
- imax=i;
- }
- }
- //меняем местами
- b=M[imax];
- M[imax]=M[imin];
- M[imin]=b;
- putchar('\n');
- //вывод новой матрицы и освобождение участка памяти
- for(int i=0;i<n;++i)
- {
- for(int j=0; j<n; ++j)
- printf("%d ",M[i][j]);
- printf("| %d", summ(M[i],n));
- putchar('\n');
- delete []M[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment