Beginnen: Rekenmachine met functies

Status
Niet open voor verdere reacties.

Voldemort

Gebruiker
Lid geworden
21 jul 2006
Berichten
111
Ik ben begonnen met C++ en omdat ik functies wil proberen dacht ik een rekenmachine te maken.

Alleen zegt G++ dit:

rekenen.cpp:74:2: warning: no newline at end of file
rekenen.cpp: In function ‘int main()’:
rekenen.cpp:49: error: ‘functie’ cannot be used as a function

Code in de bijlage. Gelieve bij de oplossing ook te zeggen wat er fout is, want in PHP kan dit wel. En die return 0; staat er toch :S?

(ik weet dat het nu nog een zootje is qua cout enzo, maar dat los ik later op met functies hoor ;))
 

Bijlagen

Laatst bewerkt:
hier heb je je code :)

#include <iostream.h>

using namespace std;

int opt(int cijfer1, int cijfer2)
{
return (cijfer1 + cijfer2);
}

int aftr(int cijfer1, int cijfer2)
{
return (cijfer1 - cijfer2);
}

int vermen(int cijfer1, int cijfer2)
{
return (cijfer1 * cijfer2);
}

int del(int cijfer1, int cijfer2)
{
return (cijfer1 / cijfer2);
}
Je moet je functies verklaren voordat je ze kan oproepen in main, ofwel moet je prototypes gebruiken. dit leer je later wel :)

int main() {
int doen;
char *doen2;

cout << "Wat wil je doen?\n 1 = Optellen\n 2 = Aftrekken\n 3 = Vermenigvuldigen\n 4 = Delen\nJouw keuze: ";
cin >> doen;

if(doen < 1 || doen > 4)
cout << "Dit is geen optie.\n";
else
{
int cijfer1;
int cijfer2;
char *functie;
int uitkomst;

cout << "\nJe hebt gekozen voor ";

if(doen == 1)
{
doen2 = "optellen";
cout << doen2 << "." << endl << "Geef nu 2 cijfers in die je wil "<< doen2 << ".\n\nCijfer 1: ";
cin >> cijfer1;
cout << "Cijfer 2: ";
cin >> cijfer2;

uitkomst = opt(cijfer1,cijfer2);

cout << "De uitkomst is " << uitkomst << endl;


}
else if(doen == 2)
{
doen2 = "aftrekken";
cout << doen2 << "." << endl << "Geef nu 2 cijfers in die je wil "<< doen2 << ".\n\nCijfer 1: ";
cin >> cijfer1;
cout << "Cijfer 2: ";
cin >> cijfer2;

uitkomst = aftr(cijfer1,cijfer2);

cout << "De uitkomst is " << uitkomst << endl;


}
else if(doen == 3)
{
doen2 = "vermenigvuldigen";
cout << doen2 << "." << endl << "Geef nu 2 cijfers in die je wil "<< doen2 << ".\n\nCijfer 1: ";
cin >> cijfer1;
cout << "Cijfer 2: ";
cin >> cijfer2;

uitkomst = vermen(cijfer1,cijfer2);

cout << "De uitkomst is " << uitkomst << endl;


}
else
{
doen2 = "delen";
cout << doen2 << "." << endl << "Geef nu 2 cijfers in die je wil "<< doen2 << ".\n\nCijfer 1: ";
cin >> cijfer1;
cout << "Cijfer 2: ";
cin >> cijfer2;

uitkomst = del(cijfer1,cijfer2);

cout << "De uitkomst is " << uitkomst << endl;


}


}
return 0;
}
Je fout was uitkomst = functie(cijfer1,cijfer2); => hier roep je de FUNCTIE functie(parameter1,parameter2) aan , dit is fout omdat deze functie niet bestaat en omdat functie niet gedeclareerd is. (zoals int x, x is gedeclareerd als een int type, als je die niet declareerd kan je die ook niet gebruiken) je wou dat functie in de naam van je functie veranderde. maar dit werkt zo niet :P en als het kan heb ik nog niet geleerd hoe :)

miss slecht uitgelegt maja ;)
 
Laatst bewerkt:
Is er echt geen manier om die dubbele code (in jouw geval die cijfer1 en cijfer2 steeds te zetten) te vermijden (zonder extra functies te maken)?
 
Voldemort zei:
Is er echt geen manier om die dubbele code (in jouw geval die cijfer1 en cijfer2 steeds te zetten) te vermijden (zonder extra functies te maken)?

die cijfer1 en cijfer2 zul je in dit programma altijd achter je functie moetten zetten. het zijn namelijk de instructies voor je functie. als je die er niet zet weet de functie niet waarover jij het hebt als je dan in het blok ( {} ) bv cijfer1+cijfer2 zet. die heb je dus altijd nodig. ik weet niet of het kan zonder herhaling van code... miss dat ik dit nog wel leer( ben zelf ook c++ aan het leren)
 
Ik zal eens prutsen met functies. Als iemand een antwoord heeft, zeg het maar.

Edit: Ik heb nog wat functies bijgemaakt en dit (bijlage) is het resultaat. Ik krijg nu nog 1 error:

rekenen.cpp:87:2: warning: no newline at end of file

Ik heb toch aan het einde << endl; staan :S. Ik snap deze error eigenlijk niet echt.

Kan verder eens iemand zeggen of dit een goede code is of eerder brol (en zeg niet: "Rekening houdende met het feit dat je net begonnen bent met C++" of dergelijke)?
 
Laatst bewerkt:
Die laatste error kun je oplossen door een Enter te geven op de laatste regel van het bestand rekenen.cpp

Het gaat dus niet om je output, maar om je code file.

De code ansich is niks mis mee. Ik heb mezelf aangeleerd om alle variabelen die ik declareer ook meteen te initialiseren. Zo voorkom je dat als je een variabele leest voordat je 'm geschreven hebt je programma vreemde dingen gaat doen. Als bijvoorbeeld door puur toeval cijfer1 de waarde 5 heeft bij initialisatie omdat het geheugen die waarde had, kan jouw berekening ineens een andere uitkomst hebben dan jij verwachtte.

Da's op zich nog niet zo erg, maar het maakt het wel verrekkes lastig om de fout op te sporen.

Voor de rest ben ik er ook wel fan van als er veel commentaar bij staat. Bij de eenvoudige berekeningen hoeft dat natuurlijk niet, maar soms kom je pas een half jaar later weer bij het stukje code en zie dan nog maar 's uit te vinden wat je dacht toen je het schreef. :)

Daget
 
Laatst bewerkt:
Wel raar, maarja. Kan dit uitgezet worden in g++?

Is dit nu een goede code die ik heb? Of is het eigenlijk maar een brolcode?

Hoe kan ik in vensters werken (voor Windows is dat Winsock, maar ik vind nergens iets voor Linux :confused:)?
 
Voldemort zei:
Dat je een titelbalk enzo hebt. Dus geen console meer.

ik heb ooit eens een source gezien van een "window" in windows , en ik raad je aan eerst fatsoenlijk c++ te leren (ALLES) voor je met venstertjes begint :) dat is in ieder geval wat ik ga doen. en daarbij , die venstertjes en al het graphische is toch maar bijzaak...
 
Maar als ik met muiskliks wil werken is dat nogal lastig, ik denk niet dat dat in een console gaat, of wel? Maar hoe heet dat ding om windows onder Linux te maken?
 
Wat je nodig hebt is een grafische library. Daarvoor kun je onder andere kiezen uit GTK of Qt. Het lastige is dat je niet weet welke omgeving je gebruikers hebben.

Met Qt kun je je code voor je ramen laten genereren, dus dat scheelt je weer wat werk. Veel Linux programma's werken trouwens in twee delen: een grafisch gedeelte en een gedeelte waar alle feitelijke berekeningen in gemaakt worden. Dat tweede gedeelte is 9 van de 10 keer ook op de console aan te roepen.

Met console programmeren kun je dus toch een eind komen. :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan