zadanie podzielność liczb

0

Witam proszę możecie mi pomóc z tym zadaniem ? Nie wiem do je zrobić.

Write down numbers from 1 to 100

  • if number is divisible by 3 write "podzielna przez 3"
  • if number is divisible by 5 write "podzielna przez 5"
  • if number is divisible by 3 and 5 write "podzielna przez 3 i 5"
    Expected output is an array with number as a index and corresponding value

$expectedArray = array (
1 => 1,
2 => 2,
3 => 'podzielna przez 3,
4=>4,
5=>'podzielna przez 5'
i tak dalej
);

Zadanie generalnie ma byc zrobione obiektowo.

<?php class FooBar { public function run() { } } Bardzo proszę was o pomoc program który napisałem wyświetla liczby ale nie ma tablicy ni nie jest obiektowy.
0
  <table>
<?php foreach ($var as &$number) {
 echo " <tr>
    <td>$number</td>
    <td>";

    if($number % 3 == 0)  {
    echo "podzielna przez 3";
} elseif ($number % 5 == 0) {
    echo "podzielna przez 5";
} elseif ($number % 3 and 5 == 0) {
        echo "podzielna przez 3 i 5";
}
 echo "</td></tr>";
}
?>

Program który napisałem oczywiście jest zły ponieważ nie spełnia standardów zadania. Wyświetla komunikaty o podzielności ale nie ma tablicy ani nie jest napisany obiektowo. Bardzo proszę o pomoc

2

Coś takiego:

class NumberDivisibility
{
public function getNumbersData(): array
{
    $data = [];
    for ($i = 1; $i <= 100; $i++) {
        $data[$i] = $this->getNumberData($i);
    }

    return $data;
}

private function getNumberData(int $number): string
{
    $divBy3 = $number % 3 === 0;
    $divBy5 = $number % 5 === 0;

    if ($divBy3 && $divBy5) {
        return 'podzielna przez 3 i 5';
    } elseif ($divBy3) {
        return 'podzielna przez 3';
    } elseif ($divBy5) {
        return 'podzielna przez 5';
    }

    return $number;
}
}

$numberDivisibility = new NumberDivisibility();
print_r($numberDivisibility->getNumbersData());
0
serek napisał(a):

Coś takiego:

class NumberDivisibility
{
public function getNumbersData(): array
{
    $data = [];
    for ($i = 1; $i <= 100; $i++) {
        $data[$i] = $this->getNumberData($i);
    }

    return $data;
}

private function getNumberData(int $number): string
{
    $divBy3 = $number % 3 === 0;
    $divBy5 = $number % 5 === 0;

    if ($divBy3 && $divBy5) {
        return 'podzielna przez 3 i 5';
    } elseif ($divBy3) {
        return 'podzielna przez 3';
    } elseif ($divBy5) {
        return 'podzielna przez 5';
    }

    return $number;
}
}

$numberDivisibility = new NumberDivisibility();
print_r($numberDivisibility->getNumbersData());

Niestety ten kod mi nie działa :( w lini z "public function getNumbersData(): array" wywala mi błąd. Co jest nie tak? Druga sprawa w zadaniu zaproponowali taki szablon z klasą ```

<?php class FooBar { public function run() { } }``` ```
0

Ja bym użył mojego nazewnictwa. Nie jest może idealne, ale przynajmniej coś wnosi.

Jaki błąd?

Usuń typowanie z kodu, może masz starą wersję php.

0
serek napisał(a):

Ja bym użył mojego nazewnictwa. Nie jest może idealne, ale przynajmniej coś wnosi.

Jaki błąd?

Usuń typowanie z kodu, może masz starą wersję php.

Nie wiem co jest nie tak :( Komunikat błedu "Parse error: syntax error, unexpected ':', expecting ';' or '{' in C:\xampp\htdocs\switch\index.php on line 22" Wersja mojego PHP to 5.6.30

0

Przecież napisałem, żebyś to typowanie usunął z mojego przykładu. Starsze php nie wspierają tego.

W ogóle radzę uczyć się na najnowszym php 7, a nie 5.6.

0

Na Twoim miejscu stworzyłbym dodatkową klasę: iterator[1] o nazwie FizzBuzz[2]. Instancjonowanie FizzBuzz wrzuciłbym do konstruktora FooBar; z metody run zwracałbym wynik funkcji iterator_to_array[3].

And, by the way, zmień nauczyciela.

[1] https://secure.php.net/manual/en/class.iterator.php
[2] https://en.wikipedia.org/wiki/Fizz_buzz
[3] https://secure.php.net/manual/en/function.iterator-to-array.php

1 użytkowników online, w tym zalogowanych: 0, gości: 1