sc10note/専用入出力関数
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
since1995
開始行:
[[sc10note]]
*ヘッダファイル sc10.h について [#beccfef2]
ヘッダファイル sc10.h は、問題の入力や答えの出力にまつわ...
特に、''答えの出力はこのヘッダファイルで提供される sc10_o...
一方、問題の入力に関しては、ヘッダファイルで提供される関...
自己責任において入力ルーチンを自作して構わない。
sc10.h は、gcc等を用いてシングルプロセスで実行する際にも、
MPIを用いてマルチプロセスで実行する際にも、どちらでも動作...
(( ただし、MPIで用いる際はコミュニケータにMPI_COMM_WORLD...
このヘッダファイルに関するバグや不具合を発見した場合には、
速やかにスタッフに報告されたい。
*ヘッダファイルの読み込み [#v857c4f3]
プログラムの最初で stdio.h などの必要なヘッダファイルとと...
ただし、''MPI を使う際には sc10.h は mpi.h をインクルード...
// 読み込み例
#include <stdio.h>
#include <mpi.h>
#include "sc10.h" //sc10.hはmpi.hをincludeした後にinclu...
*定数 [#a8281980]
-MAXSIZE
--広場の縦と横の最大サイズ。現時点では53。(実際の最大サ...
-MAX_NUM_OF_PROB_IN_A_FILE
--1ファイルに記述されている問題数の最大値。現時点では1000...
-MAX_PROBNAME
--問題番号の最大値。現時点では200000(二十万)
*sc10_init [#q689989c]
書式:
void sc10_init(const char *teamname);
const char *teamname :自分のチーム名
イニシャライズ (初期化) を行う。
プログラム中で必ず最初に1度だけ呼ばれなければならない。
MPIを用いる場合、''必ずMPI_Initを呼んだ後に呼ぶこと''。
引数で渡されたチーム名に従い、"<teamname>.out"が出力用フ...
また、緊急時用のバックアップとして"<teamname>.out.bak"に...
処理の中では、どの問題が解答済みかを得るために、"<teamnam...
"<teamname>.out"があまりにも肥大化していた場合、その処理...
そのような場合には適宜"<teamname>.out"を削除すること。
エラーが起こった場合には、エラーメッセージの後プログラム...
*sc10_issolved [#g8b85095]
書式:
int sc10_issolved(int probname);
int probname :問題番号
戻り値 :問題番号probnameが出力済みなら0以外...
問題番号probnameの問題について、答えを出力済みかどうか判...
すなわち、
-sc10_init()を実行した時点で、問題番号probnameについて出...
-プログラムの実行中に、sc10_output()で問題番号probnameの...
のいずれか成立する場合、0以外を返す。
それ以外の場合0を返す。
MPIを用いている場合、''この関数はrank 0からのみ呼ぶことが...
rank 0以外からこの関数が呼ばれた場合、
標準エラー出力にエラーメッセージを出力し、戻り値は常に0で...
*sc10_output [#rce0488d]
書式:
int sc10_output(int probname, int result);
int probname :問題番号
int result :書き込みたい答え
戻り値 :成功時0、失敗時0以外
答えを出力用ファイル"<teamname>.out"に書き込む。
すなわち、問題番号probnameに対し、resultを答えとして出力...
同時に、標準出力にも同じ内容を出力する。
MPIを用いている場合、この関数は''rank 0からのみ呼ぶことが...
rank 0以外からこの関数が呼ばれた場合、
標準エラー出力にエラーメッセージを出力し、出力用ファイル...
戻り値は、異常なく成功したとき0を、
rank 0以外がこの関数を呼んだときとprobnameの値が異常なと...
出力ファイルに書き込めないなどの深刻な異常が出たときには...
*sc10_readfile [#reb1019a]
書式:
int sc10_readfile(const char *inputfilename);
const char *inputfilename :問題ファイル
戻り値 :ファイルに含まれていた...
inputfilenameに記述された問題を読み込む。
読み込まれた問題内容は、sc10_getproblem()関数で取得するこ...
この関数の2度目以降の呼び出しでは、それより前に読み込んだ...
例えば、 sc10_readfile("prob00.in") とした後に sc10_readf...
prob00.inの内容は破棄されprob11.inの内容のみ読み込まれた...
MPIを用いている場合、inputfilenameの内容をrank 0が読み込...
その内容を全てのrankへブロードキャストする、という動作と...
この関数は、''全rankで同時に呼び出されなければならない''。
戻り値は、読み込んだファイルに記述されていた問題の総数で...
読み込みが成功しなかったなどの深刻な異常が起こった場合に...
*sc10_getproblem [#f37b8b6b]
書式:
int sc10_getproblem(int i, int *probname, int *m, int *...
int i :問題のインデクス
int *probname :問題番号が書き込まれ...
int *m :縦幅が書き込まれる先
int *n :横幅が書き込まれる先
int *k :答えを割る数が書き込...
char table[MAXSIZE][MAXSIZE] :広場の形状が書き込ま...
戻り値 :成功時0、失敗時0以外
一番最後にsc10_readfile()で読み込みこんだ問題のうち、i番...
すなわち、probnameに問題番号、mに縦幅、 nに横幅、kに答え...
ただし、2次元配列tableはのサイズはMAXSIZE x MAXSIZEでなけ...
iに指定できる番号は、0 から (読み込んだ問題の総数-1) まで...
MPIを用いている場合、''全てのrankからこの関数は呼び出し可...
戻り値は処理が正常に終わったかどうかを表す整数である。
すなわち、正常に処理を終了したら0を返し、iの値が上記の範...
終了行:
[[sc10note]]
*ヘッダファイル sc10.h について [#beccfef2]
ヘッダファイル sc10.h は、問題の入力や答えの出力にまつわ...
特に、''答えの出力はこのヘッダファイルで提供される sc10_o...
一方、問題の入力に関しては、ヘッダファイルで提供される関...
自己責任において入力ルーチンを自作して構わない。
sc10.h は、gcc等を用いてシングルプロセスで実行する際にも、
MPIを用いてマルチプロセスで実行する際にも、どちらでも動作...
(( ただし、MPIで用いる際はコミュニケータにMPI_COMM_WORLD...
このヘッダファイルに関するバグや不具合を発見した場合には、
速やかにスタッフに報告されたい。
*ヘッダファイルの読み込み [#v857c4f3]
プログラムの最初で stdio.h などの必要なヘッダファイルとと...
ただし、''MPI を使う際には sc10.h は mpi.h をインクルード...
// 読み込み例
#include <stdio.h>
#include <mpi.h>
#include "sc10.h" //sc10.hはmpi.hをincludeした後にinclu...
*定数 [#a8281980]
-MAXSIZE
--広場の縦と横の最大サイズ。現時点では53。(実際の最大サ...
-MAX_NUM_OF_PROB_IN_A_FILE
--1ファイルに記述されている問題数の最大値。現時点では1000...
-MAX_PROBNAME
--問題番号の最大値。現時点では200000(二十万)
*sc10_init [#q689989c]
書式:
void sc10_init(const char *teamname);
const char *teamname :自分のチーム名
イニシャライズ (初期化) を行う。
プログラム中で必ず最初に1度だけ呼ばれなければならない。
MPIを用いる場合、''必ずMPI_Initを呼んだ後に呼ぶこと''。
引数で渡されたチーム名に従い、"<teamname>.out"が出力用フ...
また、緊急時用のバックアップとして"<teamname>.out.bak"に...
処理の中では、どの問題が解答済みかを得るために、"<teamnam...
"<teamname>.out"があまりにも肥大化していた場合、その処理...
そのような場合には適宜"<teamname>.out"を削除すること。
エラーが起こった場合には、エラーメッセージの後プログラム...
*sc10_issolved [#g8b85095]
書式:
int sc10_issolved(int probname);
int probname :問題番号
戻り値 :問題番号probnameが出力済みなら0以外...
問題番号probnameの問題について、答えを出力済みかどうか判...
すなわち、
-sc10_init()を実行した時点で、問題番号probnameについて出...
-プログラムの実行中に、sc10_output()で問題番号probnameの...
のいずれか成立する場合、0以外を返す。
それ以外の場合0を返す。
MPIを用いている場合、''この関数はrank 0からのみ呼ぶことが...
rank 0以外からこの関数が呼ばれた場合、
標準エラー出力にエラーメッセージを出力し、戻り値は常に0で...
*sc10_output [#rce0488d]
書式:
int sc10_output(int probname, int result);
int probname :問題番号
int result :書き込みたい答え
戻り値 :成功時0、失敗時0以外
答えを出力用ファイル"<teamname>.out"に書き込む。
すなわち、問題番号probnameに対し、resultを答えとして出力...
同時に、標準出力にも同じ内容を出力する。
MPIを用いている場合、この関数は''rank 0からのみ呼ぶことが...
rank 0以外からこの関数が呼ばれた場合、
標準エラー出力にエラーメッセージを出力し、出力用ファイル...
戻り値は、異常なく成功したとき0を、
rank 0以外がこの関数を呼んだときとprobnameの値が異常なと...
出力ファイルに書き込めないなどの深刻な異常が出たときには...
*sc10_readfile [#reb1019a]
書式:
int sc10_readfile(const char *inputfilename);
const char *inputfilename :問題ファイル
戻り値 :ファイルに含まれていた...
inputfilenameに記述された問題を読み込む。
読み込まれた問題内容は、sc10_getproblem()関数で取得するこ...
この関数の2度目以降の呼び出しでは、それより前に読み込んだ...
例えば、 sc10_readfile("prob00.in") とした後に sc10_readf...
prob00.inの内容は破棄されprob11.inの内容のみ読み込まれた...
MPIを用いている場合、inputfilenameの内容をrank 0が読み込...
その内容を全てのrankへブロードキャストする、という動作と...
この関数は、''全rankで同時に呼び出されなければならない''。
戻り値は、読み込んだファイルに記述されていた問題の総数で...
読み込みが成功しなかったなどの深刻な異常が起こった場合に...
*sc10_getproblem [#f37b8b6b]
書式:
int sc10_getproblem(int i, int *probname, int *m, int *...
int i :問題のインデクス
int *probname :問題番号が書き込まれ...
int *m :縦幅が書き込まれる先
int *n :横幅が書き込まれる先
int *k :答えを割る数が書き込...
char table[MAXSIZE][MAXSIZE] :広場の形状が書き込ま...
戻り値 :成功時0、失敗時0以外
一番最後にsc10_readfile()で読み込みこんだ問題のうち、i番...
すなわち、probnameに問題番号、mに縦幅、 nに横幅、kに答え...
ただし、2次元配列tableはのサイズはMAXSIZE x MAXSIZEでなけ...
iに指定できる番号は、0 から (読み込んだ問題の総数-1) まで...
MPIを用いている場合、''全てのrankからこの関数は呼び出し可...
戻り値は処理が正常に終わったかどうかを表す整数である。
すなわち、正常に処理を終了したら0を返し、iの値が上記の範...
ページ名: