Переставить строки в матрице с помощью процедуры - 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;
};
}