Pętla wypisująca liczby podzielne przez 3 albo 5 – jak to zrobić?

Odpowiedz Nowy wątek
2018-12-27 21:01
0

Mam następujące zadanie:

wypisz liczby podzielne przez 3 albo 5 ( w zakresie 1..100) (nie wypisuj tych podzielnych jednocześnie przez 3 i 5)
z pierwszą częscią wiem jak sobie poradzić, ale nie wiem jak wykluczyć z pętli liczby podzielne przez 15.
Jak to zrobic ?

edytowany 1x, ostatnio: furious programming, 2018-12-27 21:19

Pozostało 580 znaków

2018-12-27 21:05
1
if (liczba % 15 > 0)

Pozostało 580 znaków

2018-12-27 21:09
0

Działa! Możesz wytłumaczyć czemu akurat tak się pisze? Trochę nie rozumiem jak na postawie żadnej instrukcji samo to wykluczyło :o

Znaczy, wiem, ze intrukcja jest w środku ifa, ale jej nie rozumiem czemu tak działa

edytowany 1x, ostatnio: furious programming, 2018-12-27 21:19

Pozostało 580 znaków

2018-12-27 21:21
1

% jest to operator modulo.
Po polsku - jest to operator, który zwraca resztę z dzielenia.

Przykładowo:

2 % 3 = 2
3 % 2 = 1

W twoim przypadku:

15 % 15 = 0
30 % 15 = 0

16 % 15 = 1
17 % 15 = 2
31 % 15 = 1
edytowany 1x, ostatnio: furious programming, 2018-12-27 21:26

Pozostało 580 znaków

2018-12-27 21:24
0

Modulo ogarniałam, bo musiałam zrobić do pierwszej części zadania, ale drugą część rozwiązania przez Ciebie jest krótka i sprytna! A ja tyle się głowiłam z jakimiś break'ami. Już rozumiem. Dziękuję:)

Pozostało 580 znaków

2018-12-27 22:56
1

@wokalove: To jest skrócona wersja FizzBuzz - taka ciekawostka ;-)

Dla Javy pełna wersja Twojego zadania wyglądałaby tak:

public static void main(String[] args) {
        for(int i = 1; i <= 100; i++) {
            if(i % 3 == 0 & i % 5 == 0) {
                System.out.println(i + " Fizz Buzz");
            }
            else if((i % 3) == 0) {
                System.out.println(i + " Fizz");
            }
            else if((i % 5) == 0) {
                System.out.println(i + " Buzz");
            }
            else {
                System.out.println(i);
            }
        }
}

https://repl.it/@xhexe/DarkvioletDiscreteProjector

Dla Go za pomocą if/else if:

package main

import "fmt"

func main()  {
    for i:= 1; i <= 100; i++ {
        if((i % 3) == 0 && (i % 5) == 0) {
            fmt.Println(i, "Fizz-Buzz")
        } else if(i % 3 == 0) {
            fmt.Println(i, "Fizz")
        } else if(i % 5 == 0) {
            fmt.Println(i, "Buzz")
        } else {
            fmt.Println(i)
        }
    }
}

https://play.golang.org/p/TbAs8wFJlq1

Dla Go za pomocą switch:

package main

import "fmt"

func main() {
    for i := 1; i <= 100; i++ {
        switch {
        case ((i%3) == 0 && (i%5) == 0):
            fmt.Println(i, "Fizz-Buzz")
        case (i%3 == 0):
            fmt.Println(i, "Fizz")
        case (i%5 == 0):
            fmt.Println(i, "Buzz")
        default:
            fmt.Println(i)
        }
    }
}

https://play.golang.org/p/HG0s-mia7xQ

Przykład w Javascript:

for(let i = 0; i <= 100; i++) {
  if((i % 3) === 0 && (i % 5) === 0) {
    console.log(i + ` Fizz Buzz`);
  }
  else if((i % 3) === 0) {
    console.log(i + ` Fizz`);
  }
  else if((i % 5) === 0) {
    console.log(i + ` Buzz`);
  }
  else {
    console.log(i);
  }
}

https://repl.it/@xhexe/OurRapidBooleanalgebra

Możesz uruchomić przykłady pod linkami. Przy pełnym zadaniu FizzBuzz nie powinnaś skracać do wersji od @szarotka bo znając życie ktoś się przyczepi (jak do mnie nie raz). Aczkolwiek w Twojej wersji zadania jej wersja będzie jak najbardziej poprawna.


"Trolling is a art"
edytowany 2x, ostatnio: Hispano-Suiza, 2018-12-27 23:27

Pozostało 580 znaków

2018-12-28 08:08
0

Po co tyle warunków jak można jednym to zrobić:

for (int i=1; i<=100; i++)
 {
        if ((i % 3 == 0 || i % 5 == 0) && (i % 15 != 0))
             Console.WriteLine(i);
  }
edytowany 3x, ostatnio: szydlak, 2018-12-28 08:10
Po to zeby poczatkujacy mogl lepiej zrozumiec. - Hispano-Suiza 2018-12-28 09:26

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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