C Programm Fehler brauche Fehler -.-

T

TerrorTeddy

Gast
Hallo,
Ich musste ein Programm zur Berechnung der Formel ax² + bx + c erzeugen. Nachdem ich dies getan hatte, sollte ich eine Ausgabe erzeugen, die Anzeigt ob die Zahl korrekt ist oder nicht (z.B.: Buchstabe). Nachdem ich diese in das Programm eingepflegt hatte, lief die Berechnung der Formeln nicht mehr. Ich vermute das ich eine Klammer falsch gesetzt habe, aber ich finde sie einfach nicht.





Hier erst mal der Quelltext :

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

int main ()
{

double a ;
double b ;
double c ;
double check1;
double check2;
double check3;

printf("Loesen einer quadratischen Gleichung vom Typ ax^2 + bx + c = 0\n\n");


printf("Bitte geben Sie die Koeffizienten a,b,c ein:\n");

check1=0;
check2=0;
check3=0;


printf(" a = ");
check1 = scanf("%lf", &a);
if(a=check1)
{
printf("Richtige Zahl\n");
}
else
{
printf("Falsche Zahl");
}

printf(" b = ");
check2 = scanf("%lf",&b);
if(b=check2)
{
printf("Richtige Zahl\n");
}
else
{
printf("Falsche Zahl") ;
}
printf(" c = ");
check3 = scanf("%lf", &c);
if(c=check3)
{
printf("Richtige Zahl/n") ;
}
else
{
printf("Falsche Zahl") ;
}


if(a!=0)
{
double p;
double q;
double D;
double x1;
double x2;
p = b/(2*a);
q = c/a;
D = p*p-q;
if(D<0)
{
printf("\nEs exisitiert leider keine reelle Loesung.\n\n");
}
else
{
if(D!=0)
{
x1 = -p+sqrt(D);
x2 = -p-sqrt(D);
printf("\nDie Loesung der quadratischen Gleichung lautet:\n");
printf("x1 = %lf\n",x1);
printf("x2 = %lf\n\n",x2);
}
if(D==0)
{
printf("\nEs existiert genau eine reelle Loesung:\n");
x1 = -p;
printf("x1 = %f\n\n",x1);
}
}
}

if(a==0)
{
double x;
printf("\nEs wurde eine lineare Gleichung vom Typ bx + c = 0 erkannt.\n",b,c);
if(b!=0)
{
x = -(c/b);
printf("Die Loesung dieser Gleichung lautet:\n");
printf(" x = %lf\n\n",x);
}
if(b==0)
{
if(c==0)
{
printf("Die Loesung lautet 0 = 0.\n\n");
}
else
{
printf("Leider ist diese nicht loesbar, da b=0 und c von 0 verschieden ist.\n\n");
}
}
}

return 0;
}
 
> if(a=check1)

Das soll doch ein VERGLEICH werden und keine ZUWEISUNG, oder ;)
 
Mein Prof meinte das muss so :D (ich saß da sehr lange dran), aber ja es soll ein Vergleich sein. Sprich == ?
 
Könnte eventuell daran liegen, daß du mit

if(a=check1),
if(b=check2),
if(c=check3)

jeweils den Zahlen mit denen du dann später rechnen willst, das Ergebnis der Überprüfung zuweist.

z.B.: if (a == check1) wäre in C eher die korrekte Syntax für was Du tun willst.


Andere Frage:
Hast Du das Programm mal einfach gedebuggt ?
 
Ja habe ich, aber die Berechnung läuft ja eben einfach nicht mehr ab.

Durch das Einsetzen von == zeigt er nur noch x1 = 0,000 an... egal welche Zahlen man ihm angibt -.-


( Die Abfrage zu dem d kommt erst später in den Quelltext, denn ich muss später noch ne ax³ + bx² Programmieren ) ..
 
Zuletzt bearbeitet:
Evtl. Zuweisungsproblem bei deinen Rechnungen?
double test = 1/0.5
...ergibt WAS?

Geh das Programm doch mal Schritt für Schritt mit dem Debugger durch, oder printe nach jeder Sektion alle Variablen aus, wenn du das einfacher findest. So kannst du den Fehler eingrenzen.

Nachtrag:
Ups: Ich meinte eigentlich:
double test = 1/2
Das ergibt für test nämlich nicht(!) 0.5
 
Zuletzt bearbeitet:
Hab den Fehler gefunden -.- ich Dummkopf -.- anstatt das == in die if Anweisung zu packen, hab ich es bei check1 = scanf... gepackt..


Aber dann noch einmal ne andere Frage, gibt es eine elegantere Lösung, ein Programm abbrechen zulassen, wenn eine "falsche" Zahl eingegeben wurde ?

In meinem Fall sagt das Programm ja nur "falsche Zahl" und geht zum Ende des Programmes.
Ergänzung ()

Okay und noch nen Fehler -.- Auf mal sind die Zahlen 2 falsch etc... woran liegt das ?

Warum zeigt er denn bei der Angabe einer 1 einen Fehler an (Falsche zahl ?? ) ..
 
Zuletzt bearbeitet:
ein solch simples programm solltest schon selbst debuggt kriegen.

schau dir einfach an, was die eingabe ist und wie der programmablauf sein sollte, also auch welche variablen wann welche werte haben sollten. gib sie dann einfach an mehreren stellen aus und schaue, ab wann das, was passiert, sich von dem, was passieren sollte, unterscheidet.

wenn du dann die stelle gefunden hast und dir nicht erklären kannst, was da genau passiert, kannst du danach hier spezifisch fragen.

aber bitte kein "debuggt mir das mal".
 
Übrigens ist die"
Code:
" Funktion des Antworteditors sehr hilfreich:

[CODE]
String test = "This is a pretty awesome feature :)";
printf(test);

Macht die Dinge um einiges übersichtlicher ;)
 
Zurück
Oben