Division in C

theflasher

Grünschnabel
Hallo, ich habe erst vor kurzem mit C Programmierung angefangen.

Gestern wollte ich ein kleines Programm für die Berechnung der Lösungen einer pq Formel schreiben.
Ich bekomme zwar die Lösungen hin, aber die Ergebnisse sind falsch.
Erst mal der Code


#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main (){


int b;
int c;
int x;
float x1; //Lösung1
float x11; // Testvariable
float x2; //Lösung2
int y;
char janein;

do {
system("cls");
printf("bitte geben Sie eine Zahl fuer B ein\n");
scanf("%d",&b);
fflush(stdin);
printf("bitte geben Sie eine Zahl fuer C ein\n");
scanf("%d",&c);
fflush(stdin);

printf("Die Gleichung lautet x^2+%dx+%d\n",b,c);


x11= b/2; // Hier komme ich nicht weiter, b = 3 durch 2 ergibt immer 1
printf("%f\n", x11); // Ausgabe der Testzahl

x1 = -(b/2) + sqrt(((b*b)/4)-c); // pq Formel
x2 = -(b/2) - sqrt(((b*b)/4)-c);

printf("Lösung 1 = %f\n", x1);
printf("Lösung 2 = %f\n", x2);

printf (" Wollen Sie nochmal eingeben (y/n)?");
scanf("%c",&janein);

}while(janein == 'y');

getchar();



return 0;
}



Ok das ganze sollte leicht zu verstehen sein. Meine Frage ist: Wie kann ich es hinbekommen, dass wenn ich eine Variable b = 3 durch 2 teile auch wirklich 1,5 bekomme
Bei mir wird immer 1.00000 angezeigt und deswegen sind die Ergebnisse auch falsch.

Ich bin sicher, dass der Fehler recht einfach sein muss, aber ich kopmme beim besten Willen nicht drauf :)

Danke im Vorraus für eure Hilfe

Gruss theflasher
 
hi theflasher
du musst bei:
x11= b/2; // Hier komme ich nicht weiter, b = 3 durch 2 ergibt immer 1

anstatt b/2 b/2.0 machen, ansonsten hast du eine integerdivision. und integerdivisionen liefern nur ganzahlige ergebnisse.

lg csaf3254
 
Mal ganz kurz dein b ist eine Ganzzahl(int) und die 2 ist eine Ganzzahl...
das ist also korrekt.

Möchtest du 1.5 haben muss mindestens ein Operand ein float bzw. double sein.
Heißt entweder casten oder b auch float stellen.

mfg
 
Hi, hab das gerade mit 2.0 ausprobiert und funktioniert super ;)

also entweder die 2 als 2.0 schreiben oder
eben eine variable definieren z.B float c = 2; und dann b/c

Danke euch

Online-Skater was du gemeint hast, habe ich jetzt auch verstanden, hoffe das mir dieser Schnitzer in Zukunft nicht passiert ^^

Gruss theflasher
 
Zurück