Trädvy Permalänk
Medlem
Registrerad
Jul 2013

For loop med siffror *Rookie*

Citat:

var a =1;
for(int i=1; i<5; i++;) // i blir 4
a*= i; // Det blir så här a = a * a * i.... dvs 1 * 1 * 4 = 4

Kan någon förklara för mig varför jag har fel?

Fractal Define R4 - B350 GA-AB350M-Gaming 3 - Ryzen 5 2600 3.9 GHz + NZXT Kraken x42 - Corsair Vengeance 2133mhz 2x8GB - RX580 Pulse 8GB

Trädvy Permalänk
Medlem
Plats
Zion
Registrerad
Apr 2004

Har ni gått igenom hur en for loop fungerar?

[ i5-6600K @ 4.7Ghz || Corsair H110 GTX || 16GB DDR4 || ASUS Z170 Pro Gaming || Asus ROG 1080 Strix @ 2100+/11Ghz+ ]

"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood

Trädvy Permalänk
Medlem
Plats
~
Registrerad
Jul 2001

Du sätter a = 1 i första raden.
I andra raden sätter du i = 1, ökar på den stegvis tills i = 4.
I tredje raden säger du att a ska tilldelas värdet av a (1 sedan tidigare) gånger i (4).
D.v.s. a*=i är ekvivalent med a = a * i på samma sätt som a+=i skulle ge a = 5.

Fedora, i3wm, Ansible, Vim, git, LaTeX - allt som behövs för att göra mig nöjd.

Trädvy Permalänk
Medlem
Registrerad
Maj 2007

Förstår inte riktigt vad du försöker göra? Är det koden som inte fungerar? Vilket språk är det?

Citera så att jag hittar tillbaka! AMD Ryzen 7 3700X | MSI B450 Tomahawk Max | 32GB Ballistix 3000/15 @ 3733/16
| EVGA 2070 Black | Crucial MX500 2TB | EVGA G2 750W | Windows 10

Trädvy Permalänk
Medlem
Plats
Skåne
Registrerad
Aug 2009

@Crazy Ferret:
Ett semikolon för mycket sist i forloopens parentes.
Inga klamrar rund det i loopen (den blir bara en rad)

Bör i alla fall bli 1 * 1 * 2 * 3 * 4,
Men det kan bli tydligare om du skriver a = (a * i)

Trädvy Permalänk
Tjatolle – RTX ON
Plats
Uppsala
Registrerad
Sep 2010

Vad är det för språk? python? c?

Trädvy Permalänk
Medlem
Registrerad
Jul 2013

Om ni skriver koden i valfritt program då får ni fram med siffran 24.
Jag vill kunna förstå varför det blev så.

Citat:

var a =1;
for(int i=1; i<5; i++;)
a*= i;
Console.WriteLine(a);

Fractal Define R4 - B350 GA-AB350M-Gaming 3 - Ryzen 5 2600 3.9 GHz + NZXT Kraken x42 - Corsair Vengeance 2133mhz 2x8GB - RX580 Pulse 8GB

Trädvy Permalänk
Medlem
Registrerad
Jun 2017
Skrivet av WaspCustoms:

Vad är det för språk? python? c?

Ser ut som javascript.

Trädvy Permalänk
Tjatolle – RTX ON
Plats
Uppsala
Registrerad
Sep 2010
Skrivet av ortzon:

Om ni skriver koden i valfritt program då får ni fram med siffran 24.
Jag vill kunna förstå varför det blev så.

Kan du förklara lite mer utförligt vad du vill göra så kan jag plotta ner hur man skulle skriva det i swift

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007

Ditt problem verkar vara att du ser på raderna som separata, men den sista raden hör egentligen till for-loopen:

var a = 1; for(int i = 1; i < 5; i++) a *= i;

Undvik helst att skriva for-loopar utan "måsvingar", det blir mest bara förvirrande och kan lätt orsaka buggar. D.v.s. skriv hellre så här:

var a = 1; for(int i = 1; i < 5; i++) { a *= i; }

Trädvy Permalänk
Medlem
Registrerad
Jul 2013
Skrivet av WaspCustoms:

Kan du förklara lite mer utförligt vad du vill göra så kan jag plotta ner hur man skulle skriva det i swift

Jag gjorde ett litet test häromdagen på Universitet.
Jag skrev att man får 16 men tyvärr hade jag fel.

På pappret stod det följande
Vad får man för resultat om man använder följande kod

Citat:

var a =1;
for(int i=1; i<5; i++)
a *= i;
Console.WriteLine(a);

Hänger du med nu?

Fractal Define R4 - B350 GA-AB350M-Gaming 3 - Ryzen 5 2600 3.9 GHz + NZXT Kraken x42 - Corsair Vengeance 2133mhz 2x8GB - RX580 Pulse 8GB

Trädvy Permalänk
Medlem
Plats
Zion
Registrerad
Apr 2004
Skrivet av ortzon:

Jag gjorde ett litet test häromdagen på Universitet.
Jag skrev att man får 16 men tyvärr hade jag fel.

På pappret stod det följande
Vad får man för resultat om man använder följande kod
Hänger du med nu?

Varje gång du kör loopen tar du resultatet av körningen innan och tar det gånger i

Loop 1
1 * 1 = 1

Loop 2
1 * 2 = 2

Loop 3
2 * 3 = 6

Loop 4
6 * 4 = 24

[ i5-6600K @ 4.7Ghz || Corsair H110 GTX || 16GB DDR4 || ASUS Z170 Pro Gaming || Asus ROG 1080 Strix @ 2100+/11Ghz+ ]

"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood