Dezimalzahl erkennen [c++ Konsolenanwendung]
-
Aha also double oder nicht
habs probiert. Es erkennt die Dezimalzahl aber es kommen neue warnings... werde sie versuchen zu beheben. Ich editiere diese Antwort dann ob ichs geschafft hab oder nicht 
-
Die Warnungen kommen, weil der Rest des Programmes nicht zu den doubles im Hauptprogramm passt.
-
Ich gebs auf ich kriegs nicht auf die Reihe mit den Warning... Ich muss mir nochmal den Teil mit den Doubles ansehen

hier der aktuelle code:
#include <iostream> #include "math.h" const double PI = 3.1415926535897932384626433832795; using namespace std; int add (int a, int b) { int c = a+b; return c; } int sub (int a, int b) { int c = a-b; return c; } int mul (int a, int b) { int c = a*b; return c; } int divi (int a, int b) { int c = a/b; return c; } double sinus (int a) { double param, c; param = a; c = asin (param) * 180.0 / PI; return c; } int main() { double ersteZahl; double zweiteZahl; int modus; cout << " -----Willkommen beim Rechner von *****!----- "; cout << endl; cout << " ~*Geben sie Ihren Modus ein*~ " << endl; cout << " Addition: 1" << endl; cout << " Subtraktion: 2 " << endl; cout << " Multiplikation: 3 " << endl; cout << " Division: 4 " << endl; cout << " Sinus [Winkel]: 5 " << endl; cout << " Welchen Modus waehlen sie? " << endl; cout << " >> "; cin >> modus; cout << "Sie waehlten Modus " << " " << modus << " . " << endl; cout << endl; cout << " Geben Sie nun die erste Zahl ein: "; cin >> ersteZahl; cout << endl; cout << " Geben Sie die zweite Zahl ein (bei sinus egal): "; cin >> zweiteZahl; if (modus == 1 ) { cout << " " << ersteZahl << " + " << " " << zweiteZahl << " = "; cout << add(ersteZahl,zweiteZahl); cout << endl; } else if (modus == 2 ) { cout << " " << ersteZahl << " - " << " " << zweiteZahl << " = "; cout << sub(ersteZahl,zweiteZahl); cout << endl; } else if (modus == 3 ) { cout << " " << ersteZahl << " * " << " " << zweiteZahl << " = "; cout << mul(ersteZahl,zweiteZahl); cout << endl; } else if (modus == 4 ) { cout << " " << ersteZahl << " : " << " " << zweiteZahl << " = "; cout << divi(ersteZahl,zweiteZahl); cout << endl; } else if (modus == 5 ) { cout << " Der Sinus von " << ersteZahl << " entspricht " << " "; cout << sinus(ersteZahl); cout << " Grad" << endl; cout << endl; cout << endl; } return 0; }Warnings:
(68) : warning C4244: 'Argument': Konvertierung von 'double' in 'int', möglicher Datenverlust
(68) : warning C4244: 'Argument': Konvertierung von 'double' in 'int', möglicher Datenverlust
(74) : warning C4244: 'Argument': Konvertierung von 'double' in 'int', möglicher Datenverlust
(74) : warning C4244: 'Argument': Konvertierung von 'double' in 'int', möglicher Datenverlust
(80) : warning C4244: 'Argument': Konvertierung von 'double' in 'int', möglicher Datenverlust
(80) : warning C4244: 'Argument': Konvertierung von 'double' in 'int', möglicher Datenverlust
(86) : warning C4244: 'Argument': Konvertierung von 'double' in 'int', möglicher Datenverlust
(86) : warning C4244: 'Argument': Konvertierung von 'double' in 'int', möglicher Datenverlust
(92) : warning C4244: 'Argument': Konvertierung von 'double' in 'int', möglicher Datenverlust
-
die Warnungen geben dir die Zeilennummern aus. In Zeile 68 passiert also eine solche Konvertierung.
cout << add(ersteZahl,zweiteZahl);Schau die doch mal die Typen von "ersteZahl" und "zweiteZahl" an. Welche Typen haben die Argumente von "add"?
Felix
-
und in welchem Typ erwartest du die Ergebnisse

Versuche mal statt:
#include "math.h"die C++ Version:
#include <cmath>
-
@Up Ja als Zahl also Dezimalzahl.
So keine Warnings mehr. Aber auch kein Ergebnis also Ergebnis = 0
-
xGriimReapeeRx schrieb:
@Up Ja als Zahl also Dezimalzahl.
Eben nicht.
So keine Warnings mehr. Aber auch kein Ergebnis also Ergebnis = 0
Ojeh, jetzt hast du irgendwas kaputt repariert, was vorher eigentlich schon fast richtig war.
-
Guten Abend,
bei deinem Source-Code ist mir diese Zeile ins Auge gesprungen:
const double PI = 3.1415926535897932384626433832795;Wenn ich Pi in einem Programm brauche, benutze ich meistens
M_PI;Gibt dir 3.14159 aus (sollte meistens reichen).
Nur nebenbei bemerkt : )
Und die C++ Bib. benutzen: <cmath>MfG
-
Klugscheiß: M_PI ist kein Standard-C++, sondern nur weit verbreitet. (Ich benutze es auch)
Wichtiger ist jedoch: Der Wert ist, wenn es existiert, natürlich schon so exakt wie ein double das hergibt, du hast dir bloß bei der Ausgabe nicht alle Stellen zeigen lassen.
-
SeppJ schrieb:
Klugscheiß: M_PI ist kein Standard-C++, sondern nur weit verbreitet. (Ich benutze es auch)
okay, das wusste ich nicht. Mir wurde das so gelehrt.
Wichtiger ist jedoch: Der Wert ist, wenn es existiert, natürlich schon so exakt wie ein double das hergibt, du hast dir bloß bei der Ausgabe nicht alle Stellen zeigen lassen.Jop, eindeutig Noob-Fehler. Danke für den Hinweis : )