宜しくお願いいたします。
int型10個の初期値を持つ配列に対し、
①再入力(input) ②表示(output) ③昇順での並び替え(min) ④降順での並び替え(max) ⑤総和の算出(total) ⑥平均値の算出(ave)
の機能を実現、
また、総和の算出はint型の範囲を超えても算出可能とするプログラムを作成したいのですが、以下のコードをコンパイルすると、
"Input Command"を求められた際に、どんな数字を入力しても再び"Input Command"を求められてしまいます。
各機能を実現するためには何が必要か、どなたかご教示願えませんでしょうか。
宜しくお願いいたします。
#include <stdio.h>
#define DSIZE 10
void input(int *array);
void output(int *array);
void min(int *array);
void max(int *array);
void total(int *array);
void ave(int *array);
void input(int *array)
{
int i;
for(i = 0; i < DSIZE; i++)
{
printf(" Input %2dth data :", i + 1);
scanf("%4d", array[i]);
array++;
}
printf("\n");
}
void output(int *array)
{
int i;
printf("\n Array :");
for(i = 0; i < DSIZE; i++)
{
printf("%4d", array[i]);
array++;
}
printf("\n");
}
void min(int *array)
{
int i, j, num;
for (i = 0; i < DSIZE - 1; i++)
{
for (j = i + 1; j < DSIZE; ++j)
{
if (array[i] < array[j])
{
num = array[i];
array[i] = array[j];
array[j] = num;
}
}
}
printf("\n Array :");
for(i = 0; i < DSIZE; i++)
printf("%4d", array[i]);
printf("\n");
}
void max(int *array)
{
int i,j,num;
for (i = 0; i < DSIZE; i++)
{
for (j = i + 1; j < DSIZE; j++)
{
if (array[i] < array[j])
{
num = array[i];
array[i] = array[j];
array[j] = num;
}
}
}
printf("\n Array :");
for(i = 0; i < DSIZE; i++)
printf("%4d", array[i]);
printf("\n");
}
void total(int *array)
{
int i;
int sum;
for(i = 0; i < DSIZE; i++)
sum += array[i];
printf("\n Total is %4d\n", sum);
}
void ave(int *array)
{
int i;
double sum;
for(i = 0; i < DSIZE; i++)
sum += array[i];
printf(" Average is %.1f\n", sum / 10.0);
}
int main(void)
{
int array[] = { 1, -2, 3, -5, 7, -11, 13, -15, 17, -19 };
int code;
printf("Welcome to array system\n");
while( code != 0 ) {
printf("\n Input data --> 1");
printf("\n Output data --> 2");
printf("\n Minimum sort --> 3");
printf("\n Maximum sort --> 4");
printf("\n Total --> 5");
printf("\n Average --> 6");
printf("\n End --> 0");
printf("\n\n Input Command : "); scanf("%d",&code);
}
/* この部分でコマンドの解析を行い、それに対応した各関数を呼び出す */
//再入力
if (code == 1)
input(array);
//表示
if (code == 2)
output(array);
//昇順
if (code == 3)
min(array);
//降順
if (code == 4)
max(array);
//総和
if (code == 5)
total(array);
//平均値
if (code == 6)
ave(array);
return 0;
}