User defined functions met een return value

Status
Niet open voor verdere reacties.

motto

Nieuwe gebruiker
Lid geworden
31 mei 2010
Berichten
2
Goedeavond allemaal,

Aangezien dit mijn eerste post is op dit forum zal ik eerst even wat achtergrond blootstellen, alvorens over te gaan tot mijn technisch gerichte vraag.

Afgelopen weekend ben ik met c++ gestart.Programmeren in c++ lijkt me een nieuwe uitdaging, destemeer omdat ik redelijk onervaren ben op vlak van programmeren. Op school heb ik enkel een zeer kleine basis opgedaan met visual basic.
Maar na het internet een tijdje te zijn afgeschuimd wilde ik met behulp van een zelfstudie boek het een kans geven. Ik ben me bewust dat het niet de gemakkelijkste weg is die ik kies, maar na enkele reviews over het boek c++ prime plus gelezen te hebben leek het me met behulp daarvan het proberen waard.
Zo gezegd, zo gedaan. Het boek is nu in mijn bezit en tot nu toe heb ik er geen spijt van. (Van de eerste 50(?) bladzijden alleszins:) )

Zoals de titel het al aangeeft ben ik bezig met gebruik te maken van User-Defined functions; meer bepaald die waarbij een Return value gebruikt wordt.

In het boek wordt volgend voorbeeld gegeven:
Code:
// convert.cpp -- converts stone to pounds
#include <iostream>
int stonetolb(int); // function prototype

int main()
{
using namespace std;
int stone;
cout << "Enter the weight in stone: ";
cin >> stone;
cin.get();
int pounds = stonetolb(stone);
cout << stone << " stone = ";
cout << pounds << "pounds." << endl;
cin.get();
return 0;
}
int stonetolb(int sts)
{
return 14 * sts;
}

Na dit voorbeeld doorgenomen te hebben, en de uitleg erbij gelezen te hebben wilde ik het graag zelf uittesten met een eigen "verzonnen" voorbeeld.
Hetgeen ik wilde doen is simpelweg de lengte van de zijde van een vierkant ingeven, zodat het programma de oppervlakte kon berekenen.
Na wat denkwerk kwam ik tot het volgende:
Code:
//ReturnValue.cpp -- Gebruik maken van een return value

#include <iostream>
int oppervlakte(int);

int main()
{
	using namespace std;

	cout << "Hoeveel bedraagt de zijde van het vierkant: ";
	int zijde;
	cin >> zijde;
	cin.get();

	oppervlakte (zijde);
	cout << endl;
	cout << "De oppervlakte bedraagt: " << oppervlakte << "vierkante meter";

	cin.get();
	return 0;
}
int oppervlakte (int zijde)
{
	
	return zijde * zijde;
	
}

Het probleem is dat als ik het programma in een win32 console scherm uitvoer dat de uitkomst zoiets als 00E61253 bedraagt bij een zijde van 4.
Eerst dacht ik dat er misschien gemixt werd tussen decimale getallen en iets anders. Na wat zoekwerk leek het mij een hexadecimaal getal te zijn, maar helaas, als ik dit getal omzette naar een decimale waarde kwam ik een getal vele vele male groter uit dan gewoon 16.
Daarna vreesde ik dat het gebruik van "opp" in plaats van "oppervlakte" misschien het probleem gaf. Dat "opp" misschien een standaard sleutelwoord was binnen c++. Maar wederom bleek het dat niet te zijn.

Heeft iemand een idee wat er scheelt aan de code?


Alvast bedankt

Groeten Tom


EDIT: Ik zie het al waar de code klopt niet helemaal klopt. Ik zal het nog eens moeten nakijken. :)
Naderhand zal ik posten als ik het gevonden heb.
 
Laatst bewerkt:
je kan het best eerst een paar dingen zelf uitproberen voordat een van ons het juiste antwoord geeft:

Je kan proberen te debugge, met VC++, dat je ziet wat er gebeurt.

Het probleem kan zijn bijvoorbeeld dat je 2x int zijde declareert, je kan beter verschillende namen gebruiken

de waarde die het teruggeeft kan van alles zijn, sinds je niet int x = function(); hebt gedaan. En je past niet de waarde van zijde aan met een pointer

Je moet even goed naar je code kijken en denken wat er fout kan zijn, probeer andere dingen om er achter te komen
 
Ik geef je de volgende hint: er is een essentieel verschil tussen de voorbeeldcode en jouw variant, meer bepaald met betrekking tot hoe je de functie uitvoert en hoe je met het resultaat ervan omgaat.
 
Het is me gisterenavond nog gelukt om de correcte code te vinden.
De voorbeeldcode had ik nog eens grondig doorgenomen en toen had ik door waar ik mis zat.

Hieronder is de correcte code vermeld.

Code:
#include <iostream>
int oppervlakte (int);

int main()
{
	using namespace std;

	int zijde;
	cout << "Waarde zijde= ";
	cin >> zijde;

	cin.get();

	int opp;
	opp = oppervlakte (zijde);

	cout << "Oppervlakte bedraagt " << opp << " vierkante meter";

	cin.get();
	return 0;
}
int oppervlakte (int s)
{
	return s * s;
}


Bedankt voor de reacties!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan