現在は「新版明解c++」にてc++の勉強をしているのですが、どうしてもできない問題がでてきたので、
質問さしていただきたいと思います。
問題
n行5列のint型2次元配列aの各行の最大値を、要素数nの1次元配列mに格納する関数maxlineを作成せよ。
void maxline(int a[/url][5],int m[/url],int n);
たとえば、aに受け取った3行5列の構成要素が{{1,2,5,3,8},{6,7,4,2,3},{3,0,5,9,1}}であれば、mに{8,7,9}を格納せよ。
という問題です。以下開発環境と自分の作ったプログラムです。
OS:Windows XP
コンパイラ:Borand C++
#include<iostream> using namespace std; void maxline(int a[/url][5],int m[/url],int n); int main(void) { int n; int a[/url][5]={0}; int m[/url]={0}; cout << "行数:"; cin >> n; for(int i=0;i<n;i++){ for(int j=0;j<5;j++){ cout << "a[" << i << "][" << j << "] = "; cin >> a[j]; } } maxline(a,m,n); for(int i=0;i<n;i++){ cout << "m[" << i << "] = " << m << '\n'; } } void maxline(int a[/url][5],int m[/url],int n) { int max; for(int i=0;i<n;i++){ max=a[0]; for(int j=1;j<5;j++){ if(max<a[j]){ max=a[j]; } } m=max; } }
プログラムは実行できるのですが、思ったとおりに動きません。
最初nに3を代入してもなぜか、ループが5回になってしまいます。
何度か見直したのですが、どうしても分かりません。
どうかご協力お願いします。