C++ programma

Status
Niet open voor verdere reacties.

RyanG

Nieuwe gebruiker
Lid geworden
20 jan 2009
Berichten
1
Dit is echt een supermakkelijk programma, en ik zal de sourcecode er ook bij zetten voor mensen die dit willen weten.

Het is een nederlandse calculator.
Ik verveelde me vandaag nogal dus toen heb ik dit even gemaakt.
Code:
#include <iostream>

using namespace std;

int main()
{
    int keus1;
    char keus2;
    double N1;
    double N2;
    string O1;
    double PI = 3.1415926535;
    
    system ("cls");
    cout << "Dit is een nederlandse calculator\n\n";
    cout << "kies wat je wilt doen:\n1.plus\n2.min\n3.keer\n4.delen\n5.omtrek van een cirkel\n";
    cin >> keus1;
    
    if( keus1 == 1 )
    {
        system("cls");
        cout << "typ hier je eerste nummer: ";
        cin >> N1;
        cout << "\ntyp hier je tweede nummer: ";
        cin >> N2;
        cout << N1 << " + " << N2 << "=" << N1 + N2;
        cout << "\nwil je overnieuw beggingen?(j/n)";
        cin >> keus2;
        if( keus2 == 'j' )
        {
            main();
        }
        else
        {
            return 0;
        }
    }
    if( keus1 == 2 )
    {
        system("cls");
        cout << "typ hier je eerste nummer: ";
        cin >> N1;
        cout << "\ntyp hier je tweede nummer: ";
        cin >> N2;
        cout << N1 << " - " << N2 << "=" << N1 - N2;
        cout << "\nwil je overnieuw beggingen?(j/n)";
        cin >> keus2;
        if( keus2 == 'j' )
        {
            main();
        }
        else
        {
            return 0;
        }
    }
    if( keus1 == 3 )
    {
        system("cls");
        cout << "typ hier je eerste nummer: ";
        cin >> N1;
        cout << "\ntyp hier je tweede nummer: ";
        cin >> N2;
        cout << N1 << " X " << N2 << "=" << N1 * N2;
        cout << "\nwil je overnieuw beggingen?(j/n)";
        cin >> keus2;
        if( keus2 == 'j' )
        {
            main();
        }
        else
        {
            return 0;
        }
    }
    if( keus1 == 4 )
    {
        system ("cls");
        cout << "typ hier je eerste nummer: ";
        cin >> N1;
        cout << "\ntyp hier je tweede nummer: ";
        cin >> N2;
        cout << N1 << " / " << N2 << "=" << N1 / N2;
        cout << "\nwil je overnieuw beggingen?(j/n)";
        cin >> keus2;
        if( keus2 == 'j' )
        {
            main();
        }
        else
        {
            return 0;
        }
    }
    if( keus1 == 5 )
    {
        double DIAM;
        
        system("cls");
        cout << "typ hier de diameter van jouw cirkel in: ";
        cin >> DIAM;
        cout << "\nde omtrek van jouw cirkel is: " << PI*DIAM;
        cout << "\nWil je opnieuw?(j/n)";
        
        cin >> keus2;
        
        if( keus2 == 'j')
        {
            main();
        }
        else
        {
            return 0;
        }   
    }
}

ik kan hem niet uploaden want hij is 129 kb groot in .zip

vraag het maar als je iets niet begrijpt
 
Code:
double PI = 3.1415926535;

10 decimalen?

11 decimalen = 3,14159265358

Dus 10 decimalen is: 3.1415926536
 
handig, ik vind het een leuke code, misschien kan ik zoiets ook toepassen in mijn rekenmachinetje als je het goed vind :P
 
Een goed begin. Hierbij enkel tips met opzoekwerk om je code te verbeteren.

* Als waarde voor PI, gebruik je best Math.PI uit <cmath>. Wanneer iemand een 64bits compiler gebruikt zal ook automatisch de waarde van PI nauwkeuriger zijn.

* Het is geen goede gewoonte om je eigen functie genest op te roepen, tenzij je niet veel anders kan dan een recursief algoritme te gebruiken. In jouw geval volstaat een eenvoudige do{}while(); lus, die blijft lopen zolang keus2=='j'

* Als je meer dan 3 opeenvolgende waardetesten op hetzelfde nestniveau op dezelfde variabele moet uitvoeren (if (keuze == 1, 2, 3, 4, 5)) kan je best een switch(){}-structuur gebruiken.


Vervolgens kan je deze dingen ook nog toevoegen aan je programma:

* Beveilig je invoer tegen fouten. Wanneer ik 'a' intyp als jij mijn keuze/getal vraagt, slaat je programma op hol. Je kan successvolle invoer testen door volgende structuur:
Code:
int i;
cout << "Geef een getal in: ";
if (cin >> i) {
        cout << "OK";
} else {
        cout << "foutief";
        cin.clear(); //herstelt de fail-code op cin -> zoek op cin.fail() voor meer info
}
deze test kan je ook als voorwaarde in een lus zetten, en combineren met waardevoorwaardes, zoals hier:
Code:
int i = 0;
do {
        cin.clear(); //herstel foutstatus indien nodig
        cout << "Geef een getal van 1 tem 5 in: ";
} while (!((cin >> i) && (i > 0) && (i < 6)));

* Laat je gebruiker zijn opgaven in 1 keer invoeren (beveiliging van de invoer wordt hier wel wat moeilijker en is er in dit voorbeeld uitgelaten)
Code:
double n1, n2;
string bewerking;

cout << "Geef een opgave in: ";
cin >> n1 >> bewerking >> n2; //voorbeeldinvoer (zonder quotes): '13.3+2'
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan