• 締切済み

C++

forを使って mとnを入力し(m、nとも最大10)、 m*n個の実数を入力して、m行n列の行列を作る。 この行列に対して、各行の合計、平均及び最大と各列の合計、平均及び最大を求めるプログラムを作成。-----------------------------------------------------------------教えてください。

  • suzy
  • お礼率0% (0/1)

みんなの回答

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

学校でプログラミングを教えてる先生なのですが、質問が課題くさいのでヒントだけ。 C++で書く必要があるなら行列classを作ればいいですね。 コンストラクタで最初の入力のmとnを受け取ればいいと思います。 当然データメンバとして行列をそのまま持てば簡単です。 行と列が可変なのでコンストラクタで動的に確保することになるでしょう(行列ともに1つ多めに確保してそこに合計を記憶させることを忘れずに)。 結果,デストラクタに開放が必要です。 あとは関数メンバですね。 ・x行y列に値zを設定する関数を用意する(ついでに合計に加算)。 ・行,列平均を計算する。 ・列数を返す。 ・行数を返す。 ・任意の位置の値を返す。 ・列内最大値を返す。 ・行内最大値を返す。 課題なら自分で考えないと意味がありません。 課題じゃないなら補足してください。

関連するQ&A

  • 【至急】C言語のプログラミングについての質問です。

    【至急】C言語のプログラミングについての質問です。 以下の2問の解答をお願い致します。 問1. サイズ3の2つの配列の和、差、内積を出力するプログラムを作成してください。 問2. m+1*n+1行列の配列aの 各行ごとの合計 gyouwa[i] i=0,1,・・・,m 各列ごとの合計 retuwa[i] i=0,1,・・・,n を計算するプログラムを作作成してください。 また、 各行内での最大値 aimax[i] i=0,1,・・・,m 各列内での最大値 ajmax[i] i=0,1,・・・,n を求めるプログラムを作成してください。

  • C言語をなるべく早く教えてください

    C言語の問題集の回答がないので困っているので誰か教えてください。 私はまだ始めたばかりなので手におえません。 今私が理解しているif文、switch文、for文、while文、do-while文、配列、を 使用してでお願いします。 入力した行列を表示させるプログラムを作成しなさい。ただし、行列は任意に指定できるものにし、表示のさせ方にも気を付けること。 実行結果例1 N×M行列数を入力してください N=3 M=2 3×2行列を入力して下さい 1行1列を入力して下さい 1 1行2列を入力して下さい 2 2行1列を入力して下さい 3 2行2列を入力して下さい 4 3行1列を入力して下さい 5 3行2列を入力して下さい 6 入力した3×2行列は次のようなものです 1.00 2.00 3.00 4.00 5.00 6.00 <実行結果例2> N×M行列数を入力してください N=3 M=4 3×4行列を入力して下さい 1行1列を入力して下さい 1 1行2列を入力して下さい 2 1行3列を入力して下さい 3 1行4列を入力して下さい 4.23 2行1列を入力して下さい 5.1224 2行2列を入力して下さい 92.12 2行3列を入力して下さい 2.12 2行4列を入力して下さい 36.54 3行1列を入力して下さい 2.213 3行2列を入力して下さい 9.56 3行3列を入力して下さい 8 3行4列を入力して下さい 5.23153 入力した3×4行列は次のようなものです 1.00 2.00 3.00 4.23 5.12 92.12 2.12 36.54 2.21 9.56 8.00 5.23

  • C言語の問題が解けません

    C言語の問題ができなくて困っています。 これが問題文です。 与えられた表の縦・横の値の平均/合計をそれぞれの行・列ごとに求め出力するプログラムを作成しなさい。ただし、縦・横のデータ数は10個未満とし、それぞれの数字は整数とする。また、出力は右詰め6桁で出力することとし、平均における小数点以下は1桁まで表示する。平均行/列および合計行/列がぶつかる個所は、表全体の平均と合計を計算した結果を表示する。 補足として入力された行列数が10未満であることは、プログラム内でチェックすること。 例:20,3→再入力となる(行が9未満でない)  :2,-5→再入力となる(行が負の値) 実行結果例はこんな感じらしいです。 行数(最大9),列数(最大9)をカンマ区切りで入力(行,列):4,4 データをカンマ区切りで行ごとに入力[4行 4列] 52,96,15,20 86,22,35,45 45,78,54,36 16,86,74,55  52 96 15 20 45.8 183  86 22 35 45 47.0 188  45 78 54 36 53.3 213  16 86 74 55 57.8 231 49.8  70.5 44.5 39.0 50.9 - 199 282 178 156 - 815 自分はここまで自力でやったのですがここからが試行錯誤してもできません。このあとどのようにプログラムを書いていけばいいのですか? よろしくお願いします。 #include <stdio.h> int main(){ int gyou,retu,Loop1=0,Loop2=0; int kazu[8][8]; printf("行数(最大9行)、列数(最大9列)をカンマで区切って入力 (行,列):"); scanf("%d,%d",&gyou,&retu); if((gyou<=9)&&(retu<=9)){ printf("データをカンマ区切りで行ごとに入力 [%d行,%d列]\n",gyou,retu); for(Loop2=0;Loop2<gyou;Loop2++){ for(Loop1=0;Loop1<retu;Loop1++){ scanf("%d\n",&kazu[gyou--][retu--]);

  • c言語のプログラムで行列の積を計算する

    指定された行・列数(それぞれ10以下とする)の行列 X, Y の積 Z = X × Y を求めるプログラムを作成せよ.行列の要素はすべて整数とする. このプログラムで行と列の成分を入力するときに、1列になってしまうのですがどうしたらちゃんと入力できますか? int main(void) { double A[10][10]; double B[10][10]; int i,j,m,n,p,k; printf("行列xの行数は?:"); scanf("%d",&m); printf("行列xの列数(行列yの行数)は?:"); scanf("%d",&n); printf("行列yの列数は?:"); scanf("%d",&p); printf("行列xを入力してください。\n"); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { scanf("%d", &A[i][j]); } } printf("行列yを入力してください。\n"); for (i = 0; i < n; i++) { for (j = 0; j < p; j++) { scanf("%d", &B[i][j]); } }

  • Cプログラム

    c言語で「正整数Nを入力後、N個の実数を入力し、それらの平均値と最大値を表示するプログラム」を教えてください。

  • 行列をベクトルに(C言語)

    行列をベクトルに(C言語) m行n列の行列Aがあったとき、それをm×n行1列の行列(ベクトル)Bに するというプログラムを作りたいです。 これは、行列Aの1列目m行分の要素をそのまま行列Bの1行1列目に持っていき、 それを行列Aのn列の数だけ繰り返す、といった要領です(画像参照) つまり MATRIX B; B.m=A.m*A.n; B.n=1; return B; ということだと思うのですが、なかなかうまいくいきません。 また、構造体も使いたいので、 typedef struct { int m; int n; double *mat; } MATRIX; と宣言しました。 画像は説明のため、一応載せておきました。(例として4列の行列になっています) みなさんよろしくお願いします。

  • ほかの人が作ったのも見たいのでよろしくお願いします

    if,for,switch,while,do-while文、配列、バブルソートを用いて 入力した行列の掛け算を行うプログラムを作成せよ。 但し、行列数は任意に指定できるものにし、表示のさせ方にも気を付けること。 また、入力した行列の掛け算が行えない場合はエラーを返すようにすること。 <実行結果例1> 行列1:N×M行列数を入力してください N=2 M=2 行列2:O×P行列数を入力してください O=2 P=2 行列1:2×2行列を入力して下さい 1行1列を入力して下さい 1 1行2列を入力して下さい 2 2行1列を入力して下さい 3 2行2列を入力して下さい 4 行列2:2×2行列を入力して下さい 1行1列を入力して下さい 5 1行2列を入力して下さい 6 2行1列を入力して下さい 7 2行2列を入力して下さい 8 入力した行列1(2×2行列)×行列2(2×2行列)の計算結果は次ようなものです 19.00 22.00 43.00 50.00 <実行結果例2> 行列1:N×M行列数を入力してください N=2 M=3 行列2:O×P行列数を入力してください O=3 P=4 行列1:2×3行列を入力して下さい 1行1列を入力して下さい 1.21 1行2列を入力して下さい 2.35 1行3列を入力して下さい 2.65 2行1列を入力して下さい 1.2356 2行2列を入力して下さい 5.952165 2行3列を入力して下さい 5.23 行列2:3×4行列を入力して下さい 1行1列を入力して下さい 5.9685 1行2列を入力して下さい 86.3251 1行3列を入力して下さい 2.14 1行4列を入力して下さい 1.415 2行1列を入力して下さい 2 2行2列を入力して下さい 3.1415 2行3列を入力して下さい 0.717 2行4列を入力して下さい 2.36 3行1列を入力して下さい 2 3行2列を入力して下さい 3 3行3列を入力して下さい 8.23 3行4列を入力して下さい 4.956 入力した行列1(2×3行列)×行列2(3×4行列)の計算結果は次ようなものです 17.22 119.79 26.08 20.39 29.74 141.05 49.95 41.72 <実行結果例3> 行列1:N×M行列数を入力してください N=3 M=2 行列2:O×P行列数を入力してください O=4 P=3 入力した行列の掛け算は出来ません

  • 非常に困ってます

    C言語の問題集の回答がないので困っているので誰か教えてください。 私はまだ始めたばかりなので手におえません。 今私が理解しているif文、switch文、for文、while文、do-while文、配列、を 使用してでお願いします。 入力した行列の掛け算を行うプログラムを作成しなさい。 ただし、行列数は任意に指定できるものにし、表示のさせ方にも気を付けること。 また、入力した行列の掛け算が行えない場合はエラーを返すようにしなさい。 実行結果例1 行列1:N×M行列数を入力してください N=2 M=2 行列2:O×P行列数を入力してください O=2 P=2 行列1:2×2行列を入力して下さい 1行1列を入力して下さい 1 1行2列を入力して下さい 2 2行1列を入力して下さい 3 2行2列を入力して下さい 4 行列2:2×2行列を入力して下さい 1行1列を入力して下さい 5 1行2列を入力して下さい 6 2行1列を入力して下さい 7 2行2列を入力して下さい 8 入力した行列1(2×2行列)×行列2(2×2行列)の計算結果は次ようなものです 19.00 22.00 43.00 50.00 実行結果例2 行列1:N×M行列数を入力してください N=2 M=3 行列2:O×P行列数を入力してください O=3 P=4 行列1:2×3行列を入力して下さい 1行1列を入力して下さい 1.21 1行2列を入力して下さい 2.35 1行3列を入力して下さい 2.65 2行1列を入力して下さい 1.2356 2行2列を入力して下さい 5.952165 2行3列を入力して下さい 5.23 行列2:3×4行列を入力して下さい 1行1列を入力して下さい 5.9685 1行2列を入力して下さい 86.3251 1行3列を入力して下さい 2.14 1行4列を入力して下さい 1.415 2行1列を入力して下さい 2 2行2列を入力して下さい 3.1415 2行3列を入力して下さい 0.717 2行4列を入力して下さい 2.36 3行1列を入力して下さい 2 3行2列を入力して下さい 3 3行3列を入力して下さい 8.23 3行4列を入力して下さい 4.956 入力した行列1(2×3行列)×行列2(3×4行列)の計算結果は次ようなものです 17.22 119.79 26.08 20.39 29.74 141.05 49.95 41.72 実行結果例3 行列1:N×M行列数を入力してください N=3 M=2 行列2:O×P行列数を入力してください O=4 P=3 入力した行列の掛け算は出来ません

  • 【至急】C言語のプログラミングについての質問です。

    【至急】C言語のプログラミングについての質問です。 以下の5問の解答をお願い致します。 問1. サイズ3の2つの配列の和、差、内積を出力するプログラムを作成してください。 問2. m+1*n+1行列の配列aの 各行ごとの合計 gyouwa[i] i=0,1,・・・,m 各列ごとの合計 retuwa[i] i=0,1,・・・,n を計算するプログラムを作作成してください。 また、 各行内での最大値 aimax[i] i=0,1,・・・,m 各列内での最大値 ajmax[i] i=0,1,・・・,n を求めるプログラムを作成してください。 問3. 下のプログラムの[____]を埋めてください。ヒント:a,p,*p,p++,p=a,*p=a,*p++,(*p)++のいずれかが入ります。 #include<stadio.h> int main(void) { int a[5]={1,2,34,5,}; int i,+p; [____]; prntf("先頭のアドレスは%dです。\n",p); for(i=0;i<5;i++){ prntf("アドレス%dに%dが格納されています。\n"[____],[____]); [___]; } return0; } 問4. 下のプログラムの[____]を埋めてください。ヒント:p,*p,p=a,p=a[0],*p++,(*p)++のいずれかが入ります。 #include<stadio.h> int main(void) { int i; char *a[5],*p; a[0]="Hello"; a[1]="Good morning"; a[2]="Good evening"; a[3]="Good night"; a[4]="Bye Bye"; [____]; for(i=0;i<50;i++){ prntf("アドレス%dに%cが格納されています。\n"[____],[____]); [___]; } return0; } 問5. まず3つの整数知値(たとえば2,3,1)を書いたfile1という名前のテキストファイルを作成してください。 数値をカンマ(,)で区切って並べることで、複数の変数をfscanfで読み込むことが可能(CVS形式)となります。 このファイルから数値を読み込み、合計をファイルfile2に書き込むプログラムkaitou.cを作成してください。

  • 【至急】C言語のプログラミングについての質問です。

    【至急】C言語のプログラミングについての質問です。 以下の5問の解答をお願い致します。 問1. サイズ3の2つの配列の和、差、内積を出力するプログラムを作成してください。 問2. m+1*n+1行列の配列aの 各行ごとの合計 gyouwa[i] i=0,1,・・・,m 各列ごとの合計 retuwa[i] i=0,1,・・・,n を計算するプログラムを作作成してください。 また、 各行内での最大値 aimax[i] i=0,1,・・・,m 各列内での最大値 ajmax[i] i=0,1,・・・,n を求めるプログラムを作成してください。 問3. 下のプログラムの[____]を埋めてください。ヒント:a,p,*p,p++,p=a,*p=a,*p++,(*p)++のいずれかが入ります。 #include<stadio.h> int main(void) { int a[5]={1,2,34,5,}; int i,+p; [____]; prntf("先頭のアドレスは%dです。\n",p); for(i=0;i<5;i++){ prntf("アドレス%dに%dが格納されています。\n"[____],[____]); [___]; } return0; } 問4. 下のプログラムの[____]を埋めてください。ヒント:p,*p,p=a,p=a[0],*p++,(*p)++のいずれかが入ります。 #include<stadio.h> int main(void) { int i; char *a[5],*p; a[0]="Hello"; a[1]="Good morning"; a[2]="Good evening"; a[3]="Good night"; a[4]="Bye Bye"; [____]; for(i=0;i<50;i++){ prntf("アドレス%dに%cが格納されています。\n"[____],[____]); [___]; } return0; } 問5. まず3つの整数知値(たとえば2,3,1)を書いたfile1という名前のテキストファイルを作成してください。 数値をカンマ(,)で区切って並べることで、複数の変数をfscanfで読み込むことが可能(CVS形式)となります。 このファイルから数値を読み込み、合計をファイルfile2に書き込むプログラムkaitou.cを作成してください。

専門家に質問してみよう