練習問題



next up previous contents

Next: 7 サブルーチン(関数)とマクロ Up: 6 配列とポインタ Previous: ポインタを使う際の注意


練習問題

下のプログラム例を参考にして、10個以上の文字列の バブルソートを行いながらその様子をウィンドウ上に表示する プログラムを作成してください。 なお下の例は、ウィンドウ上で文字列が並べ変えられる様子を ウィンドウ上に表示するものです。

ヒント
●文字列の比較(辞書並び順)を行う関数は strcmp() である。
●秒単位での時間待ちを行う関数は sleep() である。

-----------------------
 #include <stdio.h>
 #include <Xtc.h>

 char *text[10]
  = { "Programming ", "UNIX ", "C ", "language ", "TextEditor ",
      "AnswerBook ", "OpenWindow ", "keyboard ", "mail ", "Display " };
 char *index[10];

 void re_disp(void)
 {
     int  i;

     cleardevice();                /* 画面の消去 */
     for( i = 0; i < 10; i++ )     /* 文字列の表示 */
         outtextxy( 100, i * 30 + 50, index[ i ] );
     xflush();
     sleep(1);                     /* 時間待ち(秒単位) */

     return;
 }

 void main(void)
 {
     int  i,j,n;
     char *tmp;

     for( i = 0; i < 10; i++ )
         index[ i ] = text[ i ];

     initgraph();
     re_disp();
     for( i = 0; i < 2; i++ ){      /* 文字列の順番の並べ替え(一番下 */
         for( j = 9; j > 0; j-- ){  /* 下から順に一番上へ持ってくる) */
             tmp = index[ j - 1 ];
             index[ j - 1 ] = index[ j ];
             index[ j ] = tmp;
             re_disp();             /* 並べ替え結果を表示する */
         }
     }

     xtcmainloop(3);
     closegraph();
 }
-----------------------



next up previous contents

Next: 7 サブルーチン(関数)とマクロ Up: 6 配列とポインタ Previous: ポインタを使う際の注意




機械・知能系 コンピュータ実習担当教官