Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Gleichungen des zweiten grades

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.02.2011, 21:56 Uhr
Napsta



Guten Abend,

Ich hab mal wieder ein Problem, und das Problem ist sqrt();.

Hier der quelltext:


C++:
#include <iostream>
#include <string>
#include <cmath>

using namespace std;

int main()
{
    int a;
    int b;
    int c;
    long x;

    cout << "So Sie möchten sich auch vor Gleichungen des zweiten Gerades drücken \n";
    cout << "Geben Sie bitte den Wert von a ein: ";
    cin >> a;
    cout << endl;
    cout << "Geben Sie bitte den Wert von b ein: ";
    cin >> b;
    cout << endl;
    cout << "Geben Sie bitte den Wert von c ein: ";
    cin >> c;
    cout << endl << endl;

    x = -b sqrt(b * b - 4 * a * c) / 2 * a;

    cout << x << endl;

system("Pause");
return 0;
}




Dieser Post wurde am 01.02.2011 um 21:58 Uhr von Napsta editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.02.2011, 22:31 Uhr
Hans
Library Walker
(Operator)


Hi,

und was genau ist jetzt das Problem?
Abgesehen davon, das in dieser Zeile:

C++:
x = -b sqrt(b * b - 4 * a * c) / 2 * a;


hinter dem ersten b ein Operator fehlt, fällt mir nur auf das sqrt normalerweise mit double arbeitet. Und da x zwar long aber eben auch ein Ganzzahltyp ist, gehen mögliche Kommastellen am Ende verloren.

Hans


Nachtrag: Dann ist noch zu berücksichtigen, das in (Formel-) Büchern an der Stelle meisst dieses Zeichen "±" steht, womit der Compiler aber nichts anfangen kann. D.h. Du solltest beide Fälle berücksichtigen, wenn b*b - 4*a*c positiv wird. Lediglich ein Ergebniss bekommst du ja nur, wenn dabei Null heraus kommt. Und was passiert, wenn b*b - 4*a*c negativ wird?
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 01.02.2011 um 22:58 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.02.2011, 22:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


und wenn b * b - 4 * a * c <= null ist krachts ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.02.2011, 15:23 Uhr
Napsta



Mein Compiler sagt das sqrt mehrdeutig ist...
Darum compiliert der nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.02.2011, 15:49 Uhr
Napsta



Hier diese Fehlermeldung kam: Fehler 1 error C2668: 'sqrt': Mehrdeutiger Aufruf einer überladenen Funktion c:\users\Napsta\documents\visual studio 2010\projects\gleichungen des 2gerades\gleichungen des 2gerades\gleichungen des zwieten gerades.cpp 25

---
Edit: Smilies deaktiviert.

Dieser Post wurde am 03.02.2011 um 21:05 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.02.2011, 16:24 Uhr
Tommix



Hallo,
wenn Du im Ausgabefenster mal weiter liest:

Zitat:

...: error C2668: 'sqrt': Mehrdeutiger Aufruf einer überladenen Funktion
...\include\math.h(589): kann 'long double sqrt(long double)' sein
...\include\math.h(541): oder "float sqrt(float)"
...\include\math.h(127): oder "double sqrt(double)"
bei Anpassung der Argumentliste '(int)'


Eine Implementierung von sqrt für int (Ganze Zahlen - Willst Du das wirklich?) gibt es nicht und der Compiler weiß nicht, welche der drei anderen er nun nehmen soll. Du müsstest also entweder casten:

C++:
x = -b * sqrt((double)b * b - 4 * a * c) / 2 * a;

oder, was wohl sinnvoller ist a, b usw. gleich double machen.
Gruß, Tommix


Bearbeitung:

Statt * muß + oder - stehen, wie Hans schon erwähnte.


Dieser Post wurde am 02.02.2011 um 16:31 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.02.2011, 17:58 Uhr
Napsta



Danke für die hilfe Leute
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.02.2011, 21:27 Uhr
ao

(Operator)


Die Formel ist noch falsch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.02.2011, 18:04 Uhr
Napsta



Ja mit der formel schlag ich mich gerade herum
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.02.2011, 21:02 Uhr
Hans
Library Walker
(Operator)


Was ist denn das Problem dabei?
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: