Переставить строки в матрице с помощью процедуры - C (СИ)
Формулировка задачи:
# include <stdio.h> # include <conio.h> # include <math.h> # define N 4 # define M 4 int main() { int a[N][M]; int b[N][M], c[N][M]; int i, j; int IA, IB; int MN; //<Massive A> printf("Wwedite chisla->"); for(i=0;i<N;i++) for(j=0;j<M;j++) scanf("%d",&a[i][j]); //<Massive B> for(i=0;i<N;i++) for(j=0;j<M;j++) { if(i==j) b[i][j]=a[i][j]-a[j][i]; else b[i][j]=a[i][j]+a[j][i]; }; //<Nahojdenie IA> MN=a[0][0]; IA=0; for(i=0;i<N;i++) for(j=0;j<M;j++) { if(a[i][j]>MN) { IA = i; MN = a[i][j]; } }; //<Nahojdenie IB> MN = b[0][0]; IB=0; for(i=0;i<N;i++) for(j=0;j<M;j++) { if(b[i][j]>MN) { IB = i; MN = b[i][j]; } }; //<Massive C> if(IA>IB) { for(i=0;i<N;i++) for(j=0;j<M;j++) { c[i][j]=a[i][j]; c[0][j]=a[IA][j]; c[IA][j]=a[0][j]; }; }else { for(i=0;i<N;i++) for(j=0;j<M;j++) { c[i][j]=b[i][j]; c[0][j]=b[IB][j]; c[IB][j]=b[0][j]; }; }; //Vivod na ekran printf("Massive A:\n"); for(i=0;i<N;i++) { for(j=0;j<M;j++) printf("%d, ",a[i][j]); printf("\n"); }; printf("Massive B:\n"); for(i=0;i<N;i++) { for(j=0;j<M;j++) printf("%d, ",b[i][j]); printf("\n"); }; printf("Massive C:\n"); for(i=0;i<N;i++) { for(j=0;j<M;j++) printf("%d, ",c[i][j]); printf("\n"); }; printf("IA = %d, IB = %d",IA+1,IB+1); getch(); }
Решение задачи: «Переставить строки в матрице с помощью процедуры»
textual
Листинг программы
## include <stdio.h> # include <conio.h> # include <math.h> # define N 4 # define M 4 void printMassiv (int mas[N][M]); int indMaxRow (int mas[N][M]); void swap2row (int mas[N][M], int row1, int row2); int main() { int a[N][M]; int b[N][M], c[N][M]; int i, j; int IA, IB; int MN; //<Massive A> printf("Wwedite chisla->"); for(i=0; i<N; i++) for(j=0; j<M; j++) scanf("%d",&a[i][j]); //<Massive B> for(i=0; i<N; i++) for(j=0; j<M; j++) { if(i==j) b[i][j]=a[i][j]-a[j][i]; else b[i][j]=a[i][j]+a[j][i]; }; //<Nahojdenie IA> MN=a[0][0]; IA=0; for(i=0; i<N; i++) for(j=0; j<M; j++) { if(a[i][j]>MN) { IA = i; MN = a[i][j]; } }; //<Nahojdenie IB> MN = b[0][0]; IB=0; for(i=0; i<N; i++) for(j=0; j<M; j++) { if(b[i][j]>MN) { IB = i; MN = b[i][j]; } }; //<Massive C> if(IA>IB) { for(i=0; i<N; i++) for(j=0; j<M; j++) { c[i][j]=a[i][j]; c[0][j]=a[IA][j]; c[IA][j]=a[0][j]; }; } else { for(i=0; i<N; i++) for(j=0; j<M; j++) { c[i][j]=b[i][j]; c[0][j]=b[IB][j]; c[IB][j]=b[0][j]; }; }; //Vivod na ekran printf("Massive A:\n"); printMassiv(a); printf("Massive B:\n"); printMassiv(b); printf("Massive C:\n"); printMassiv(c); printf("\n ind stroki max el in A %d ", indMaxRow(a) ); printf("\n ind stroki max el in B %d ", indMaxRow(b) ); printf("\n ind stroki max el in C %d ", indMaxRow(c) ); printf("\nIA = %d, IB = %d",IA+1,IB+1); printf ("\n") swap2row (a, 1,3); printMassiv(a); getch(); return 0; } void printMassiv (int mas[N][M]) { int i, j; printf ("\n"); for(i=0; i<N; i++) { for(j=0; j<M; j++) printf("%d, ",mas[i][j]); printf("\n"); }; } int indMaxRow (int mas[N][M]) { /*возвращает индекс первой строки, в которой будет зафиксирован максимум*/ int maxInd=0, max=0; int i, j; max=mas[0][0]; for(i=0; i<N; i++) { for(j=0; j<M; j++) if (max <mas[i][j])maxInd=i; } return maxInd; }; void swap2row (int mas[N][M], int row1, int row2) { int temp=0, j=0; for(j=0; j<M; j++) { temp = mas[row1][j]; mas[row1][j]=mas[row2][j]; mas[row2][j]=temp; }; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д