###前提・実現したいこと
teratail初心者であり、C言語初心者です。
環境は、OS X 10.11.2です。
同じ結果になるように書いたつもりの下の2つのプログラムが、結果が同じにならない理由がわかりません。
ご教授お願い致します。
###発生している問題・エラーメッセージ
ソースコード2がうまくいってないように思います。
ソースコード1の実行結果:
まず入力する実数の個数を入力せよ。3
1個目の実数を入力せよ: 63
2個目の実数を入力せよ: 56
3個目の実数を入力せよ: 3
最大値は1番目である。
最小値は3番目である。
最大値は63.000000である。
最小値は3.000000である。
最大値と最小値の差は60.00である。
ソースコード2の実行結果:
1つ目の実数を入力してください。:63
まだ入力しますか?・・・Yes=1, No=0)
1
2つ目の実数を入力してください。:56
まだ入力しますか?・・・Yes=1, No=0)
1
3つ目の実数を入力してください。:3
まだ入力しますか?・・・Yes=1, No=0)
0
最大値は1番目です。
最大値は63.000000です。
最小値は0.000000です。
###ソースコード1
#include <stdio.h> int main(void) { int i, n, j, maxc, minc; double min, max, sa, num[n+1]; printf("まず入力する実数の個数を入力せよ。"); scanf("%d", &n); for(i = 0; i < n; i++) { printf("%d個目の実数を入力せよ: ", i + 1); scanf("%lf", &num[i]); } min = max = num[0]; for(i = 1; i < n; i++) { if (num[i] < min) { min = num[i]; } if (num[i] > max) { max = num[i]; } } for (j = 0; j < i; j++) { if (num[j] == max) { printf("最大値は%d番目である。\n", j+1); break; } } for (j = 0; j < i; j++) { if (num[j] == min) { printf("最小値は%d番目である。\n", j+1); break; } } printf("最大値は%lfである。\n", max); printf("最小値は%lfである。\n", min); sa = max - min; printf("最大値と最小値の差は%.2lfである。", sa); return 0; }
###ソースコード2
#include <stdio.h> int main(void) { int count, maxc, minc; int i = 0; int j = 0; double num[i], min, max, sa; do { printf("%dつ目の実数を入力してください。:", i+1); scanf("%lf", &num[i]); i = i + 1; printf("まだ入力しますか?・・・Yes=1, No=0)\n"); scanf("%d", &count); } while (count == 1); printf("%d\n", i); max = min = num[0]; for(j = 1; j <= i; j++) { if (num[j] <= min) { min = num[j]; } if (num[j] >= max) { max = num[j]; } } for (j = 0; j < i; j++) { if (num[j] == max) { printf("最大値は%d番目です。\n", j+1); break; } } for (j = 0; j < i; j++) { printf("%d\n", j); if (num[j] == min) { printf("最小値は%d番目です。\n", j+1); } } printf("最大値は%lfです。\n", max); printf("最小値は%lfです。\n", min); sa = max - min; printf("最大値と最小値の差は%.2lfです。", sa); return 0; }
回答3件
あなたの回答
tips
プレビュー