limits.hを使って任意の最大値、最小値を求める

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みなみ

limits.hを使って任意の最大値、最小値を求める

#1

投稿記事 by みなみ » 13年前

5つの任意の最大値、最小値を求めるプログラムを作るのですが、友人にlimits.hを使えばより簡単に作れると言われ作ってみようと思ったのですが、signed int の最大値、最小値が求まるだけでうまく任意の5つの数字のMAX、MINを求められません。

コード:

#include <stdio.h>
#include <limits.h>
int main(void){
  int a[5];
  scanf("%d\n",a[0]);
  scanf("%d\n",a[1]);
  scanf("%d\n",a[2]);
  scanf("%d\n",a[3]);
  scanf("%d\n",a[4]);
  
  printf("MAX=%d, MIN=%d",INT_MAX,INT_MIN);
  return0;
}
どのように改善すればよいのか教えて頂けると助かります。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: limits.hを使って任意の最大値、最小値を求める

#2

投稿記事 by h2so5 » 13年前

limits.hにそのような機能は存在しないと思います。

box
記事: 2002
登録日時: 15年前

Re: limits.hを使って任意の最大値、最小値を求める

#3

投稿記事 by box » 13年前

みなみ さんが書きました:友人にlimits.hを使えばより簡単に作れると言われ
お友達の考えは間違っています。
それから、質問者さんの scanf() の書き方も間違っています。

私だったら、例えば次のように書きます。ほんの一例です。

コード:

#include <stdio.h>

#define N (5)

int main(void)
{
    int a[N], saidai, saishou, i;

    for (i = 0; i < N; i++) {
        printf("a[%d]=", i), scanf("%d", &a[i]);
    }
    for (saidai = saishou = a[0], i = 1; i < N; i++) {
        if (a[i] > saidai) {
            saidai = a[i];
        }
        if (a[i] < saishou) {
            saishou = a[i];
        }
    }
    printf("最大値:%d,最小値:%d\n", saidai, saishou);
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

みなみ

Re: limits.hを使って任意の最大値、最小値を求める

#4

投稿記事 by みなみ » 13年前

そうだったのですか!その友人はパイソンを使っているようで実際に実行しているところを見てみたところで来ていたような気がしたので(3週間ほど前の事なのでよく覚えていません…汗)出来ると思っていました。

ご丁寧な解答本当にどうもありがとうございました!

かずま

Re: limits.hを使って任意の最大値、最小値を求める

#5

投稿記事 by かずま » 13年前

limits.h を使わないプログラムは、最初の1つの数と、残りの4つの数の処理が異なります。

コード:

#include <stdio.h>

int main(void)
{
    int i, n, min, max;

    scanf("%d", &n);
    min = max = n;
    for (i = 1; i < 5; i++) {
        scanf("%d", &n);
        if (n > max) max = n;
        if (n < min) min = n;
    } 
    printf("MAX=%d, MIN=%d\n", max, min);
    return 0;
}
limits.h を使ったプログラムは、5つの数の処理が同じです。

コード:

#include <stdio.h>
#include <limits.h>

int main(void)
{
    int i, n, min = INT_MAX, max = INT_MIN;

    for (i = 0; i < 5; i++) {
        scanf("%d", &n);
        if (n > max) max = n;
        if (n < min) min = n;
    } 
    printf("MAX=%d, MIN=%d\n", max, min);
    return 0;
}

閉鎖

“C言語何でも質問掲示板” へ戻る