0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AtCoder】備忘録344-B

Posted at

問題

PHPで解いています。

解答

<?php

$inputs = [];

while (fscanf(STDIN, "%d", $number) == 1 && $number !== 0) {
    $inputs[] = $number;
}
echo 0 . "\n";

$reversed = array_reverse($inputs);

foreach($reversed as $value){
    echo $value.PHP_EOL;
}

つまづいたポイント

0の入力、出力の理解

すべての整数配列に追加してから逆順に出力していたため、0 が最後に出てこなかった。

私は0も含めて逆順にする構文を書いていました。
しかし要件には0を最初に出力し、残りを逆順に出力すると書いてあります。
これらは一見結果が同じように見える場合もありますが、要件に明示された通りに処理を行うことが正しい方法です。


fscanf の動作

fscanf 関数は、標準入力(STDIN)からデータを読み取り、指定された形式(ここでは "%d" という整数形式)に従って変数に格納します。

while (fscanf(STDIN, "%d", $number) == 1 && $number !== 0) {
    $inputs[] = $number;
}

この場合、1つの整数を読み取るので、正常に読み取れれば 1 を返します。
読み取りに失敗した場合(例えば、入力が終了した場合や形式が合わない場合)は 0 あるいは EOF を返します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?