...ポインタの別のレベルを必要とする:
#include <stdio.h>
struct Output {
int value;
int pos;
};
void max(int N, int masyvas[N][N], struct Output max_by_rows[N]){
int i, j;
for(i=0; i<N; i++){
max_by_rows[i].value = masyvas[i][0];
max_by_rows[i].pos = 0;
for(j=i; j<N; j++)
if(masyvas[i][j] > max_by_rows[i].value)
{
max_by_rows[i].value=masyvas[i][j];
max_by_rows[i].pos = j;
}
}
}
void min(int N, int masyvas[N][N], struct Output min_by_rows[N]){
int i, j;
for(i=0; i<N; i++){
min_by_rows[i].value = masyvas[i][0];
min_by_rows[i].pos = 0;
for(j=i; j<N; j++)
if(masyvas[i][j] < min_by_rows[i].value)
{
min_by_rows[i].value=masyvas[i][j];
min_by_rows[i].pos = j;
}
}
}
int main(){
int N = 4;
int a[4][4] = {
{0, 1, 2, 3} ,
{7, 6, 5, 4} ,
{8, 9, 10, 11},
{15, 14, 13,12}
};
struct Output maxs[4];
struct Output mins[4];
max(N, a, maxs);
min(N, a, mins);
int i;
for(i=0; i <N; i++)
{
printf("row %d \tmax: %d\tpos: %d\tmin: %d\tpos: %d\n", i, maxs[i].value, maxs[i].pos, mins[i].value, mins[i].pos);
}
return 0;
}
出力:
row 0 max: 3 pos: 3 min: 0 pos: 0
row 1 max: 7 pos: 0 min: 4 pos: 3
row 2 max: 11 pos: 3 min: 8 pos: 0
row 3 max: 15 pos: 0 min: 12 pos: 3
おはよう、あなたは行列の各列の最小値と最大値を印刷しますか? – eyllanesc
はい。それに応じて座標を印刷したい。たとえば、私の行列が5x5で、最大数が行1の列5で9であるとします。私はprintf( "1行目、2行目などの最大数は9で、座標は1と5です" )よくこれらの種類の何か:) – Rytis
ステップバイステップします。 1. 1D配列の最小値と最大値を見つけるプログラムを作成します。それらを座標で印刷してください。 2. 2D配列の各行に対してこの関数を呼び出します。 – MayurK