Menu
Coddy logo textTech

復習 - データの反復処理

CoddyのPHPジャーニー「基礎」セクションの一部。レッスン 53/71。

challenge icon

チャレンジ

簡単

入力を3行読み取ります:

  1. カンマ区切りの整数のリスト(例:12,5,8,20,3,15,7
  2. 最小しきい値
  3. 最大しきい値

arrayを処理して、range内にあるすべてのnumbersの合計(最小値と最大値の両方を含む)を求めます。まず、numberが最大しきい値のexactly doubleかどうかを確認し、そうであればbreakですぐに処理を停止します。それ以外の場合は、continueを使用してrangeの外側にあるnumbersをスキップします。

最初の行はexplodeで読み取られるため、$numbersには文字列が格納され、$min$maxには整数が格納されます。各要素をしきい値と比較したり合計に加えたりする前に、intval()(または(int)キャスト)で変換してください。

2行を出力します:

  1. range内にあるvalid numbersの合計
  2. 合計に加えられたnumbersの個数

例1:

入力が5,12,8,20,15,3,10515の場合、出力は次のようになります:

50
5

(5 + 12 + 8 + 15 + 10 = 50、5つのnumbersがrange 5-15内にあります)

例2:

入力が2,8,12,20,6,14510の場合、出力は次のようになります:

8
1

(20は最大値10のdoubleであるため処理が停止します。その前に加えられたのは8だけなので、合計は8、個数は1です)

例3:

入力が1,2,3,4,51020の場合、出力は次のようになります:

0
0

(range 10-20内にあるnumbersはありません)

自分で試してみよう

<?php
// 入力を読み取る
$numbers = explode(',', trim(fgets(STDIN)));
$min = intval(trim(fgets(STDIN)));
$max = intval(trim(fgets(STDIN)));

// 変数を初期化する
$sum = 0;
$count = 0;

// TODO: ここにコードを書いてください
// numbers配列をループする
// 'continue'を使って範囲外の数値をスキップする(minからmaxまで含む)
// 最大閾値のちょうど2倍の数値に遭遇したら'break'を使う
// 有効な数値のsumとcountを追跡する


// 結果を出力する
echo $sum . "\n";
echo $count;
?>

基礎のすべてのレッスン

自分で練習してみよう: PHPオンラインコンパイラ