ikt Geplaatst: 12 december 2009 Rapport Geplaatst: 12 december 2009 #include <iostream> #include <math.h> using namespace std; int main () { int a, b, c, d; long double x, y; cout << "abc-formule. ax^2 + bx + c\n"; cout << "Voer a b en c (gehele getallen) in met een spatie"; cin >> a >> b >> c; cin.get(); d = (b ^ 2) - 4 * a * c; if (d < 0) cout << "Deze formule is niet mogelijk"; x = (-b + long double sqrt( long double d )) / (2 * a); cout << "X is " << x << "of\n"; y = (-b - long double sqrt( long double d )) / (2 * a); cout << "X is " << y; cin.get(); } Ik krijg 2 errors: 1>d:\ikt\visual studio 2008 projects\projects\cin2\cin2\cin2.cpp(15) : error C2062: type 'long double' unexpected 1>d:\ikt\visual studio 2008 projects\projects\cin2\cin2\cin2.cpp(17) : error C2062: type 'long double' unexpected Reageren
marcootje Geplaatst: 12 december 2009 Rapport Geplaatst: 12 december 2009 (bewerkt) Van een wijs persoon die te lui is om zelf te posten, ook wel klasgenootje genoemd: je moet x = (-b + long double sqrt( long double d )) / (2 * a); veranderen in: x = (-b + (long double) sqrt( (long double) d )) / (2 * a); want je voert een typecast uit op de uitkomst van sqrt(), en ook een op d. typecasts zijn altijd tussen () dit moet je natuurlijk ook bij de formule met de - doen. Bewerkt: 12 december 2009 door marcootje Reageren
ikt Geplaatst: 12 december 2009 Auteur Rapport Geplaatst: 12 december 2009 (bewerkt) Van een wijs persoon die te lui is om zelf te posten, ook wel klasgenootje genoemd: je moet x = (-b + long double sqrt( long double d )) / (2 * a); veranderen in: x = (-b + (long double) sqrt( (long double) d )) / (2 * a); want je voert een typecast uit op de uitkomst van sqrt(), en ook een op d. typecasts zijn altijd tussen () dit moet je natuurlijk ook bij de formule met de - doen. Gesnopen. Edit: Werkt Bewerkt: 12 december 2009 door ikt Reageren
ikt Geplaatst: 12 december 2009 Auteur Rapport Geplaatst: 12 december 2009 (bewerkt) Ben ik weer Nu werkt het programma (ik moet nog 1 ding toevoegen, en dat is dat die maar 1x antwoord als de discriminant 0 is), maar dat ding begrijpt de abc formule blijkbaar niet. Er komt iets heel anders uit dan normaal. xD #include <iostream> #include <math.h> using namespace std; int main () { int a, b, c, d; long double x, y; cout << "abc-formule. ax^2 + bx + c\n"; cout << "Voer a b en c (gehele getallen) in met een spatie "; cin >> a >> b >> c; cin.get(); d = (b ^ 2) - ( 4 * a * c ); if (d < 0) { cout << "Deze formule is niet mogelijk\n"; cin.get(); return 0; } cout << "De discriminant is " << d << "\n"; x = (-b + (long double) sqrt( (long double) d )) / (2 * a); cout << "X is " << x << " of\n"; y = (-b - (long double) sqrt( (long double) d )) / (2 * a); cout << "X is " << y; cin.get(); } Edit: HET IS ME GELUKT! #include <iostream> #include <math.h> using namespace std; int main () { int a, b, c; long double d, x, y; cout << "abc-formule. ax^2 + bx + c\n"; cout << "Voer a b en c (gehele getallen) in met een spatie "; cin >> a >> b >> c; d = (b * b) - ( 4 * a * c ); cin.get(); if (d < 0) { cout << "Deze formule is niet mogelijk\n"; cin.get(); return 0; } cout << "De discriminant is " << d << "\n"; x = (-b + (long double) sqrt( (long double) d )) / (2 * a); cout << "X is " << x << " of\n"; y = (-b - (long double) sqrt( (long double) d )) / (2 * a); cout << "X is " << y; cin.get(); } Bewerkt: 12 december 2009 door ikt Reageren
marcootje Geplaatst: 13 december 2009 Rapport Geplaatst: 13 december 2009 als je toch een macht wilt gebruiken ipv (b * b) kun je dit doen: pow(b, 2) Reageren
ikt Geplaatst: 13 december 2009 Auteur Rapport Geplaatst: 13 december 2009 als je toch een macht wilt gebruiken ipv (b * b) kun je dit doen: pow(b, 2) Ik heb geen idee waar je over praat Reageren
marcootje Geplaatst: 13 december 2009 Rapport Geplaatst: 13 december 2009 (bewerkt) in je eerste code heb je deze berekening voor de discriminante, die niet werkt: d = (b ^ 2) - 4 * a * c; Later los je dit op door de ^ weg te halen: d = (b * b) - ( 4 * a * c ); Dat de eerste niet werkt ligt eraan dat ^ in C++ niet 'tot de macht' betekend, maar XOR (in een vergelijking, óf de eerste statement moet TRUE zijn, óf de tweede, maar niet beide). Machten moet je op een andere manier berekenen, met de functie pow(), zoals ik al zei: d = pow(b, 2) - 4 * a * c; Maar dit hoeft niet per se... je kunt het natuurlijk ook bij b*b houden. Het was zomaar een zijopmerking . Bewerkt: 13 december 2009 door marcootje Reageren
ikt Geplaatst: 14 december 2009 Auteur Rapport Geplaatst: 14 december 2009 in je eerste code heb je deze berekening voor de discriminante, die niet werkt: d = (b ^ 2) - 4 * a * c; Later los je dit op door de ^ weg te halen: d = (b * b) - ( 4 * a * c ); Dat de eerste niet werkt ligt eraan dat ^ in C++ niet 'tot de macht' betekend, maar XOR (in een vergelijking, óf de eerste statement moet TRUE zijn, óf de tweede, maar niet beide). Machten moet je op een andere manier berekenen, met de functie pow(), zoals ik al zei: d = pow(b, 2) - 4 * a * c; Maar dit hoeft niet per se... je kunt het natuurlijk ook bij b*b houden. Het was zomaar een zijopmerking . Aha, zo! pow(getal, macht) is het dus. Zal ik onthouden. pow = power net zoals sqrt = square root? Reageren
Thundercover Geplaatst: 14 december 2009 Rapport Geplaatst: 14 december 2009 pow = power net zoals sqrt = square root? Inderdaad. Het eerste getal doe je tot de macht van het tweede getal. Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.