/* * Koen Noens * Oef pointer naar functie, als argument van functie * toepassing : rekenmachine */ #include long double bereken (long double a,long double b,long double (*fp)(long double,long double)); // functie met 3 argumenten, 2de arg is pointer naar een functie die 2 longs neemt en 1 long teruggeeft // zie boek blz 169 //bewerkingen long double product(long double a, long double b); long double quotient(long double a, long double b); long double som(long a, long double b); long double verschil(long double a, long double b); // andere functies void logo(); void menu(); void input(long double * p1, long double * p2, char * op); void main() { long double x1=0; long double x2=0; char opr = 'a'; long double resultaat; logo(); cout << "CALCULATOR\n\n"; menu(); while (opr != 's' && opr != 'S') { input(&x1, &x2, &opr); // arg. by reference : waarde moet wijzigen bij input switch (opr) { case '+' : resultaat=bereken(x1,x2,som); break; case '-' : resultaat=bereken(x1,x2,verschil); break; case 'x' : resultaat=bereken(x1,x2,product); break; case '/' : resultaat=bereken(x1,x2,quotient); break; } // x1 wordt resultaat, om verder te kunnen rekenen x1 = resultaat; cout << resultaat<> *p1; } // bewerking : enkel x / + - of Stoppen *op='a'; while(*op != 'x' && *op != '/' && *op != '+' && *op != '-'&& *op != 's'&& *op != 'S') { cout << "bewerking\t"; cin >> op; } // getal2 if (*op != 's' && *op != 'S') // niet verdergaan als gebruiker wil stoppen { cout << "getal 2 :\t"; cin >> *p2; cout << *p1 << op << *p2 << " = "; } } void menu() { cout << "syntax : getal 1, bewerking, getal2\n\n"; cout << "optellen : \t\t+\naftrekken\t\t-\nvermenigvuldigen \tx\ndelen\t\t\t/\n\n"; cout << "stoppen : S\n\n\n"; } void logo() { //Silly Software Productions cout << endl <