Loading...
SummerEverdeen avatar SummerEverdeen 4 Точки

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

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