標準入力からテキストを入力し、それを元に三つのファイルredとgreenとblueを作るプログラムを書け。
どんなに長い行にも対応できるプログラムが望ましい。難しければ、行の長さ(改行文字を除く文字数)が1024未満であると仮定しても良い。
行番号を で割って 余る行をファイルredに、 余る行をファイルgreenに、割り切れるファイルをblueに書き込む。なお、行番号は から始まるものとする。
行番号が の形で書ける行をファイルredに、 の形で書ける行をファイルgreenに、その他の行をファイルをblueに書き込む。ただし、 は非負整数、 は 以外の素数とする。なお、行番号は から始まるものとする。
#
で始まる行をファイルredに、%
で始まる行をファイルgreenに、その他の行をファイルblueに書き込む。
アルファベットで始まる行をファイルredに、数字で始まる行をファイルgreenに、その他の行をファイルblueに書き込む。
[やや難]
#
で始まりその次の文字がアルファベットである行をファイルredに、%
で始まりその次の文字が数字である行をファイルgreenに、その他の行をファイルblueに書き込む。
二つのテキストファイルgoldとsilverがあるとする。以下を行うプログラムをそれぞれ書け。
まず、ファイルgoldの中身を標準出力に出力し、その後、ファイルsilverの中身を標準出力に出力する。
ファイルgoldの中身とファイルsilverの中身を行ごとに交互に標準出力に出力する。すなわち、ファイルgoldの1行目、ファイルsilverの1行目、ファイルgoldの2行目、ファイルsilverの2行目、ファイルgoldの3行目、ファイルsilverの3行目、……のように標準出力に出力する。どちらかのファイルが先に尽きたら、残りはそのまま出力するものとする。
標準入力からテキストを入力し、各行ごとに以下の処理を行って標準出力に出力するプログラムを書け。ただし、各行は以下の書式であると仮定して良い。
最初の文字が A
のときはその行に最初に出現する整数を、a
のときは最後に出現する整数を、M
のときはその行の整数の最大値を、m
のときは最小値を出力する。それ以外のときは *
だけからなる行を出力する。
まず、標準入力からファイル名の一部(以下、仮にnameとする)を読み込む。
二つのファイルname_i1, name_i2があって、それぞれ、long long
で扱える範囲の整数がテキスト形式で空白文字(isspace()
で真と判定される文字)で区切られて格納されているものとする。すなわち、どちらのファイルもfscanf(fp, "%lld", &x)
を繰り返して入力できる形式で整数の並びが格納されているものとする。以下の計算を行い、その結果を二つのファイルname_o1, name_o2に書き込むプログラムをそれぞれ書け。ただし、該当するファイル名のファイルが存在しなければ作成し、すでに存在すれば上書きせよ。
以下、ファイルname_i1の中身は で、ファイルname_i2の中身は であるとする。 とは限らないので、以下、 とする。
ファイルname_o1に を計算したものを書き込み、ファイルname_o2に を計算したものを書き込む。