Jump to content

[C++]ABC Formule errors


ikt

Recommended Posts

#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

Link to comment
Delen op andere websites

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
Link to comment
Delen op andere websites

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
Link to comment
Delen op andere websites

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
Link to comment
Delen op andere websites

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
Link to comment
Delen op andere websites

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?

Link to comment
Delen op andere websites

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...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...