Kennt sich jemand mit C aus...?

metalCORE

Enthusiast
Thread Starter
Mitglied seit
17.07.2004
Beiträge
4.087
Ort
tiefster Ostblock
Ich versuche gerade ein C-Programm zur Berechnung eines linearen Gleichungssystems zu korrigieren, leider will mein Rechner, bzw. MinGW und die Eingabeaufforderung noch nicht so richtig, dass ich es prüfen kann.

Daher die Frage, ob jemandem ein Fehler auffällt:

#include <stdio.h>
int main()
{
/* Vereinbarung */
int a, b, c, d, e, f;
double x,y;
a=4;
b=2;
c=1;
d=1;
e=2;
f=10;
/* Berechnung der Determinante */
det = (ad)-(bc);
if(det = 0){
printf("Berechnung nicht moeglich!\n";
getchar();
return -1;
}
/* Berechnung von x und y */
printf("Loesung : \n");
x = (e*d -f*b) /det;
printf("x = %lf\n",x);
y = (f*a -e*c)/det;
printf("y = %lf\n",y);
getchar();
return 0;
}
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
hab mich damit zwar noch nich beschäftigt, aber muss det nicht deklariert werden? und in der klammer ad muss da nicht ein mal zeichen zwischen?

Falls ich total daneben liege --> hab noch nix mit c programmiert ;)
 
jo reaver hat recht, du musst det noch deklarieren und die multiplikation musst du auch angeben.
ausserdem fehlt in der if bedingung noch ein =, da muss stehen if(det==0) etc etc.
x und y würd ich mit 0 initialisieren, nur um ärger zu vermeiden, der rest sollte soweit passen.
 
...ich bisher auch noch nicht weiter, eher Java (was ja "ähnlich" ist) und in Vorzeiten Pascal und QBasic.

Leider fehlt mir für C ein Handbuch, so tappe ich da noch etwas im dunkeln. Würde ich MinGW endlich hinbekommen, könnte ich zumindest nach Trial and Error vorgehen, das bietet ja die Möglichkeit Fehler anzuzeigen...

Noch besser wär sowas wie JCreator, das nutze ich für java, da hat man gleich ne Fehlerdiagnose, was die Sache doch erheblich vereinfach... :lol:


EDIT: hatte grad nochmal drübergeschaut:

#include <stdio.h>
int main()
{
/* Vereinbarung */
int a, b, c, d, e, f;
double x=0,y=0;
float det;
a=4;
b=2;
c=1;
d=1;
e=2;
f=10;
/* Berechnung der Determinante */
det = (ad)-(bc);
if(det == 0)
{
printf("Berechnung nicht moeglich!\n";
getchar();
return -1;
}
/* Berechnung von x und y */
printf("Loesung : \n");
x = (e*d -f*b) /det;
printf("x = %lf\n",x);
y = (f*a -e*c)/det;
printf("y = %lf\n",y);
getchar();
return 0;
}


@Giovanni: ...wie meinst das mit der Multiplikation? per Bibliothek oder per Definition im programmkopf? Dachte das müsste in der stlib.h drin sein, oder?

also: #include <stdlib.h> ...? :)
 
Zuletzt bearbeitet:
auf anhieb sag ich einfach mal es liegt an deinem: det = (ad)-(bc);
C geht davon aus, dass es eine variable "ad" bzw "bc" gibt... wenn du multiplizieren willst MUSST du das * mitschreiben
 
@metalCORE:

det = (ad)-(bc);

den teil mein ich, wenn so, dann

det = a*d - b*c;

die klammern kann man weglassen, C beherrscht "punkt vor strich" ;)
 
...habs nochmal korrigiert, sollte jetzt passen, oder?


#include <stdio.h>
#include <stdlib.h>
int main()
{
/* Vereinbarung */
int a, b, c, d, e, f;
double x=0,y=0;
float det;
a=4;
b=2;
c=1;
d=1;
e=2;
f=10;
/* Berechnung der Determinante */
det = a*d - b*c;
if(det == 0)
{
printf("Berechnung nicht moeglich!\n";
getchar();
return -1;
}
/* Berechnung von x und y */
printf("Loesung : \n");
x = e*d - f*b / det;
printf("x = %lf\n",x);
y = f*a - e*c / det;
printf("y = %lf\n",y);
getchar();
return 0;
}
 
jo sollte so stimmen.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh