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

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 ?

1
if (liczba % 15 > 0)
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

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
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ę:)

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.

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);
  }
0

w języku C# zrobiłam tak:

        static void Main(string[] args)
        {
            int a;
            for (a=0; a<=30; a++)
            {
                if ((a%3==0 || a%5==0))
                {
                    if (a%15 !=0)
                    {
                        Console.WriteLine(a);
                    }
                }
            }
            Console.ReadKey();
        }
    }
1
using System;
     
public class Test
{
    static void Main(string[] args)
    {
        for (int a = 0; a <= 30; a += 1) {
            if ((a % 3 == 0) ^ (a % 5 == 0)) {
                Console.WriteLine(a);
            }
        }
    }
}

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