Liczby podzielne przez 3 bez reszty z zakresu od 1 do 100

0

Mam do zrobienia takie zadanie z JS. Jestem początkujący i nie bardzo wiem jak sobie z tym poradzić. Oto treść tego zadania: Napisz funkcję o nazwie countDivisible() która policzy ile liczb z przedziału od 1 do 100 są podzielne przez 3 bez reszty. Niech funkcja zwraca ilość podzielnych liczb. A tutaj skrypt który napisałem do tego zadania:

function countDivisible() {
    for(var i = 1; i < 100; i++) {
        if(i % 3 == 0) {
            console.log("Liczb z przedziału od 1 do 100 podzielnych przez 3 to: " + i);
        }
    }
}
countDivisible();

co prawda działa ale nie tak jak trzeba. Chce żeby się wyświetił jeden komunikat z tym ile jest tych liczb a nie jak teraz wyświetla mi się 33 komunikatów

2

Stwórz sobie nowa zmienną w funkcji np. var counter = 0 i przy każdym spełnieniu warunku dodawaj 1 do licznika counter += 1.

Niech funkcja zwraca ilość podzielnych liczb

return counter na koniec funkcji, a żeby otrzymać jej wynik robisz tak: var result = countDivisible(); console.log(result);

0
.__. napisał(a):

Stwórz sobie nowa zmienną w funkcji np. var counter = 0 i przy każdym spełnieniu warunku dodawaj 1 do licznika counter += 1.

Niech funkcja zwraca ilość podzielnych liczb

return counter na koniec funkcji, a żeby otrzymać jej wynik robisz tak: var result = countDivisible(); console.log(result);

Ok ale coś nie działa bo mi pokazuje że tych liczb jest 99 a raczej powinno być 33

function countDivisible() {
    var counter = 0;
    for(var i = 1; i < 100; i++) {
        counter+=1;
        if(i % 3 == 0) {
            console.log("Liczb z przedziału od 1 do 100 podzielnych przez 3 to: " + i);
        }
    }
    return counter;
}
var result = countDivisible();
console.log(result);

wyżej kod. Coś robię źlę

2

Pytanie pomocnicze: jaki warunek musi być spełniony, by licznik był zwiększany w Twoim kodzie?

0
Silv napisał(a):

Pytanie pomocnicze: jaki warunek musi być spełniony, by licznik był zwiększany w Twoim kodzie?

1

Ok dzięki panowie. Już działa. Jeszcze raz wielkie dzięki

4

Btw możesz to zobić bez takiego bruteforce'a, po prostu:

function countDivisable() {
  return Math.floor(100 / 3)
}
3
function countDivisable() {
   return ~~(100/3);
}
5
gk1982 napisał(a):
function countDivisable() {
   return ~~(100/3);
}

Możesz też użyć np.

100 / 3 | 0b0

100 / 3 >> 0

100 / 3 & 0b111111

oraz każdą inną operację bitową, która nic nie robi, ale korzystanie z takich trików to imo słaby pomysł.

Raz, że jest to nieczytelne (korzystasz z efektu ubocznego operacji bitowej, która zamienia wynik na int32), dwa - tracisz precyzję typu number, np:

Math.floor(21474836470.1234) // -> 21474836470    OK!

~~21474836470.1234           // -> -10            Oops! Poza zakresem typu int32
0

function countDivisable() {
return 100/3|0;
}

:d

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