В Russian Code Cup входные данные передаются через STDIN. Это означает, что определить конец данных невозможно. Поэтому в данных обязательно будет присутствовать:
- либо количество считываемых данных в самой первой строке
- либо "терминирующая" последовательность данных в последней строке (обычно все нули)
Если нужно считать поток, в котором сразу указано количество данных
Пример файла:
3
124 5679
9878 765
654 876
Пример кода:
// Считывание первой строки
$line=trim(fgets(STDIN));
$par=explode(' ', $line);
// Выяснение сколько строк надо загрузить
$n=(int) trim($par[0]);
// Загрузка строк в массив чтобы дальше было удобнее работать
$lines=array();
for($i=0; $i<$n; $i++)
{
$line=trim(fgets(STDIN));
$par=explode(' ', $line);
$lines[$i]['a']=trim($par[0]);
$lines[$i]['b']=trim($par[1]);
}
// Проверка считанных данных
for($i=0; $i<count($lines); $i++)
echo 'A: '.$lines[$i]['a'].' B: '.$lines[$i]['b']."\n";
Если нужно считать поток с терминирующей последовательностью
Пример файла:
124 5679
9878 765
654 876
0 0
Пример кода:
$lines=array();
$i=0;
while(true)
{
$line=trim(fgets(STDIN));
$par=explode(' ', $line);
if($par[0]=='0' and $par[1]=='0')
break;
$lines[$i]['a']=trim($par[0]);
$lines[$i]['b']=trim($par[1]);
$i++;
}
// Проверка считанных данных
for($i=0; $i<count($lines); $i++)
echo 'A: '.$lines[$i]['a'].' B: '.$lines[$i]['b']."\n";