第16講 データの並び換えに挑戦!

第2話 最小値を見つける方法
4,7,6,3,5
から最小値を見つけるにはどうしたらよいでしょうか。
出来るだけ大きい数(最小値としてはあり得ない数)を用意して、
mn=10000
(mnは、英語の最小を表すminimum(ミニマムと読みます。)から取っています。
略は母音を入れずにとるのが、私の基本的な流儀です。)
等としておきます。
例えば、国語のテストの最低点を探す問題なら、
mn=100
でよいですね。
普通のテストは0点から100点までですから、
最低点が100というのはあり得ませんね。
今回は、一桁の自然数になっていますから、
mn=10
でよいことになります。
mnはデータの性質によって設定が変わってきます。
まず、mn=10と4を比較します。
mnより小さい場合には、mnの内容を4に置き換えます。
4の方が小さいですから、mn=4となります。
次に、mn=4と7を比較します。
7の方が大きいですから、何もしません。
つまり、mn=4のままです。
mnと6を比較します。
やはり、6の方が大きいですから何もしません。
また、mn=4にとどまります。
4,7,6,3,5
mnと6を比較します。
今回も6の方が大きいですから、
何もせずに、mn=4のままです。
mnと3を比較します。
3の方が小さいですから、mnの内容を3に置き換えます。
mn=3となります。
最後に、mnと5を比較します。
5の方が大きいですから、何もせずにmn=3のままです。
以上の処理で、mn=3となりました。
最小値3が見つかりました。


では、皆さん
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
void f(int a[10]); //1桁のランダムデータを発生させる社員
char g(int a[10]); //データの1番小さい値を見つける社員
void h(int a[10]); //データ表示させる社員
int main(){
  int a[10],w;
  
srand((unsigned) time(NULL));
  f(a);
  h(a);
  w=g(a);
  printf("データの最小値は%dです。\n",a[w]);
  printf("プロジェクト終了\n");
}
void f(int a[10]){

}
char g(int a[10]){
  return(0);
}
void h(int a[10]){
  
}
(ピンクは、毎回データが異なるようにするための措置です。
時間からシード値を取得して乱数系列を変えています。)
空のコード
空の添付コードをエディタにコピペして、
f,g,hの内容を埋めて実行画面が下のようになるようにして下さい。
4 8 6 8 9 9 7 5 6 2
データの最小値は2です。
プロジェクト終了

もちろん今回は、
  
srand((unsigned) time(NULL));
が入っていますから、
皆さんの実行画面が同一になることはあり得ませんよ。
データはすべて1桁で、発生個数は10個とします。
gに入っているコードはもちろん訂正が必要です。
コードをご覧になればお分かりのように、
gが返すのは、値そのものではなく、
値が収納されている配列の添え字という設定になっています。
もちろん、値そのものを返しても良いのですから、
両方作って下さい。
勉強のためですよ。



第1話へ 第3話へ

a


初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ