1 van 1

C++ functies

Geplaatst: wo 20 jan 2010, 19:00
door kilon
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;

}

Re: C++ functies

Geplaatst: wo 20 jan 2010, 19:08
door jhnbk
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))

Re: C++ functies

Geplaatst: wo 20 jan 2010, 19:27
door kilon
Ok, maar dan blijft het probleem staan dat dat niet werkt zo.

Re: C++ functies

Geplaatst: wo 20 jan 2010, 19:31
door jhnbk
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?

Re: C++ functies

Geplaatst: wo 20 jan 2010, 21:33
door Landro
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.)