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

PHP - Multiply Evens by Odds

Здравейте!   

Решавам задача № 9 "Multiply Evens by Odds" от темата за функциите и получавам runtime errors и 70/100. Програмата ми чете въведеното отрицателно число като string и ми дава минуса като "non-numeric value", но иначе принтира резултата. Как да поправя това? Моля за помощ   

<?php

$number = readline();

function sumOfEvens($number) {
    $evenSum = 0;
    
    for ($i = 0; $i < strlen($number); $i++) {
        if (($number[$i] % 2) == 0) {
            $evenSum += $number[$i];
        }
    }
    return $evenSum;
}

function sumOfOdds($number) {
    $oddSum = 0;

    for ($i = 0; $i < strlen($number); $i++) {

        if (($number[$i] % 2) == 1) {
            $oddSum += $number[$i];
        } 
    }
    return $oddSum;
}

function multiplyEvensbyOdds ($number){
    sumOfEvens($number);
    sumOfOdds($number);
    
    $product = abs(sumOfEvens($number) * sumOfOdds($number));
    
    echo $product;
    return $product;
}
multiplyEvensByOdds($number);
?>

 

0
Programming Fundamentals
radostin.georgiev avatar radostin.georgiev 8 Точки

Здравей. Пробвай да сложиш един abs в самото начало и кажи, че си е число.

Ето едно промерно решение от мен. https://pastebin.com/2hEWPfCm

0
SummerEverdeen avatar SummerEverdeen 1 Точки

Здрасти! Благодаря ти! Бях пробвала така, но ми даваше като резултат 0. Предполагам, че е така заради strlen, което имам по-надолу (казвам му да върти до дължината на стринга, пък променливата горе съм я задала като integer, а не като стринг). Интересно е да разгледам и твоя начин на решаване. Благодаря!

Сега го реших. Зададох допълнително условие в if-конструкциите - ако символът е "-", да добавя 0 към сумата :)

<?php

$number = readline();

function sumOfEvens($number) {
    $evenSum = 0;

    for ($i = 0; $i < strlen($number); $i++) {
        if ($number[$i] == "-") {
            $evenSum += 0;
        } else if (($number[$i] % 2) == 0) {
            $evenSum += $number[$i];
        }
    }
    return $evenSum;
}

function sumOfOdds($number) {
    $oddSum = 0;

    for ($i = 0; $i < strlen($number); $i++) {
        if ($number[$i] == "-") {
            $oddSum += 0;
        } else if (($number[$i] % 2) == 1) {
                $oddSum += $number[$i];
            }
        }
        return $oddSum;
    }

    function multiplyEvensbyOdds($number) {
        sumOfEvens($number);
        sumOfOdds($number);

        $product = abs(sumOfEvens($number) * sumOfOdds($number));

        echo $product;
        return $product;
    }

    multiplyEvensByOdds($number);
?>

 

0