#include "stdio.h"
#include "stdlib.h"
//#include "time.h"
// マクロ定数
#define MAX_ROW 9
#define MAX_COL 9
// 関数のプロトタイプ宣言
void Init( int [][MAX_COL]);
void Draw( int [][MAX_COL] );
int GetMaxValue_of_Row( int, int [][MAX_COL] );
int GetMaxValue_of_Col( int, int [][MAX_COL] );
int GetMinValue_of_Row( int, int [][MAX_COL] );
int GetMinValue_of_Col( int, int [][MAX_COL] );
double GetAverageValue_of_Row( int, int [][MAX_COL] );
double GetAverageValue_of_Col( int, int [][MAX_COL] );
// メイン
int main()
{
int data1[MAX_ROW][MAX_COL];
// srand((unsigned)time(NULL));
Init( data1 );
Draw( data1 );
return 0;
}
void Init( int dat[][MAX_COL] )
{
int i, j;
for( i = 0; i < MAX_ROW; i++ ){
for( j = 0; j < MAX_COL; j++ ){
dat
[i
][j
] = rand() % 100; }
}
}
void Draw( int dat[][MAX_COL] )
{
int i, j;
// 力技フォーマット…正直どうにかしたい…
for( i
= 0; i
< MAX_COL
; i
++ ) printf(" ");
// 横計算出力
for( i = 0; i < MAX_ROW; i++ ){
for( j = 0; j < MAX_COL; j++ ){
}
printf( "%5d", GetMaxValue_of_Col
( i
, dat
) ); printf( "%5d", GetMinValue_of_Col
( i
, dat
) ); printf( "%5.1f", GetAverageValue_of_Col
( i
, dat
) ); }
// 縦計算出力
for( i
= 0; i
< MAX_COL
; i
++ ) printf( "%5d", GetMaxValue_of_Row
( i
, dat
) );
for( i
= 0; i
< MAX_COL
; i
++ ) printf( "%5d", GetMinValue_of_Row
( i
, dat
) );
for( i
= 0; i
< MAX_COL
; i
++ ) printf( "%5.1f", GetAverageValue_of_Row
( i
, dat
) ); }
int GetMaxValue_of_Row( int row, int dat[][MAX_COL] )
{
int i;
int max = 0;
for ( i = 0; i < MAX_ROW; i++ ){
if ( dat[i][row] > max ){
max = dat[i][row];
}
}
return max;
}
int GetMaxValue_of_Col( int col, int dat[][MAX_COL] )
{
int i;
int max = 0;
for ( i = 0; i < MAX_COL; i++ ){
if( dat[col][i] > max ){
max = dat[col][i];
}
}
return max;
}
int GetMinValue_of_Row( int row, int dat[][MAX_COL] )
{
int i;
int min = 99;
for ( i = 0; i < MAX_ROW; i++ ){
if ( dat[i][row] < min ){
min = dat[i][row];
}
}
return min;
}
int GetMinValue_of_Col( int col, int dat[][MAX_COL] )
{
int i;
int min = 99;
for ( i = 0; i < MAX_COL; i++ ){
if ( dat[col][i] < min ){
min = dat[col][i];
}
}
return min;
}
double GetAverageValue_of_Row( int row, int dat[][MAX_COL] )
{
int i;
int sum = 0;
for( i = 0; i < MAX_ROW; i++ ){
sum += dat[i][row];
}
return (double)sum/MAX_ROW;
}
double GetAverageValue_of_Col( int col, int dat[][MAX_COL] )
{
int i;
int sum = 0;
for( i = 0; i < MAX_COL; i++ ){
sum += dat[col][i];
}
return (double)sum/MAX_COL;
}
I2luY2x1ZGUgInN0ZGlvLmgiCiNpbmNsdWRlICJzdGRsaWIuaCIKLy8jaW5jbHVkZSAidGltZS5oIgoKLy8g44Oe44Kv44Ot5a6a5pWwCiNkZWZpbmUgTUFYX1JPVyA5CiNkZWZpbmUgTUFYX0NPTCA5CgoKLy8g6Zai5pWw44Gu44OX44Ot44OI44K/44Kk44OX5a6j6KiACnZvaWQgICBJbml0KCBpbnQgW11bTUFYX0NPTF0pOwp2b2lkICAgRHJhdyggaW50IFtdW01BWF9DT0xdICk7CmludCAgICBHZXRNYXhWYWx1ZV9vZl9Sb3coIGludCwgaW50IFtdW01BWF9DT0xdICk7CmludCAgICBHZXRNYXhWYWx1ZV9vZl9Db2woIGludCwgaW50IFtdW01BWF9DT0xdICk7CmludCAgICBHZXRNaW5WYWx1ZV9vZl9Sb3coIGludCwgaW50IFtdW01BWF9DT0xdICk7CmludCAgICBHZXRNaW5WYWx1ZV9vZl9Db2woIGludCwgaW50IFtdW01BWF9DT0xdICk7CmRvdWJsZSBHZXRBdmVyYWdlVmFsdWVfb2ZfUm93KCBpbnQsIGludCBbXVtNQVhfQ09MXSApOwpkb3VibGUgR2V0QXZlcmFnZVZhbHVlX29mX0NvbCggaW50LCBpbnQgW11bTUFYX0NPTF0gKTsKCgovLyDjg6HjgqTjg7MKaW50IG1haW4oKQp7CiAgICBpbnQgICAgIGRhdGExW01BWF9ST1ddW01BWF9DT0xdOwoKICAgIC8vIHNyYW5kKCh1bnNpZ25lZCl0aW1lKE5VTEwpKTsKICAgIEluaXQoIGRhdGExICk7CiAgICBEcmF3KCBkYXRhMSApOwoKICAgIHJldHVybiAgMDsKfQoKCnZvaWQgSW5pdCggaW50IGRhdFtdW01BWF9DT0xdICkKewogICAgaW50ICAgICBpLCBqOwoKICAgIGZvciggaSA9IDA7IGkgPCBNQVhfUk9XOyBpKysgKXsKICAgICAgICBmb3IoIGogPSAwOyBqIDwgTUFYX0NPTDsgaisrICl7CiAgICAgICAgICAgIGRhdFtpXVtqXSA9IHJhbmQoKSAlIDEwMDsKICAgICAgICB9CiAgICB9Cn0KCgp2b2lkIERyYXcoIGludCBkYXRbXVtNQVhfQ09MXSApCnsKICAgIGludCAgICAgaSwgajsKCiAgICAvLyDlipvmioDjg5Xjgqnjg7zjg57jg4Pjg4jigKbmraPnm7TjganjgYbjgavjgYvjgZfjgZ/jgYTigKYKICAgIHByaW50ZigiZGF0YSAiKTsKICAgIGZvciggaSA9IDA7IGkgPCBNQVhfQ09MOyBpKysgKSBwcmludGYoIiAgICAgIik7CiAgICBwcmludGYoIm1heCAgbWluICBhdmVcbiIpOwoKICAgIC8vIOaoquioiOeul+WHuuWKmwogICAgZm9yKCBpID0gMDsgaSA8IE1BWF9ST1c7IGkrKyApewogICAgICAgIHByaW50ZiggIiAgICIgKTsKICAgICAgICBmb3IoIGogPSAwOyBqIDwgTUFYX0NPTDsgaisrICl7CiAgICAgICAgICAgIHByaW50ZiggIiU1ZCIsIGRhdFtpXVtqXSApOwogICAgICAgIH0KCiAgICAgICAgcHJpbnRmKCAiJTVkIiwgR2V0TWF4VmFsdWVfb2ZfQ29sKCBpLCBkYXQgKSApOwogICAgICAgIHByaW50ZiggIiU1ZCIsIEdldE1pblZhbHVlX29mX0NvbCggaSwgZGF0ICkgKTsKICAgICAgICBwcmludGYoICIlNS4xZiIsIEdldEF2ZXJhZ2VWYWx1ZV9vZl9Db2woIGksIGRhdCApICk7CiAgICAgICAgcHJpbnRmKCAiXG4iICk7CiAgICB9CgogICAgLy8g57im6KiI566X5Ye65YqbCiAgICBwcmludGYoICJtYXgiICk7CiAgICBmb3IoIGkgPSAwOyBpIDwgTUFYX0NPTDsgaSsrICkgcHJpbnRmKCAiJTVkIiwgR2V0TWF4VmFsdWVfb2ZfUm93KCBpLCBkYXQgKSApOwogICAgcHJpbnRmKCAiXG4iICk7CgogICAgcHJpbnRmKCAibWluIiApOwogICAgZm9yKCBpID0gMDsgaSA8IE1BWF9DT0w7IGkrKyApIHByaW50ZiggIiU1ZCIsIEdldE1pblZhbHVlX29mX1JvdyggaSwgZGF0ICkgKTsKICAgIHByaW50ZiggIlxuIiApOwoKICAgIHByaW50ZiggImF2ZeOAgCIgKTsKICAgIGZvciggaSA9IDA7IGkgPCBNQVhfQ09MOyBpKysgKSBwcmludGYoICIlNS4xZiIsIEdldEF2ZXJhZ2VWYWx1ZV9vZl9Sb3coIGksIGRhdCApICk7CiAgICBwcmludGYoICJcbiIgKTsKfQoKCmludCBHZXRNYXhWYWx1ZV9vZl9Sb3coIGludCByb3csIGludCBkYXRbXVtNQVhfQ09MXSApCnsKICAgIGludCAgICAgaTsKICAgIGludCAgICAgbWF4ID0gMDsKCiAgICBmb3IgKCBpID0gMDsgaSA8IE1BWF9ST1c7IGkrKyApewogICAgICAgIGlmICggZGF0W2ldW3Jvd10gPiBtYXggKXsKICAgICAgICAgICAgbWF4ID0gZGF0W2ldW3Jvd107CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG1heDsKfQoKCmludCBHZXRNYXhWYWx1ZV9vZl9Db2woIGludCBjb2wsIGludCBkYXRbXVtNQVhfQ09MXSApCnsKICAgIGludCAgICAgaTsKICAgIGludCAgICAgbWF4ID0gMDsKCiAgICBmb3IgKCBpID0gMDsgaSA8IE1BWF9DT0w7IGkrKyApewogICAgICAgIGlmKCBkYXRbY29sXVtpXSA+IG1heCApewogICAgICAgICAgICBtYXggPSBkYXRbY29sXVtpXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gbWF4Owp9CgoKaW50IEdldE1pblZhbHVlX29mX1JvdyggaW50IHJvdywgaW50IGRhdFtdW01BWF9DT0xdICkKewogICAgaW50ICAgICBpOwogICAgaW50ICAgICBtaW4gPSA5OTsKCiAgICBmb3IgKCBpID0gMDsgaSA8IE1BWF9ST1c7IGkrKyApewogICAgICAgIGlmICggZGF0W2ldW3Jvd10gPCBtaW4gKXsKICAgICAgICAgICAgbWluID0gZGF0W2ldW3Jvd107CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG1pbjsKfQoKCmludCBHZXRNaW5WYWx1ZV9vZl9Db2woIGludCBjb2wsIGludCBkYXRbXVtNQVhfQ09MXSApCnsKICAgIGludCAgICAgaTsKICAgIGludCAgICAgbWluID0gOTk7CgogICAgZm9yICggaSA9IDA7IGkgPCBNQVhfQ09MOyBpKysgKXsKICAgICAgICBpZiAoIGRhdFtjb2xdW2ldIDwgbWluICl7CiAgICAgICAgICAgIG1pbiA9IGRhdFtjb2xdW2ldOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBtaW47Cn0KCgpkb3VibGUgR2V0QXZlcmFnZVZhbHVlX29mX1JvdyggaW50IHJvdywgaW50IGRhdFtdW01BWF9DT0xdICkKewogICAgaW50ICAgICBpOwogICAgaW50ICAgICBzdW0gPSAwOwoKICAgIGZvciggaSA9IDA7IGkgPCBNQVhfUk9XOyBpKysgKXsKICAgICAgICBzdW0gKz0gZGF0W2ldW3Jvd107CiAgICB9CgogICAgcmV0dXJuIChkb3VibGUpc3VtL01BWF9ST1c7Cn0KCgpkb3VibGUgR2V0QXZlcmFnZVZhbHVlX29mX0NvbCggaW50IGNvbCwgaW50IGRhdFtdW01BWF9DT0xdICkKewogICAgaW50ICAgICBpOwogICAgaW50ICAgICBzdW0gPSAwOwoKICAgIGZvciggaSA9IDA7IGkgPCBNQVhfQ09MOyBpKysgKXsKICAgICAgICBzdW0gKz0gZGF0W2NvbF1baV07CiAgICB9CgogICAgcmV0dXJuIChkb3VibGUpc3VtL01BWF9DT0w7Cn0=