C Rechnen
lima-city → Forum → Programmiersprachen → C/C++ und D
ausgeben
bekommen
bit
code
differenz
division
double
einlesen
empfehlen
ergebnis
fehler
konvertieren
milliarde
operator
produkt
rest
tip
tun
url
zahl
-
Wie kann ich 2 ganze Zahlen einlesen und deren Summe, Produkt, Differenz und Quotioenten ausgeben. Bei mir gibt das ergebnis immer Fehler
Mein Code:
#include <stdio.h> int main (void) { int a; int b; int c; printf("Zahl 1:"); scanf("%d", &a); printf("\nZahl 2:"); scanf("%d", &b); c = a + b; printf("\nSumme: %d",c); c = a % b; printf("\nSumme: %d",c); c = a - b; printf("\nSumme: %d",c); c = a ^ b; printf("\nSumme: %d",c); return 0; }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das liegt daran, dass du den Datentyp nicht beachtest. ^^
Zwei Ganzzahlen die Dividiert werden ergeben unter Umständen eine Fließkommazahl.
Also muss c ein Fließkommazahl sein und auch als solche ausgegeben werden.
Inwieweit und ob man überhaupt Konvertieren muss weiß ich nicht,
ich programmiere kein C/C++.
Aber mal ohne viel darüber zu wissen müsste es reichen,
wenn du c als float deklarierst.
Und an stelle deines Produkts nutzt du den Modulo-Operator " % ",
anstatt des Multiplikations-Operanten " * ", also einen Operator,
der dir den Rest einer Division zurückliefert.
Und das Letzte ist ein Bit-Operator, um genau zu sein das XOR,
also das Alternative-Oder, anstatt des Divisions-Operanten " / ".
c = a ^ b;
Beitrag zuletzt geändert: 13.3.2014 15:26:03 von clarity -
wie clarity schon geschrieben hat, hat es etwas mit dem Datentyp zu tun. Das Ändern auf float allein reicht allerdings hier nicht...
Man muss dann auch bei scanf das %d zu %f ändern, selbiges auch bei printf.
#include <stdio.h> int main (void) { float a; float b; float c; printf("Zahl 1:"); scanf("%f", &a); printf("\nZahl 2:"); scanf("%f", &b); c = a + b; printf("\nSumme: %f",c); c = a - b; printf("\nDifferenz: %f",c); c = a * b; printf("\nProdukt: %f",c); c = a / b; printf("\nDivision: %f",c); return 0; }
Wenn du dann die Operatoren nicht wie oben beschrieben richtigstellst, wirst du mehrere Compile-Fehler bekommen weil % und ^ Ganzzahldatentypen brauchen.
-
#include <stdio.h> int main (void) { double a; double b; double c; printf("Zahl 1:"); scanf("%lf", &a); printf("\nZahl 2:"); scanf("%lf", &b); c = a + b; printf("\nSumme: %lf",c); c = a - b; printf("\nDifferenz: %lf",c); c = a * b; printf("\nProdukt: %lf",c); c = a / b; printf("\nDivision: %lf",c); return 0; }
double ist viel üblicher, deshalb würde ich das empfehlen.
An den OP: Einrücken macht es übersichtlicher! Jedes mal nach einem { einrücken
zb:
if(i==1){ i=2; }
-
tips schrieb:
double ist nicht nur üblicher, es gibt dir auch eine höhere Präzision (und größeren Zahlenbereich). Führe das z. B. mal aus:
double ist viel üblicher, deshalb würde ich das empfehlen.
Wie man an der if-Abfrage sieht, ist für float eine Milliarde plus Eins genau eine Milliarde!#include <stdio.h> int main(void) { float a = 1000000000.0; float b = 1.0; double x = a; double y = b; if (a == a + b){ printf("\nMit float gilt:\n%1.1f + %1.1f = %1.1f\n", a, b, a + b); } printf("\ndouble ist besser:\n%1.1f + %1.1f = %1.1f\n", x, y, x + y); return 0; }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage