Професионална програма
Loading...
+ Нов въпрос
DeyanAltanov avatar DeyanAltanov 6 Точки

Задача "From Left to The Right"

Здравейте!

Изпитвам затруднения със задача 1, от следното упражнение: https://softuni.bg/trainings/resources/officedocument/40242/more-exercise-php-fundamentals-may-2019/2344.

Идеята ми е да обходя зададения string със for и в случай, че стигне символа ' ', цикъла да прекъсне. Така намирам сумата на лявото число. Проблема е как да сумирам дясното. Пробвах със втори for и в случай на ' ' да почне да събира:

    for ($k = 0; $k < strlen($m); $k++)
    {
        if ($m[$k] == ' ')
        {
            $sum2 += $m[$k];
        }
    }

Само, че не се получава.

Решение: https://pastebin.com/W9Zgiauc

Тагове:
0
PHP Basics
willystyle avatar willystyle 2418 Точки

Усложняваш си живота, използвай вградените функции, например за сплит, в пхп му викат експлоуд:

<?php
$n = readline();
for ($i = 0; $i < $n; $i++) {
    // $nums = explode(" ", preg_replace('/\s+/', ' ', trim(readline())));
    $nums = explode(' ', readline());
    $greaterNum = $nums[0] > $nums[1] ? $nums[0] : $nums[1];
    $sum = 0;
    for ($j = 0; $j < strlen($greaterNum); $j++) {
        $sum += intval($greaterNum[$j]);
    }
    echo $sum . PHP_EOL;
}

Ако все пак държиш сам да си парснеш входа, може да ползваш булева за да знаеш в кое число се намираш:

<?php
$n = readline();
for ($i = 0; $i < $n; $i++) {
    $m = readline();
    $num1 = '';
    $num2 = '';
    $sum1 = 0;
    $sum2 = 0;
    $isNum1 = true;
    for ($j = 0; $j < strlen($m); $j++) {
        if ($m[$j] == ' ') {
            $isNum1 = false;
            continue;
        }
        if ($isNum1) {
            $num1 .= $m[$j];
            $sum1 += intval($m[$j]);
        } else {
            $num2 .= $m[$j];
            $sum2 += intval($m[$j]);
        }
    }
    if ($num1 > $num2) {
        echo $sum1 . PHP_EOL;
    } else {
        echo $sum2 . PHP_EOL;
    }
}

 

0
28/05/2019 19:23:02
DeyanAltanov avatar DeyanAltanov 6 Точки

https://pastebin.com/nyv8cBM4 -> 50/100. За съжаление не мога да видя тестовете, на които се чупи. Тези от примера си излизат.

0
30/05/2019 16:30:37
willystyle avatar willystyle 2418 Точки

Ти май не четеш условието, а не четеш и коментара ми. Условието да печаташ лява или дясна сума е дали ляво или дясно число е по-голямо (не сума ). И двете решения които съм ти пуснал са 100/100.

1