• 締切済み

どうしても上手くいきません…

#include<stdio.h> #include<stdlib.h> double sumf(int n,double *ds); int main(double){ double a,b; double df=0.7 int n; double *ds; double *z; int size; printf("Input two numbers -> "); scanf("%lf%lf",&a,&b); printf("n"); size = sizeof(*ds)*(1+(int)((b-a)/df)); z = ds = (double*)malloc(size); n = 0; while(a<=b){ *z = a; a += df; printf("%.1f",*z++); n++; } printf("n"); printf("n"); printf("sumf = %.1fn",sumf(n,ds)); return 0; } double sumf(int n,double *ds){ double sum = 0; while(n){ sum += *ds++; n--; } return sum; } 入力された二つの実数a,b(a<b)をもとに、aからbまで0.7ずつ増加する数値の配列を作り、その配列の合計を求める関数sumfを作りなさい。ただし、配列を作る、配列の合計を求める箇所はポインタを使うこと。 【ヒント】 ・プログラムの構成 mainで配列要素の作成、配列の表示、関数sumf呼出し、sumの表示。 関数sumfで配列の合計を求めreturnで合計値を返す。 ・引数の考慮点 実数の配列だけでなく配列の要素数も引数として渡す必要がある。 宜しくお願いします。 どこが違うのでしょうか? 【現時点での実行結果】 ./p243.c Input two numbers -> 2.0 7.0 2.0 2.7 3.4 4.1 4.8 5.5 6.2 6.9 sumf = 16.0 【実行したい結果】 ./p243.c Input two numbers -> 2.0 7.0 2.0 2.7 3.4 4.1 4.8 5.5 6.2 6.9 sumf = 35.6 どこが間違っているのでしょうか? 出来るだけの手直しはしたのですが…

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.4

>printf("n"); こういうソースを提示している時点で、 【現時点での実行結果】を得るためのソースと 我々が実際に目にしているソースとの間に 食い違いのあることが想像できます。 【現時点での実行結果】を得たときのソースを そっくりそのままコピー&ペーストして提示してください。

回答No.3

Input two numbers -> 2.0 7.0 2.0 2.7 3.4 4.1 4.8 5.5 6.2 6.9 sumf = 35.6 うちでやると35.6になります。 コンパイルエラーが無くなる状態でもう一度実行してみたら いかがですか。

回答No.2

> sumf = 16.0 dsをインクリメントするように修正する前の結果じゃないですか? 先頭データ(2.0)を8回足してるように見えますけど。 ちゃんとコンパイルしましたか?

回答No.1

http://okwave.jp/qa5348242.html 前の質問に継続するか、一旦閉じてから質問してください。 こちらの換気用では動作します。 >printf("sumf = %.1fn",sumf(n,ds)); の前のnの値はいくつになっていますか?

関連するQ&A

専門家に質問してみよう