Waar zit de fout? Zie code en verkregen foutmelding.

Status
Niet open voor verdere reacties.

tester123456

Gebruiker
Lid geworden
10 nov 2011
Berichten
5
Mijn code van abc- form.

Code:
   #include <iostream>
    #include <string>
    #include <sstream>
    #include <cmath>


    using namespace std;


    int main()
    {
    string nra;
    string nrb;
    string nrc;

    int a;
    int b;
    int c;


    cout << "Geef hier de waarde op van A:";
    getline (cin, nra);
    stringstream (nra) >> a ;
    cout << a;

    cout << "/nGeef hier de waarde op van B:";
    getline (cin, nrb);
    stringstream (nrb) >> b ;
    cout << b;

    cout << "/nGeef hier de waarde op van C:";
    getline (cin, nrc);
    stringstream (nrc) >> c ;
    cout << c;



    double fDisc1;
    double fDisc2;

    fDisc1 = ( b * b) + ( 4 * a * c ) / (2 * a );
    fDisc2 = ( b * b) - ( 4 * a * c ) / (2 * a );

    if ( fDisc1 <= 0 )
    {
    cout << "ERROR";
    }


    if ( fDisc2 <= 0)
    {
    cout << "ERROR";
    }

    cout << fDisc1;
    cout << "/n" << fDisc2;


    char response;
    cin >> response;
    return 0;
    }


Verkregen foutmelding:

Het gaat om de volgende foutmelding±


1>------ Build started: Project: eigen abc form, Configuration: Debug Win32 ------
1> main.cpp
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
1>C:\Users\Mijn PC\Documents\Visual Studio 2010\Projects\eigen abc form\Debug\eigen abc form.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========





Zou iemand hier aub. de fout aangeven en een eventuele oplossing?
Ook wilde ik vragen wat men vond van mijn programmering(structuur; hiermee bedoel: ik schrijf de code nogal voluit terwijl het ook eenvoudiger kan).


Mvg,

Tester123456
 
Laatst bewerkt door een moderator:
ga eens naar Project > Properties >Configuration Properties > Linker System en verander SubSystem optie naar "Console".
 
ga eens naar Project > Properties >Configuration Properties > Linker System en verander SubSystem optie naar "Console".


Geachte meneer Example5,

Als eerst wil ik u vriendelijk bedanken, het probleem is opgelost!
Wel is het zo dat het programma'tje niet correct werkt( ik krijg onjuiste antwoorden terug, na het invoeren van a, b, c). Heeft u misschien hiervoor een antwoord, een oplossing die u mij kunt aanbieden?
Nogmaals wil ik u vriendelijk bedanken.

Mvg,


Tester123456
 
ik ben om eerlijk te zijn niet echt een ster in wiskunde. klopt je formule wel helemaal? dit kan je hier controleren:

http://www.wiskundeonline.nl/lessen/kw_bewijs_abc_formule.htm


let daarbij op de volgorde waarop de pc de antwoorden berekent;
( b * b) + ( 4 * a * c ) / (2 * a );
zorgt ervoor dat de pc eerst de antwoorden van de getallen tussen haakjes uitrekent, vervolgens ( 4 * a * c ) / (2 * a ) en daarna pas b*b + het antwoord van ( 4 * a * c ) / (2 * a )

kan je een voorbeeld geven van welke a, b en c je invoert en welke uitkomst je zou moeten krijgen?
 
Geachte meneer Example5,

Ik heb de formule gecontroleerd met de formule uit mijn wiskunde B boek, het klopt.
Om voorbeeld te geven( http://www.wiskundeonline.nl/lessen/kw_abc_formule.htm#Voorbeeld_1 )
a = 2
b = 5
c = -7
Het verkregen antwoord is: -771/n39
Het resultaat dat vekregen moest worden is: x = 3.5 of x = 1 .
Ik ben van mening dat het fout ergens tussen de volgorde van berekening ligt, maar heb geen enkel idee waar het nou mis gaat.
De code die ik gebruik staat hierboven.

Mvg,

Tester123456
 
Ik heb je code even aangepast:

[cpp]#include <iostream>
#include <string>
#include <cmath>
#include <conio.h>
using namespace std;

int main()
{
//initialisatie
string nra,nrb,nrc;
int a,b,c;

cout << "Geef hier de waarde op van A: ";
cin >> a;

cout << "Geef hier de waarde op van B: ";
cin >> b;

cout << "Geef hier de waarde op van C: ";
cin >> c;

//berekeningen
double D;
double x1, x2;
D = (b * b) - (4 * a * c);

if ( D < 0 ){cout << "De vergelijking heeft geen oplossingen; D < 0\n";}
else if (D == 0){
cout << "De vergelijking heeft één oplossing; D = 0\n";
x1 = (-b + sqrt(D)) / (2 * a);
cout << "x = " << x1 << "\n";}
else{
cout << "De vergelijking heeft twee oplossingen; D > 0\n";
x1 = (-b + sqrt(D)) / (2 * a);
x2 = (-b - sqrt(D)) / (2 * a);
cout << "x = " << x1 << " of x = " << x2 << "\n";}

getch();
return 0;
}[/cpp]

Ik weet niet wat je probeerde te doen, maar ik vond de ABC-formule in jouw code niet terug.
 
Laatst bewerkt:
dat snapte ik inderdaad ook al niet helemaal... (b * b) - (4 * a * c); zou de nacontrole van je antwoord moeten zijn en niet de berekening van je abc formule dacht ik zo..
 
Je wiskunde klopt gewoon niet.
Een tweedegraadsvergelijking is op te lossen op de volgende manier:

ax² + bx + c = 0 Delen door a
x² + (b/a)x + c/a = 0 Stel x = y - ½b/a
(y - ½b/a)² + (b/a)(y - ½b/a) + c/a = 0
y² + ¼b²/a² - (b/a)y + (b/a)y - ½b²/a² + c/a = 0 Termen wegstrepen/optellen
y² - ¼b²/a² + c/a = 0
y² = ¼b²/a² - c/a
y = ±√(¼b²/a² - c/a)

x = y - ½b/a
Dus x = -½b/a + y
= -½b/a ± √(¼b²/a² - c/a)

Eventueel kun je het hele goedje nog in één breuk zetten, dus binnen de wortel keer 4a², dan een noemer beneden van √(4a²) = 2a:

x = ( -b ± √(b² - 4ac) ) / (2a)

Nou, de afleiding is compleet overbodig (maar wel leuk!); je kunt ook gewoon de laatste formule gebruiken. Dan is

x = ( -b ± √D ) / (2a)
Waarin D = b² - 4ac
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan