Jump to content
Geplaatst:
comment_1547700

#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

Featured Replies

Geplaatst:
comment_1547814

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: door marcootje

Geplaatst:
  • Auteur
comment_1547839

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: door ikt

Geplaatst:
  • Auteur
comment_1548051

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. :puh: 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: door ikt

Geplaatst:
comment_1548615

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: door marcootje

Geplaatst:
  • Auteur
comment_1548850

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?

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.

Gast
Op dit onderwerp reageren...

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.