BCC32Cを使ってみた

サンプルプログラム1−2


コンソールプログラム

1-2)sample102(複数ソースからなるプログラム:バブルソート・二分検索、呼び出し)

複数のソース・ファイルで構成された場合のコンパイル方法です。
二分検索は参考文献(プログラミング言語C、K&R)の「第3章 制御の流れ」、「3.3 Else-If」に、例示されています。二分検索では、検索対象が昇順に並んでいることが条件となっているので、その前にソートできるように機能を追加しています。

バブルソート、二分検索機能は、Asample_102_sub.cに含まれ、@sample_102_main.cのmain関数から呼び出されます。
@sample_102_main.cで、呼び出すために、関数定義をincludeする必要があります。ここでは、Bsample_102_sub.hとヘッダ・ファイルを定義しています。

実行ファイルが、sample_102.exeになるようにコンパイルします。BCC32C.EXEでコンパイルした結果をCに、実行結果をDに示します。

BCC32X.EXEでコンパイルした結果をEに示します。

ここに載せたファイルは、こちら

@sample_102_main.c

// -------------------------------------------------
// sample_102_main.c ソート、サーチ
// 
//                2018/12/05 Kimio Nakamura
// -------------------------------------------------

#include <stdio.h>
#include "sample_102_sub.h"

// ===============================================================
//   Name     : problem3_01_binsearch_org.c
//   Usage    : int main(void)
//   Parameter:
//   Return   : 
// ==============================================================
int main(void)
{
        int x = 4;
        int n = 8;
        int v[n];
        int i,rc;
        
        
        v[0] =  4;
        v[1] =  3;
        v[2] =  9;
        v[3] =  8;
        v[4] =  10;
        v[5] =  1;
        v[6] =  6;
        v[7] =  14;

        fprintf(stdout, "sort(before)\n");
        for(i = 0 ;i < n ;i++) fprintf(stdout, " v[%2d]=%2d\n",i,v[i]);

        bubblesort(&v[0], n);

        fprintf(stdout, "\nsort(after)\n");
        for(i = 0 ;i < n ;i++) fprintf(stdout, " v[%2d]=%2d\n",i,v[i]);

        x = 4;
        fprintf(stdout, "\nsearch:%d\n",x);
        rc = binsearch(x, &v[0], n);
        if(rc < 0)      fprintf(stdout, " Not found\n");
        else fprintf(stdout, " Find v[%d] = %d\n", rc, v[rc]);

        x = 11;
        fprintf(stdout, "\nsearch:%d\n",x);
        rc = binsearch(x, &v[0], n);
        if(rc < 0)      fprintf(stdout, " Not found\n");
        else fprintf(stdout, " Find v[%d] = %d\n", rc, v[rc]);

        return (0);
}
Asample_102_sub.c
// -------------------------------------------------
// sample_102_sub.c バブル・ソート、バイナリサーチ
//  
//                2018/12/05 Kimio Nakamura
// -------------------------------------------------

#include <stdio.h>

// ====================================================================
//   Name     : bubblesort 
//   Usage    : bubblesort(int *v[], int n)
//   Parameter:  並べ替える配列(1つ目)、配列数
//   Return   : なし
// =====================================================================
int bubblesort(int *v, int n)
{
        int i, j, temp;
        
        for(i = n-1 ; i >0 ; i--){
                for(j = 0 ; j < i  ; j++){
                        if(v[j] > v[j+1]){
                                temp = v[j+1];
                                v[j+1 ] = v[j];
                                v[j ] = temp;
                        }
                }
        }
        return 0;
}

// =========================================================================
//   Name     : binsearch バイナリサーチ
//   Usage    : binsearch(int, int *v[], int)
//   Parameter:  探す数、配列1つ目(昇順で並んでいること)、配列数
//   Return   : 見つかった場合は配列番号、見つからない場合は-1
// =========================================================================
int binsearch(int x, int *v, int n)
{
        int low, high, mid;
        
        low = 0;
        
        high = n - 1;
        while(low <= high){
                mid = (low + high)/2;
                if(x < v[mid]) high = mid -1;
                else if(x > v[mid]) low = mid + 1;
                else return mid;
        }
        return -1;
}
Bsample_102_sub.h
// -------------------------------------------------
// sample_102_sub.h バブル・ソート、バイナリサーチ
//          ヘッダファイル
//                2018/12/05 Kimio Nakamura
// -------------------------------------------------

int bubblesort(int * , int );
int binsearch(int, int * , int );
Cコンパイル結果bcc32c


D実行結果


Eコンパイル結果bcc32x


戻る