[C++, FOR-loop] Help deze newbie met dit easy programmaatje

Pagina: 1
Acties:

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Oi,

Ik ben dus bezig op een forum waar je van die challenge's hebt ala try2hack.nl

Level 1 t/m 5 lukt me zo, alleen level 6 ziet er zo uit:
Om deze zone te halen moet je waarschijnlijk een beetje proggen!
Gegeven: A=1, B=1 & C=1

1) Als eerst vermeerder je A met één
2) Vervolgens vermeerder je B met A
3) Als slot vermeerder je C met B

Herhaal deze stappen t/m A = 1234
Als dit is gebeurt is de waarde van C het paswoord!
Als je maar een beetje de basis van C++ kent, kom je hier mee verder.
Ook met andere talen is dit natuurlijk mogelijk.

Ik wil het persé in C++ doen :P En ik ken geen andere talen (Ja, HTML en BATCH en die soort ongein).

Ik heb al veel gegoogled en ben al een tijdje bezig met een boekje basiscursus C++ Leen Ammeraal :)

Ik heb natuurlijk ook al wat zelf geprobeerd en dit is wat het is geworden:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>


int main()

{

int b = 1;
int c = 1;
    

for (int a = 1; a <= 1234; a++) b += a; c += b;


cout << c << endl;


return 0;
}


Wat doe ik nou fout?

Volgens mij begrijp ik de vraagstelling gewoon helemaal niet ofzo.. iig het password wat ik er na veel verschillende pogingen uit kreeg werkte niet :(

Of moet ik van

C++:
1
 b += a; c += b;

Dit maken
C++:
1
{b += a; c += b;}


Dan komt er wel wat anders uit.. ik begrijp ook dat het dan een statement wordt. Maar hoe kan het dat er dan wat anders uit komt :?

// edit: typo

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-08 15:58
Aangezien je geen {} gebruikt na de for, zal enkel het eerste statement door de for lus worden uitgevoerd, dus b += a;

Schrijf die for lus dus met accolades:
code:
1
2
3
4
5
for ( conditie)
{
  statement1;
  statement2;
}


Tip: gebruik altijd accolades bij lussen, if's enz... ook al heb je maar 1 statement in die lus/if.

https://fgheysels.github.io/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

je mag achter een for lus 1 statement schrijven. Jij hebt er 2 geschren. Ze staan wel allemaal op dezelfde regel, maar dat vind de compiler niet belangrijk. Je moet daar dus { } om plaatsen

  • Bucket
  • Registratie: September 2002
  • Laatst online: 18-08 22:44
Er staat:
Om deze zone te halen moet je waarschijnlijk een beetje proggen!
Gegeven: A=1, B=1 & C=1

1) Als eerst vermeerder je A met één
2) Vervolgens vermeerder je B met A
3) Als slot vermeerder je C met B

Herhaal deze stappen t/m A = 1234
Als dit is gebeurt is de waarde van C het paswoord!

Volgens mij, als ik het zo lees, moet je dus beginnen met A=1... daarna verhoog je A eerst met 1 (oftewel... je for lus loopt van a=2 t/m 1234).

Toch?

  • Wirf
  • Registratie: April 2000
  • Laatst online: 27-08 16:03
"3) Als slot vermeerder je C met B" -> wordt dat niet C = C * B; ?

en die for loop moet idd met accolades zijn

Heeft sinds kort zijn wachtwoord weer terug gevonden!


Verwijderd

Daar zat ik net ook over te denken. Volgens mij moet je met A = 1; A++ (A=2) beginnen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 29-08 15:58
Check ook de P&W FAQ eens, daar staat een stukje over netjes coden en coding styles:
Welkom in P&W (FAQ-15/10/2002)

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-08 15:58
Verwijderd schreef op 06 november 2002 @ 10:18:
Daar zat ik net ook over te denken. Volgens mij moet je met A = 1; A++ (A=2) beginnen.

Er staat wel onder de 3 stappen: herhaal deze stappen totdat A = ...

https://fgheysels.github.io/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Bucket schreef op 06 november 2002 @ 10:16:
Er staat:
Om deze zone te halen moet je waarschijnlijk een beetje proggen!
Gegeven: A=1, B=1 & C=1

1) Als eerst vermeerder je A met één
2) Vervolgens vermeerder je B met A
3) Als slot vermeerder je C met B

Herhaal deze stappen t/m A = 1234
Als dit is gebeurt is de waarde van C het paswoord!

Volgens mij, als ik het zo lees, moet je dus beginnen met A=1... daarna verhoog je A eerst met 1 (oftewel... je for lus loopt van a=2 t/m 1234).

Toch?
Die a++ wordt pas nadat de iteratie is opgevoerd opgehoogd (gelukkig) :+

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Wow, goeie tips allemaal ;)

Ik zal ff die Welkom in P&W (FAQ-15/10/2002) doorlezen :)

Ik heb nu A = 0; gedaan.. maar dan klopt het password nog niet..

ff dat faqje lezen dan ;)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-08 15:58
Alarmnummer schreef op 06 november 2002 @ 10:19:
[...]

Die a++ wordt pas nadat de iteratie is opgevoerd opgehoogd (gelukkig) :+


Hmm, dus die a++ komt als laatste.... Dit impliceert dan eigenlijk wel dat de volgorde van zijn stappen niet meer juist is.

Om veilig te spelen zou ik dan eigenlijk een while lus gebruiken ipv een for:
code:
1
2
3
4
5
6
7
while( a < 1234 )
{
  a++;
  b += a;
  c +=b;
}
cout << "wachtwoord: " << c << endl;

https://fgheysels.github.io/


Verwijderd

Ja, maar je moet als eerste A met 1 vermeerderen. En A was 1.. Dus moet A volgens mij 2 zijn in het begin.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

whoami schreef op 06 november 2002 @ 10:21:

[...]


Hmm, dus die a++ komt als laatste.... Dit impliceert dan eigenlijk wel dat de volgorde van zijn stappen niet meer juist is.
Dan begin je toch gewoon met a = 2 ;)

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Kijk, ik hoop dat jullie snappen dat een C++ newbie in de war raakt bij deze gedachtes.. de vraag is zo vreemd gesteld :P

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-08 15:58
Alarmnummer schreef op 06 november 2002 @ 10:24:
[...]

Dan begin je toch gewoon met a = 2 ;)


Owja. 8)7

https://fgheysels.github.io/


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
int a, b, c;

a = 2;

cout << a << endl;

while( a < 1234 )
{
  a++;
  b += a;
  c +=b;
}
cout << "wachtwoord: " << c << endl;
Je hebt een fout paswoord ingevoerd!
Ga 'Terug' om het nog eens te proberen!
8)7

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • Bucket
  • Registratie: September 2002
  • Laatst online: 18-08 22:44
Ik zou het dus zo:

==========================
int b = 1;
int c = 1;

for (int a = 2; a <= 1234; a++)
{
b += a;
c += b;
}

cout << c << endl;
==========================

proberen.

Verwijderd

Ok, in vb
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim a As Double
Dim b As Double
Dim c As Double

a = 1
b = 1
c = 1

Do While (a < 1234)
    a = a + 1
    b = b + a
    c = c + b
Loop

Debug.Print c


Uitkomst:

edit:

weggehaald (Maar hij klopte wel :*))


edit:

hehehe integer overflow :)

  • Wirf
  • Registratie: April 2000
  • Laatst online: 27-08 16:03
DeMoN schreef op 06 november 2002 @ 10:27:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
int a, b, c;

a = 2;

cout << a << endl;

while( a < 1234 )
{
  a++;
  b += a;
  c +=b;
}
cout << "wachtwoord: " << c << endl;


8)7
Nou begin je met A=2 en je laat de for-lus weg, das wel een beetje veel van het goede :)

probeer deze eens:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream.h>

int main() {
        int a = 1;
        int b = 1;
        int c = 1;

        while (a < 1234) {
                a++;
                b += a;
                c += b;
        }

        cout << c << endl;

        return 0;
}

Heeft sinds kort zijn wachtwoord weer terug gevonden!


  • Denhomer
  • Registratie: Augustus 2000
  • Laatst online: 12-10-2025

Denhomer

Doh !

een for bestaat dus uit dit
for(commando's die in het begin 1 MAAL worden uitgevoerd;testwaarde die getest wordt voor het begin van een loop;actie die ondernomen wordt na ELKE loop)
Jou a++ wordt dus idd pas als laatste stap uitgevoerd
en volgens mij is het duidelijker als je werkt met { en }
code:
1
2
3
for (int a = 1;a <= 1234;) {
hier kan je de code gaan plaatsen
}

  • whoami
  • Registratie: December 2000
  • Laatst online: 29-08 15:58
Het is hier niet de bedoeling dat we die jongen zijn wachtwoord gaan achterhalen, maar dat we hem helpen bij het maken van z'n C++ programma, zodat hij snapt wat hij doet en wat hij verkeerd doet.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-08 15:58
[nohtml]
DeMoN schreef op 06 november 2002 @ 10:27:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
int a, b, c;

a = 2;

cout << a << endl;

while( a < 1234 )
{
  a++;
  b += a;
  c +=b;
}
cout << "wachtwoord: " << c << endl;
Ehm, ja, je moet natuurlijk alle variablen goed initialiseren:
a = 1;
b = 1;
c = 1;
en dan pas de lus....

Als je de variablen niet initialiseert, dan kan de uitkomst iedere keer verschillend zijn. In C/C++ worden variablen niet automatisch op 0 geinitialiseerd maar hebben ze een onbepaalde waarde.

https://fgheysels.github.io/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

*vind het wel lachen :)

zoveel kennis en zoveel antwoorden terwijl het probleem eigelijk heel simpel is. Zo krijgt die jongen er helemaal een verkeerde indruk van :+

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
whoami schreef op 06 november 2002 @ 10:30:
<font color="blue"
Het is hier niet de bedoeling dat we die jongen zijn wachtwoord gaan achterhalen, maar dat we hem helpen bij het maken van z'n C++ programma, zodat hij snapt wat hij doet en wat hij verkeerd doet.</font>
idd ;)

als een van bovenstaande werkt dan ga ik hem wel eerst helemaal bestuderen hoor :)

Je hoort het zo.. daarna maak ik voor de gein ook ff van het bovenstaande een macro in word.. moet toch ook lukken :)

brb


edit:
Je hebt het goede paswoord ingevoerd!
Dat betekent dat je nu toegang hebt tot Zone 7
LOL

Thx :P

Okeej.. ik snap nu wel wat ik heb gedaan :) Ik heb gewoon dingetjes over het hoofd gezien enzo!!

Weer wat geleerd! Thx m8's :)

edit2: Dit werkte dus for the record:

C++:
1
2
3
4
5
6
7
8
int b = 1;
int c = 1;

for (int a = 2; a <= 1234; a++)
{
b += a;
c += b;
}

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Tzal wel weer aan mij liggen maar als je nou eens gewoon die opdracht als commentaar in je code editor paste en daarna de regeltjes invult:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Gegeven: A=1, B=1 & C=1
int a = 1;
int b = 1;
int c = 1;

// Heej we moeten loopen!
do
  {
  // 1) Als eerst vermeerder je A met één
  a++;

  // 2) Vervolgens vermeerder je B met A
  b += a;

  // 3) Als slot vermeerder je C met B
  c += b;
  }
// Herhaal deze stappen t/m A = 1234
while(a <= 1234);

// Als dit is gebeurt is de waarde van C het paswoord!
printf("Password is %d\n", c);

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

En dan nu in zo min mogelijk regels:
C++:
1
int a=1,b=1,c=1;for(;a<1235;c+=b+=++a);

O-)

Professionele website nodig?


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
hehe ja curry684, je bent de man _/-\o_

Maar idd goed idee, van dat commentaar.

Wordt het nog overzichterlijker :)

Maar ik snap em 'al' en heb dus het password ;)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

curry684 schreef op 06 november 2002 @ 10:46:
En dan nu in zo min mogelijk regels:
C++:
1
int a=1,b=1,c=1;for(;a<1235;c+=b+=++a);

O-)
aaarrgghhh ;) Ken je de 'ten liners' nog uit de kijk? Je moest dan een programma in elkaar zetten in zo weinig mogelijk regels. Zo ben ik ook begonnen met programmeren :P

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:17

Creepy

Tactical Espionage Splatterer

Alarmnummer schreef op 06 november 2002 @ 10:54:
[...]


aaarrgghhh ;) Ken je de 'ten liners' nog uit de kijk? Je moest dan een programma in elkaar zetten in zo weinig mogelijk regels. Zo ben ik ook begonnen met programmeren :P
Geef mij de one-lines maar uit de MCM/MCCM ;) (oneliners in MSX-BASIC wel te verstaan, waarbij 1 regel uit 255 tekens mag bestaan... Heb een keer een compleet tetris spel daarin zien staan..

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-08 15:58
Alarmnummer schreef op 06 november 2002 @ 10:54:
[...]


aaarrgghhh ;) Ken je de 'ten liners' nog uit de kijk? Je moest dan een programma in elkaar zetten in zo weinig mogelijk regels. Zo ben ik ook begonnen met programmeren :P


Wat een evolutie. van ten liners naar OO, design patterns en de hele reutemeteut.

https://fgheysels.github.io/


  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
DeMoN schreef op 06 november 2002 @ 10:11:
Oi,

Ik ben dus bezig op een forum waar je van die challenge's hebt ala try2hack.nl

Level 1 t/m 5 lukt me zo, alleen level 6 ziet er zo uit:


[...]
welk forum is dat dan, lijkt me wel gaaf..

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

En je kunt meteen door naar lvl 7 :)

Professionele website nodig?


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
pkouwer schreef op 06 november 2002 @ 12:32:
[...]

welk forum is dat dan, lijkt me wel gaaf..
www.zwabber.org

Je moet je wel eerst reggen anders kan je de challenges niet doen ;)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

En hoeveel levels zijn er? Ik mag vast en zeker niet meedoen als dit level 7 van de 10 al unlocked :z

[ Voor 0% gewijzigd door curry684 op 06-11-2002 16:19 . Reden: Zeikerds... :Y) ]

Professionele website nodig?


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

wat is '|v| 7'? Is nog niet zo 'el drieendertig te' ;)

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Ik vermoed dat curry's keyboard lijdt aan chronisch klinkerverlies.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 05:00
(jarig!)
curry684 schreef op 06 november 2002 @ 10:46:
En dan nu in zo min mogelijk regels:
C++:
1
int a=1,b=1,c=1;for(;a<1235;c+=b+=++a);

O-)
Ah, een constante loop. Die kunnen we at-compile-time evalueren; bovendien worden buiten de loop a en b niet meer gebruikt. De kleinere (EN snellere!) variant wordt dus:
C++:
1
int c=314705170;

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Soultaker schreef op 06 november 2002 @ 16:13:
Ah, een constante loop. Die kunnen we at-compile-time evalueren; bovendien worden buiten de loop a en b niet meer gebruikt. De kleinere (EN snellere!) variant wordt dus:
C++:
1
int c=314705170;
Ik weet niet of dit soort reciprocale code-generate gewenst is :)
Ericston schreef op 06 november 2002 @ 16:11:
Ik vermoed dat curry's keyboard lijdt aan chronisch klinkerverlies.
Jajaja :z

Professionele website nodig?


  • Blaurens
  • Registratie: Mei 2002
  • Laatst online: 18-08 16:31
curry684 schreef op 06 november 2002 @ 10:46:
En dan nu in zo min mogelijk regels:
C++:
1
int a=1,b=1,c=1;for(;a<1235;c+=b+=++a);

O-)
Is er een goede rede waarom
C++:
1
int c=b=a=1;for(;a<1234;c+=b+=++a);


niet zou werken? Zegmaar, in het kader van de byte-besparing?

Verwijderd

code:
1
2
'b' : undeclared identifier
'c' : undeclared identifier


reden genoeg?

  • Blaurens
  • Registratie: Mei 2002
  • Laatst online: 18-08 16:31
Ik ben lekker wakker vandaag :z

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
LOL!

zwabber.org heeft trouwens 16 levels.

http://www.zwabber.org/hof.php?zone=16

Hall of fame van level 16.. ik zie er ook een tweaker nick tussen staan ;)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Okee ik heb me ingeschreven, en als ik op Zone 1 klik mag ik alleen de code voor het volgende level invoeren.... hoe kom ik nu aan een opdracht?

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 29-08 03:21

.oisyn

Moderator Devschuur®

Demotivational Speaker

curry684 schreef op 08 november 2002 @ 02:01:
Okee ik heb me ingeschreven, en als ik op Zone 1 klik mag ik alleen de code voor het volgende level invoeren.... hoe kom ik nu aan een opdracht?


wheehehe, lousy hacker
(hint: view source :+)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 05:00
(jarig!)
OMG - dat forum: daar is GoT heilig bij!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

.oisyn schreef op 08 november 2002 @ 03:25:

[...]


wheehehe, lousy hacker
(hint: view source :+)
Hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha :)

* curry684 moet dat soort dingen niet proberen om 2 uur 's nachts, hij was al meer aan het ijlen om die tijd :Y)

Professionele website nodig?

Pagina: 1