今回学校の宿題で、
「無作為に7つの自然数を入力した時に、それらを単純選択法によって昇順に整列して表示するプログラムをC言語で作成せよ。」
というものが出ました。
そこで自分なりに考えてプログラミングしてみたのですが、7数を入力してもそれが入れ替わることなく出力されてしまうのです。
(理想) 5,6,4,3,2,7,1 → 1,2,3,4,5,6,7
(現実) 5,6,4,3,2,7,1 → 5,6,4,3,2,7,1
こんなかんじです。以下にソースコードを載せるので、詳しい方教えて下さい、お願いします。使用ソフトは「EasyIDEC」です。
#include <stdio.h>
int main(void)
{
int a,b,c,d,e,f,g,w,x,y,z,min;
printf("入力した7つの自然数を昇順に整列させて示します。\n");
printf("1つめの自然数を入力してください。:");
scanf("%d",&a);
printf("2つめの自然数を入力してください。:");
scanf("%d",&b);
printf("3つめの自然数を入力してください。:");
scanf("%d",&c);
printf("4つめの自然数を入力してください。:");
scanf("%d",&d);
printf("5つめの自然数を入力してください。:");
scanf("%d",&e);
printf("6つめの自然数を入力してください。:");
scanf("%d",&f);
printf("7つめの自然数を入力してください。:");
scanf("%d",&g);
int array[7] = {a,b,c,d,e,f,g};
w,x,y,z = 0;
while(w <= 3) {
min = array[w];
x = w ; 1;
while(x <= 4) {
if(array[x] <= min) {
min = array[x];
y = x;
}
else {}
x++;
}
if(array[w] == min) {
y = w;
}
else {}
z = array[w];
array[w] = array[y];
array[y] = z;
w++;
}
printf("%d,%d,%d,%d,%d,%d,%d\n",array[0],array[1],array[2],array[3],array[4],array[5],array[6]);
return 0;
}