C言語関係掲示板

過去ログ

No.479.3つの整数値の最大値と最小値の差

[戻る] [ホームページ]
No.3467

本当にわからないです!!!!
投稿者---里奈(2002/11/15 11:23:34)


配列に3つの0から9までの整数を読み込み,それらの数を組み合わせてできる最大の数から最小の数を引いた値を 表示するプログラムを作成するのですがわかりません。


No.3473

Re:本当にわからないです!!!!
投稿者---kamadoma(2002/11/16 00:44:26)


>配列に3つの0から9までの整数を読み込み,それらの数を組み合わせてできる最大の数から最小の数を引いた値を 表示するプログラムを作成するのですがわかりません。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
        int array[3];
        int i;
        int max = -9999;
        int min = 9999;
        int mid;
        char minVal[3+1];
        char maxVal[3+1];
        int sabun;

        /*配列に数値入力*/
        for(i=0;i<3;i++){
                printf("%d番目の数値を入力してください。\n",i+1);
                scanf("%d",&array[i]);
                while(1){
                        /*範囲外の数字が入力されたときは、再入力を促す*/
                        if(array[i] < 0 || array[i] > 9){
                                printf("0〜9の数字を入力してください。\n");
                                scanf("%d",&array[i]);
                                continue;
                        }
                        /*範囲内の数値のときはループ脱出*/
                        else{
                                break;
                        }
                }
        }       

        /*最大値、最小値取得*/
        for(i=0;i<3;i++){
                if(max < array[i]){
                        max =array[i];
                }
                if(min > array[i]){
                        min = array[i];
                }
        }

        /*中間値取得*/
        for(i=0;i<3;i++){
                /*最大でも最小でないものが中間値となる*/
                if(array[i] != max && array[i] != min){
                        mid = array[i];
                }
        }

        /*上記で取得した最小値、中間値、最大値を組み合わせて最大値、最小値を取得*/
        sprintf(minVal,"%d%d%d",min,mid,max);
        sprintf(maxVal,"%d%d%d",max,mid,min);
        sabun = atoi(maxVal) - atoi(minVal);

        /*結果表示*/
        printf("max = %d\n",max);
        printf("min = %d\n",min);
        printf("mid = %d\n",mid);
        printf("minVal = %s\n",minVal);
        printf("maxVal = %s\n",maxVal);
        printf("sabun = %d\n",sabun);

        return 0;
}