kilon
Artikelen: 0
Berichten: 11
Lid geworden op: do 14 jan 2010, 18:10

C++ functies

Ik zit weer met een probleempje.

Ik moet een functie max4 schrijven die het maximum van vier getallen bepaalt met behulp van een functie max2 die het maximum van twee getallen bepaalt.

Nu dacht ik dat ik het beste 2 max2 functies kan maken en deze invoeren in de functie max4.

Maar hoe doe je dit?

Ik heb nu dit

Code: Selecteer alles

//Functies max2

int max2a(int a, int b)

{

if (a>b)

{

return a;

}

else

{

return b;

}

}

int max2b (int c, int d)

{

if (c>d)

{

return c;

}

else

{

return d;

}

}

//Functie max4

int max4 (max2a(a,b) , max2b(c,d))

{

if (max2a(a,b) > max2b(c,d))

{

return max2a(a,b);

}

else

{

return max2b(c,d);

}

}
maar dat werkt niet.

Oh, en hoe zorg ik ervoor dat ik deze functies ook aan kan roepen in de main?

Want voor alle getallen in het bereik 1 t/m 4 (in de 4 for loops) moet bekeken worden wat het maximum getal is met behulp van een functie test_max4 (prototype of zo).

Dit heb ik echter nooit helemaal begrepen.

Code: Selecteer alles

#include <iostream>

using namespace std;

int main()

{

//Declaraties

int a(1), b(1), c(1), d(1);

for (a=1; a<=4; ++a)

{

for (b=1; b<=4; ++b)

{

for (c=1; c<=4; ++c)

{

for (d=1; d<=4; ++d)

{

cout << a << b << c << d;

cout << endl;

}

}

}

}

//vier geneste for loops om te kijken of het wel klopt

//max4 vraagt max2 telkens aan

system("PAUSE");

return 0;

}
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: C++ functies

Je hebt geen twee max2 functies nodig.

Code: Selecteer alles

#include <iostream>

using namespace std;

int max2(int a, int b){

if (a>b){

return a;

}else{

return b;

}

}

int main()

{

cout << max(3,2) << endl;

return 0;

}
Wat denk je van:

max4(max2(a,b),max2(c,d))
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
kilon
Artikelen: 0
Berichten: 11
Lid geworden op: do 14 jan 2010, 18:10

Re: C++ functies

Ok, maar dan blijft het probleem staan dat dat niet werkt zo.
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: C++ functies

Hoe bedoel je niet werken? Onderstaande code werkt zonder problemen met GNU GCC compiler. (Code::Blocks als ide)

Code: Selecteer alles

#include <iostream>



using namespace std;

int max2(int a, int b){

	if (a>b){

		return a;

	}else{

		return b;

	}

}

int max4(int a,int b, int c, int d){

	return max2(max2(a,b),max2(c,d));

}

int main()

{

	cout << max4(3,9,20,-1) <<endl;

	return 0;

}


Wat geeft jouw compiler van errors?
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
Landro
Artikelen: 0
Berichten: 18
Lid geworden op: wo 20 jan 2010, 21:21

Re: C++ functies

Waarom wil je 2 losse functies maken om 2 getallen te vergelijken?

Je hebt maar 1 functie nodig zoals dit in het bovenstaande voorbeeld staat.

Ik vermoed dat je het begrip scope niet goed begrijpt.

Iedere functie heeft namelijk een eigen set variabelen. Een functie heeft alleen de beschikking over de variabelen die in de functie zelf gedefinieerd worden en de global gedefinieerde variabelen (pointers laat ik nu even buiten beschouwing)

In het bovenstaande voorbeeld van jhnbk wordt zowel in functie max2 als in max4 de variabele "a" gebruikt, maar beide functies hebben hun eigen versie hiervan. (Het voordeel hiervan wordt snel duidelijk als je grotere programma's schrijft in samenwerking met andere programmeurs.)

Terug naar “Informatica en programmeren”