大学の授業で出された問題です。配列を使っての並び替えの問題でつまずきました。問題内容は以下の通りです。
問題
キーボードから5つの値を入力し、大きい順に並び変えて画面に表示するプログラムを作成せよ。
ただし、配列を使用すること。
※注意点
授業でTAさんに教えてもらったときは配列の次元は一次元で作成できるといわれました。
できれば一次元でできる方法を教えていただきたいです。
※エラー
C++
1#include<stdio.h> 2#include<stdlib.h> 3#include<math.h> 4 5int main() 6{ 7 int a[5], b, c, d,e,f,g; 8 9 for (b = 0; b <= 4; b++) 10 { 11 printf("整数を入力して下さい>>>"); 12 scanf_s("%d", &a[b]); 13 } 14 15 16 for (d = 0; d <= 3; d++) 17 { 18 c = a[d]; 19 f = d; 20 for (b = d; b <= 3; b++) 21 { 22 if (a[b] < a[b + 1]) 23 { 24 c = a[b + 1]; 25 f = b + 1; 26 } 27 28 29 } 30 e = a[d]; 31 a[d] = c; 32 a[f] = e; 33 } 34 35 36 37 38 for (g = 0; g <= 4; g++) 39 { 40 printf("%d\n", a[g]); 41 } 42 43 44 return 0; 45}
このようにして一番大きい数字を配列の一番前の数字と入れ替えていく方法でやりましたが
成功例
1 2 3 4 5 ←入力
5 4 3 2 1 ←出力
エラー例
13 4 10 15 5 ←入力
15 13 5 10 4 ←出力
のようになります。
うまくいく数字もありましたが、まったく法則性が分かりません。どなたかお願いします。
回答2件
あなたの回答
tips
プレビュー