我编写了一个代码,它创建一个矩阵并以升序形式对其进行排序。 (行)
我想在我用代码给出的前例中执行以下操作,但我不知道如何操作。
例如。如果我输入“r”作为输入; 像这样输入的矩阵;
3 4 5
9 2 8
6 4 8
应该以这种形式出现;
3 4 5
2 8 9
4 6 8
屏幕上的输出应该是;
4
8
6
当我们取行的中位数时。
并且,如果我将输入值输入为“c”(用于列排序和中位数)
3 4 5
9 2 8
6 4 8
应将其自身重新排序为;
3 2 5
6 4 8
9 4 8
中值应显示为;
6 4 8
这是我的完整代码;
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define n 3
int main()
{
int arr[n][n],min,i,j,tmp,y,k,w,z=0,q=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("Enter number: ");
scanf("%d",&arr[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
z = j;
min = arr[i][j];
for (k = j +1 ; k < n; k++)
{
if (arr[i][k] < min)
{
min = arr[i][k];
z = k;
}
}
tmp=arr[i][j];
arr[i][j]=min;
arr[i][z]=tmp;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",arr[i][j]);
printf("\n");
}
getch();
}
最佳答案
尝试执行 main() 中的所有操作将使这种方式变得过于复杂。
相反,将代码分解为函数,每个事件一个函数。
例如:
static int matrix[3][3] = {{0}}
int main()
inputMatrix()
done = false
while(!done)
action = actionMenu()
switch( action )
case 0:
....
break;
case 1:
....
break;
default:
done = true
break;
end switch
end while
return(0)
int actionMenu()
display menu,
done = false
while(!done)
display prompt
gets response,
if response is valid
done = true
end if
end while
returns validated response
void inputMatrix()
displays criteria
loop until 9 valid responses input
display prompt
get response
validate response
end loop:
void sortEachRow()
--there are three rows, and three columns per row
for row=0; row<3; row++
swapped = true
while swapped
swapped = false
for column=0; column<2; column++
if row[column] > row[column+1]
swapped = true
exchange row[column], row[column+1]
end if
end for
end while
end for
void sortEachColumn()
very similar to sortEachRow
void PrintRowMedian()
print row[1][0]
print row[1][1]
print row[1][2]
void PrintColumnMedian()
print row[0][1]
print row[1][1]
print row[2][1]
关于c - 如何找到矩阵 C 中的中位数(行和列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584215/