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 2472 Точки

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

<?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 2472 Точки

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

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.