Som maken in een loop?

Status
Niet open voor verdere reacties.

iReactionz

Gebruiker
Lid geworden
15 feb 2019
Berichten
7
Hallo allemaal sinds kort krijg ik javascript op school dit is best wel moeilijk om te doen. Ik zit nu met een vraag die ik tijdens de praktijk les heb gekregen.

4. De som van alle natuurlijke getallen die kleiner zijn dan tien die veelvouden zijn van 3 of van 5 is 23. - 3 + 5 + 6 + 9 = 23 - Laat de computer de som berekenen van alle natuurlijke getallen die kleiner zijn dan 1000 en die veelvoud zijn van 3 of 5. Log het eindresultaat naar de console.

ik moet deze vraag oplossen en heb dus het volgende stukje code al:

let count = 5;
while (count <= 1000) {
console.log(count);
count = count + 5;
}

deze zorgt ervoor dat alles mooi wordt gelogd van nr 5 tot 1000 maar nu is mijn vraag hoe krijg ik al die tussentijdse logs bij elkaar geteld tot 1 grote som?

Groetjes

iReactionz
 
Begin niet direct code te schrijven want dan kan je soms lang bezig zijn.
Schrijf de opdracht in Nedrlandse "code", zie hieronder. Ga hiermee Javascript schrijven en testen.

Totaal = 0
Teller van 1 t/m 999 {
Is de Teller door 3 of door 5 deelbaar met als antwoord een geheel getal (denk aan modulus)
DAN Totaal = Totaal + Teller
}
console Totaal

De Javascript kan je hiermee zelf maken.

Suc6 met de opdracht.
 
Laatst bewerkt:
Bedankt! ben snel eens aan de slag gegaan en dit is wat ik er van heb kunnen maken dat toch het dichtste aan leunt bij het antwoord denk ik :p

let totaal = 0
let teller = 5;
while (teller <= 1000) {
teller = teller + 5;

while (teller % 3 === 0 && teller % 5 === 0){
totaal = totaal + teller
console.log(totaal)
break
}
}
 
Je gaat nu met stappen van 5 naar de 1000. Je kan dan niet testen of iets door 3 deelbaar is.
De modulus heb je netjes toegepast. In de opdracht staat een veelvoud van 3 of van 5. Dan kan je geen && gebruiken.
Het gaat om getallen die kleiner zijn dan 1000 (niet om kleiner of gelijk aan)

Het is een eenvoudige opdracht die ingewikkeld is omschreven, van docent zeker ;)
Breek de opdracht in kleine stukjes tekst dan zie je dat je die 2e while loop niet nodig hebt.
 
Bedankt voor de hulp!
Laatste vraagje :) ik heb een beetje zitten nadenken en wat als ik het probeer met een if else dan heb ik dit stukje code?
En dan ga ik eigenlijk na of het deelbaar door 3 is en door 5 :)

let totaal = 0
let teller = 5;
while (teller <= 1000) {
teller = teller + 5;

if(teller % 3 === 0){
totaal = totaal + teller
console.log(totaal);
} else { (teller % 5 === 0)
totaal = totaal + teller
console.log(totaal);
}
}
 
Code:
let teller = 5; // je begint bij 5. Je kan het getal 3 dus niet controleren.
while (teller <= 1000) {
teller = teller + 5; // hier ga je met stappen 5 omhoog. 5, 10, 15, 20, 25, enz. Je kan daardoor niet testen op 3, 6, 9, 12, enz.
if(teller % 3 === 0){ // door de code hierboven zal deze if geen goed resultaat geven.
Probeer eerst de simpele methode, tel van 1 t/m 999 in stapjes van 1
Daarna kan je de code eventueel slimmer/sneller maken.

Wil je aub "code" seleccteren en op knopje
Code:
[/noparse] klikken   [ATTACH]335024.vB[/ATTACH] Dat leest fijner :)
 

Bijlagen

  • code.jpg
    code.jpg
    16 KB · Weergaven: 93
Code:
let teller = 5; // je begint bij 5. Je kan het getal 3 dus niet controleren.
while (teller <= 1000) {
teller = teller + 5; // hier ga je met stappen 5 omhoog. 5, 10, 15, 20, 25, enz. Je kan daardoor niet testen op 3, 6, 9, 12, enz.
if(teller % 3 === 0){ // door de code hierboven zal deze if geen goed resultaat geven.
Probeer eerst de simpele methode, tel van 1 t/m 999 in stapjes van 1
Daarna kan je de code eventueel slimmer/sneller maken.

Wil je aub "code" seleccteren en op knopje
Code:
[/noparse] klikken   [ATTACH=CONFIG]335024[/ATTACH] Dat leest fijner :)[/QUOTE]

daarvoor heb ik dit nodig :)

[CODE]  let totaal = 0
  let teller = 1;
  while (teller <= 999) {
    teller = teller + 1;
    console.log(teller)
}
 
Okee, en nu jouw hele if blok van #5 op de goede plek in de while loop, dan ben je goed op weg.
Kijk wel nog naar je else syntax en je puntkomma's.

Lees nog even het verschil tussen let en var , dat zal verschil maken in je code
 
Laatst bewerkt:
Okee, en nu jouw hele if blok van #5 op de goede plek in de while loop, dan ben je goed op weg.
Kijk wel nog naar je else syntax en je puntkomma's.

Lees nog even het verschil tussen let en var , dat zal verschil maken in je code

Onze docent had gezegd gezegd dat var en let eigenlijk hetzelfde zijn maar dat var iets ouder is en dus let het meest recentere is om te gebruiken :p geen idee of dit klopt :p

Dit is dan wat ik heb nu

Code:
let totaal = 0
  let teller = 1;
  while (teller <= 999) {
    teller = teller + 1;

    if(teller % 3 === 0){
     totaal = totaal + teller
     console.log(totaal);
    } else { (teller % 5 === 0)
     totaal = totaal + teller
     console.log(totaal);
    }
}
 
Laatst bewerkt:
Haha, dan mag de docent ook even nalezen wat het verschil is :p Een voorbeeld
Code:
if (true) {
   var groente = 'spinazie';
   let fruit = 'bananen';
} 
console.log(groente); // spinazie (een 'var' is binnen én buiten een code blok zichtbaar)
console.log(fruit);   // error: fruit is not defined
Een code blok herken je aan de accolades, bijvoorbeeld while, if, for, function, enzovoort

Code:
..... {
   .....
}
Beide moeten op de juiste plek worden toegepast. Bij verkeerd gebruik heb je een resultaat wat niet goed werkt.

Je kan er meer over lezen als je googelt op global scope (var) en local scope (let).
 
Laatst bewerkt:
Code:
let totaal = 0 ?
let teller = 1;
while (teller <= 999) {
    teller = teller + 1;
    if (teller % 3 === 0){
        totaal = totaal + teller ?
        console.log(totaal);
    } else {
        ? (teller % 5 === 0) ?
            totaal = totaal + teller ?
            console.log(totaal);
        ?
    }
}

Test even met while (teller <= 9) dan vind je nog een foutje :)
 
Laatst bewerkt:
Code:
let totaal = 0 ?
let teller = 1;
while (teller <= 999) {
    teller = teller + 1;
    if (teller % 3 === 0){
        totaal = totaal + teller ?
        console.log(totaal);
    } else {
        ? (teller % 5 === 0) ?
            totaal = totaal + teller ?
            console.log(totaal);
        ?
    }
}

Test even met while (teller <= 9) dan vind je nog een foutje :)

Klopt. 9 is deelbaar door 3 tot 0.
Dan vraag ik mij wel af waarom deze op de eerste console.log lijn een 2 weergeeft.
Want de uitkomst 5 die erna komt snap ik bvb wel deze is van 9:3 = 3 + teller(2) = 5 maar is dan ook eigenlijk fout als je het bekijkt... :confused:

EDIT: ik denk dat ik de oplossing heb gevonden na een beetje zoeken!

Code:
 let totaal = 0;
  let teller = 1;
  while (teller <= 999) {
      teller = teller + 1;
      if (teller % 3 === 0 || teller % 5 === 0){
          totaal = totaal + teller;
      }
      teller ++
  }
  console.log(totaal);
 
Laatst bewerkt:
Yep, super! Er zit nog 1 bug in. In de while loop verhoog je de teller op twee verschillende plekken. Laat de teller++; (met puntkomma) staan en haal die andere weg.

Test even met (teller <= 9) zoals in het voorbeeld van de opdracht.

Vergelijk je Javascript code eens met de 'Nederlandse code' in berichtje #2 dan klopt alles :D

* aanvulling
Ik zat nog na te denken waarom aangeleerd wordt om alléén let te gebruiken.
Een belangrijke reden is dat je 'netjes' leert programmeren. De overgang naar andere talen is dan makkelijker.
 
Laatst bewerkt:
Tip. Zet als allereerste regel in je Javascript code (of in een Javascript function)
Code:
"use strict";
dan moet elke variabele zijn gedeclareerd (let, var, const)
dan voorkom je onveilige code, bijv. eval("var a = 20;");
dan kan je een variabele niet deleten
dan kan je 'alleen-lezen' variabelen niet overschrijven
dan is je code 'future-proof' omdat een aantal toekomstige keywords niet als variabele mag worden gebruikt, bijv. var public = 5;
 
Code:
let totaal = 0;
  let teller = 1;
  while (teller <= 999) {
      if (teller % 3 === 0 || teller % 5 === 0){
          totaal = totaal + teller;
      }
      teller ++;
  }
  console.log(totaal);

Dit is mijn stukje code uiteindelijk.
Als ik met teller <= 9 probeer dan kom ik uit op 23
 
Je bent geslaagd :thumb:

Tip: in plaats van while(...) kan je eventueel for(...) gebruiken, dan is de code nog 1 regel korter.
Maar zoals je het nu hebt is prima om in te leveren.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan