日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 部:デバッガ概要
第 1 章:デバッガ概要
第 2 部:コマンド・インタフェース
第 2 章:デバッガの起動
第 3 章:プログラム実行の制御とモニタ
第 4 章:プログラム・データの検査と操作
第 5 章:プログラム内シンボルへのアクセス制御
第 6 章:ソース・コードの表示の制御
第 7 章:画面モード
第 3 部:DECwindows インタフェース
第 8 章:DECwindows Motifインタフェースの概要
第 9 章:デバッグ・セッションの開始と終了
第 10 章:デバッガの使用方法
第 4 部:PC クライアント・インタフェース
第 11 章:デバッガの PC クライアント/サーバ・インタフェースの概要
第 5 部:高度なトピック
第 12 章:ヒープ・アナライザの使用
第 13 章:その他の便利な機能
第 14 章:特殊なデバッグ
第 15 章:マルチプロセス・プログラムのデバッグ
第 16 章:タスキング・プログラムのデバッグ
第 6 部:付録
付録 A :定義済みのキー機能
付録 B :組み込みシンボルと論理名
付録 C :各言語に対するデバッガ・サポートの要約
付録 D :EIGHTQUEENS.C
索引
PDF
OpenVMS ホーム

HP OpenVMS
デバッガ説明書


目次 索引

付録 D
EIGHTQUEENS.C

この付録では, 第 8 章第 9 章 ,および 第 10 章 の各章にある多くの図で使用されるプログラムのソース・コード,EIGHTQUEENS.Cおよび8QUEENS.Cを示します。ここで示すプログラムは,上記の各章で説明されているプロシージャを理解するためだけのものです。

D.1 EIGHTQUEENS.C

例 D-1 に,EIGHTQUEENS.Cを示します。これは, eightqueensの問題を解決するための,シングル・モジュール構成のプログラムです。

例 D-1 シングル・モジュール構成のプログラムEIGHTQUEENS.C
extern void setqueen(); 
extern void removequeen(); 
extern void trycol(); 
extern void print(); 
    int a[8];     /* a : array[1..8]  of boolean */ 
    int b[16];    /* b : array[2..16] of boolean */ 
    int c[15];    /* c : array[-7..7] of boolean */ 
    int x[8]; 
 
/* Solve eight-queens problem */ 
main() 
{ 
    int i; 
    for (i=0; i <=7; i++) 
 a[i] = 1; 
    for (i=0; i <=15; i++) 
 b[i] = 1; 
    for (i=0; i <=14; i++) 
 c[i] = 1; 
    trycol( 0 ); 
} /* End main */ 
 
void trycol( j ) 
    int j; 
{ 
    int m; 
    int safe; 
    m = -1; 
    while (m++ < 7) 
       { 
       safe = (a[m] ==1) && (b[m + j] == 1) && (c[m - j + 7] ==1); 
       if (safe) 
            { 
     setqueen(m, j); 
     x[j] = m + 1; 
     if (j < 7) 
  trycol(j + 1); 
     else 
  print(); 
     removequeen(m, j); 
     } 
       } 
} /* End trycol */ 
 
void setqueen(m, j) 
    int m; 
    int j; 
{ 
    a[m] = 0; 
    b[m + j] = 0; 
    c[m - j + 7] = 0; 
} /* End setqueen */ 
 
void removequeen(m, j) 
    int m; 
    int j; 
{ 
    a[m] = 1; 
    b[m + j] = 1; 
    c[m - j + 7] = 1; 
} /* End removequeen */ 
 
void print() 
{ 
    int k; 
    for (k=0; k<=7; k++) 
 { 
 printf(" %d", x[k]); 
 } 
    printf("\n"); 
} /* End print */ 



D.2 8QUEENS.C

8QUEENS.Cは,eightqueensの問題を解決するためのマルチ・モジュール構成のプログラムです。このプログラムは,8QUEENS.C ( 例 D-2 ) および8QUEENS_SUB.C ( 例 D-3 )の 2つのモジュールから構成されます。

例 D-2 8QUEENS.Cのメイン・モジュール
extern void trycol(); 
    int a[8];     /* a : array[1..8]  of boolean */ 
    int b[16];    /* b : array[2..16] of boolean */ 
    int c[15];    /* c : array[-7..7] of boolean */ 
    int x[8]; 
 
main()    /* Solve eight-queens problem */ 
{ 
    int i; 
    for (i=0; i <=7; i++) 
 a[i] = 1; 
    for (i=0; i <=15; i++) 
 b[i] = 1; 
    for (i=0; i <=14; i++) 
 c[i] = 1; 
    trycol(0); 
    printf(" Solved eight-queens problem!\n"); 
} /* End main */ 

例 D-3 8QUEENS_SUB.Cのサブ・モジュール
extern int a[8]; 
extern int b[16]; 
extern int c[15]; 
extern void setqueen(); 
extern void removequeen(); 
extern void print(); 
 
    int x[8]; 
 
void trycol( j ) 
    int j; 
{ 
    int m; 
    int safe; 
    m = -1; 
    while (m++ < 7) 
       { 
       safe = (a[m] ==1) && (b[m + j] == 1) && (c[m - j + 7] ==1); 
       if (safe) 
            { 
            setqueen(m, j); 
            x[j] = m + 1; 
            if (j < 7) 
                trycol(j + 1); 
            else 
                print(); 
            removequeen(m, j); 
            } 
       } 
}       /* End trycol */ 
 
void setqueen(m, j) 
    int m; 
    int j; 
{ 
    a[m] = 0; 
    b[m + j] = 0; 
    c[m - j + 7] = 0; 
}       /* End setqueen */ 
 
void removequeen(m, j) 
    int m; 
    int j; 
{ 
    a[m] = 1; 
    b[m + j] = 1; 
    c[m - j + 7] = 1; 
}       /* End removequeen */ 
 
void print() 
{ 
    int k; 
    for (k=0; k<=7; k++) 
        { 
        printf(" %d", x[k]); 
        } 
    printf("\n"); 
}       /* End print */ 


索引 目次

© 2012 Hewlett-Packard Development Company, L.P.