Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語プログラムで数列の最大値と最小値を求める方法


問題

コンソールからユーザーが入力した4つの整数の中から、最も大きい数(最大値)と最も小さい数(最小値)を見つけます。

解決方法

最大値と最小値を求めるには、if文による条件分岐を使用します。まず1つ目の入力値を仮の最大値・最小値として設定し、残りの数値と順番に比較していきます。比較の基本ロジックは以下の通りです。

if(minno>q) // 1番目と2番目の数を比較
   minno=q;
else if(maxno<q)
   maxno=q;
if(minno>r) // 1番目と3番目の数を比較
   minno=r;

このように、現在の最小値より小さい数が見つかれば最小値を更新し、現在の最大値より大きい数が見つかれば最大値を更新します。すべての数値の比較が終わった時点で、正しい最大値と最小値が求められます。

プログラム1:4つの整数から最大値と最小値を求める

#include<stdio.h>
int main(){
   int minno,maxno,p,q,r,s;
   printf("enter any four numbers:");
   scanf("%d%d%d%d",&p,&q,&r,&s);
   minno=p;
   maxno=p;
   if(minno>q) // 1番目と2番目の数を比較
      minno=q;
   else if(maxno<q)
      maxno=q;
   if(minno>r) // 1番目と3番目の数を比較
      minno=r;
   else if(maxno<r)
      maxno=r;
   if(minno>s) // 1番目と4番目の数を比較
      minno=s;
   else if(maxno<s)
      maxno=s;
   printf("Largest number from the given 4 numbers is:%d\n",maxno);
   printf("Smallest numbers from the given 4 numbers is:%d",minno);
   return 0;
}

実行結果

enter any four numbers:34 78 23 12
Largest number from the given 4 numbers is:78
Smallest numbers from the given 4 numbers is:12

この例では、入力された「34, 78, 23, 12」の中から、最大値として78、最小値として12が出力されています。

プログラム2:配列の中から最大値と最小値を求める

次のプログラムは、任意の個数の要素を持つ配列から、最大値と最小値を効率的に検索します。forループで配列の各要素を走査しながら、最大値・最小値を順次更新していく点が特徴です。要素数が多くても簡潔に記述できるため、実用的な手法といえます。

#include<stdio.h>
int main(){
   int a[50],i,num,large,small;
   printf("Enter the number of elements :");
   scanf("%d",&num);
   printf("Input the array elements :\n");
   for(i=0;i<num;++i)
      scanf("%d",&a[i]);
   large=small=a[0];
   for(i=1;i<num;++i){
      if(a[i]>large)
         large=a[i];
      if(a[i]<small)
         small=a[i];
   }
   printf("small= %d\n",small);
   printf("large= %d\n",large);
   return 0;
}

実行結果

Enter the number of elements :8
Input the array elements :
1
2
6
4
8
9
3
9
small= 1
large= 9

この例では、8個の要素「1, 2, 6, 4, 8, 9, 3, 9」を含む配列から、最小値1と最大値9が正しく検出されています。

まとめ

最大値・最小値を求める際のポイントは以下の通りです。

  • 最初の要素(または最初に入力された数値)を、最大値・最小値の初期値として設定する
  • 残りの要素と順番に比較し、条件に応じて値を更新する
  • 配列の場合はforループを活用すると、要素数が多くても簡潔に記述できる
  1. Pythonでリスト内の最小値を見つける方法を解説

    この記事では、リストの中から最小の数値を見つける方法について、具体的なサンプルコードとともに詳しく解説します。問題の概要問題: 数値のリストが与えられたとき、その中に含まれる最も小さい数値を画面に表示すること。この問題を解くアプローチは主に2つあります。ひとつは sort() メソッドを使ってリストを昇順に並べ替え、先頭の要素(インデックス0)を取得する方法。もうひとつは、Pythonに標準で用意されている組み込み関数 min() を使う方法です。それぞれ順番に見ていきましょう。方法1:sort()メソッドで並べ替えて最小値を取得するまずはリストを昇順にソートし、先頭の要素を取り出す方法です。

  2. Pythonでリスト内の最大値を見つける方法をわかりやすく解説

    この記事では、Pythonを使ってリストの中から最大の要素(最大値)を見つける方法について解説します。初心者の方でも理解しやすいよう、複数のアプローチをコード例とともに紹介していきます。 問題の概要 問題文: 与えられたリストの中から、最も大きい要素を求めて出力してください。 Pythonには便利な組み込み関数が用意されているため、これらを活用することで短いコードで効率的に問題を解決できます。ここでは主に sort() メソッドと max() 関数の2つの方法を取り上げます。 方法1:sort() 関数を使う sort() メソッドはリストを昇順に並べ替えます。並べ替え後のリストの末尾(インデ