C言語の問題について質問があります。
解決したいこと
お世話になります。
問題の内容は、”入力される n 個の実数の和を double 型変数と float 型変数で計算して,その差を出力せよ.なお,実数の個数 nはコマンドライン引数で与えられる.出力の部分で述べているように,1 行目は実数の形式(%f)で,2 行目は指数形式(%e)で出力せよ.”です。
自分でプログラムを作成しましたが、途中でテストが成功しなく、間違いが自分ではわからないため、皆様にお聞きしたいです。
発生している問題・エラー
==== テスト 8 (Test case 8) ====
$ ./real_sum 12
48828125.0 9765625.0 1953125.0 390625.0 78125.0 15625.0 3125.0 625.0
125.0 25.0 5.0 1.0
61035156.000000 - 61035156.000000 = 0.000000
6.103516e+07 - 6.103516e+07 = 0.000000e+00==== 期待される出力 (Correct output) ====
61035156.000000 - 61035144.000000 = 12.000000
6.103516e+07 - 6.103514e+07 = 1.200000e+01
==== 出力の違い (Different lines) ====
--- 8.correct 2023-02-01 09:00:02.751307000 +0900
+++ 8.out 2023-02-01 17:01:31.483392800 +0900
@@ -1,2 +1,2 @@
-61035156.000000 - 61035144.000000 = 12.000000
-6.103516e+07 - 6.103514e+07 = 1.200000e+01
+61035156.000000 - 61035156.000000 = 0.000000
+6.103516e+07 - 6.103516e+07 = 0.000000e+00
\ No newline at end of file
================
テスト 8 失敗(failed
該当するソースコード
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[]){
double d[100000], sum;
for(int i = 0;i < atoi(argv[1]);i++){
scanf("%lf",&d[i]);
sum += d[i];
}
printf("%f - %f = %f\n",sum,(float)sum,sum-(float)sum);
printf("%e - %e = %e",sum,(float)sum,sum-(float)sum);
return 0;
}
0 likes