秋学期の授業のために、夏休み中に自主勉強としてやっているものです。
キーボードから次元 N を入力した後,N × N の配列の各行の合計を求めて,どの行の合計が最大かを表示するプログラムである.
上記のような問題で、下記のようにソースコードを書いたのですが、出力がおかしくなってしまいます。
確かめていただける方やわかる方いらっしゃいましたらご指摘していただけるとありがたいです。ポインタは秋学期の授業で勉強する内容ということもあり、これ以上は原因がわかりませんでした、、、。どうぞよろしくお願いいたします。
#include <stdio.h> #include <stdlib.h> int main(void){ int i,j,N,bmaxno=0; double *A,*ai,*b,bmax = 0.0; printf("N= "); scanf("%d",&N); A= (double *) malloc(N*N*sizeof(double)); if(A==NULL){ printf("Can’t allocate memory.Y=n"); exit(1); } b= (double *) malloc(N*sizeof(double)); if(b==NULL){ printf("Can’t allocate memory.Y=n"); exit(1); } ai = A; for(i=0;i<N;i++){ for(j=0;j<N;j++){ printf("A[%d][%d] = ",i,j); scanf("%lf",&ai[j]); } ai+=N; } for(i=0;i<N;i++){ for(j=0;j<N;j++){ b[i]+=ai[j]; } printf("b(%d) = %f\n", i, b[i]); } for(i=0;i<N;i++){ if(bmax <b[i]){ bmax = b[i]; bmaxno = i; } } free(A); free(b); printf("%d is Maxnumber\n",bmaxno); return 0; } コード
このソースコードで実行しますと、出力が以下のようになってしまい、各行の合計を表すb(i)が全て0になってしまいます。これを直すにはどのようにすればよろしいでしょうか。よろしくお願いいたします。
N= 3
A[0][0] = 9
A[0][1] = 8
A[0][2] = 7
A[1][0] = 1
A[1][1] = 2
A[1][2] = 3
A[2][0] = 2
A[2][1] = 3
A[2][2] = 4
b(0) = 0.000000
b(1) = 0.000000
b(2) = 0.000000
2 is Maxnumber
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/29 08:41
2020/08/29 08:42
2020/08/29 08:42
2020/08/29 08:43
2020/08/29 08:44