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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы