Problem mit Unterfunktion
-
Hallo zusammen, ich habe habe letzte Woche zum ersten mal die Programmiersprache C über Code Blocks kennengelernt. Zusammen mit einem Tutor bin ich einigermaßen vorangeschritten. Nun sagte er mir, ich solle das Programm zu Hause fertigstellen, jedoch fehlt mir ohne Ihn das Wissen. Fände es toll, wenn Ihr mir helfen könntet. Also das Ziel des Praktikums war es ein Programm mit Hilfe der Programmierumgebung C zu entwickeln, welches berechnet wie groß die Masse der Luft in einem Stahlkessel bei einem Enddruck von 1,5 MPa ist (nach Befüllen durch geöffnetes Ventil), bei einer Anfangstemperatur von 20°C (Endtemperatur 35°C). Ebenfalls sollte dieses Programm den Wert der Wärmeübertragung bei diesem thermodynamischen Prozess ausgeben.
Letzendlich brauche ich nur Hilfe hinsichtlich des Progammierens, also ich denke es fehlt nicht viel.
Vielen Dank für jede Mühe.#include <stdio.h>
#include <stdlib.h>float hauptsatz(float q,float b, float c, float g, float i, float f, float d, float a, float e)
{
q=b*c*g-i*c*f-(b-i)*d*f+a*e*(g-f);
return q;
}int main()
{
float i = -1;
float b = -1;
float f = -1;
float g = -1;
float a = -1;
float c = -1;
float d = -1;
float e = -1;
float q = -1;
float x = -1;
float y = -1;printf("Gib m1 in kg ein: \n");
scanf("%f", &i);printf("Gib m2 in kg ein: \n");
scanf("%f", &b);printf("Gib die T1 in K ein: \n");
scanf("%f", &f);printf("Gib die T2 in K ein: \n");
scanf("%f", &g);printf("Gib mSt ein: \n");
scanf("%f", &a);printf("Gib CvL ein: \n");
scanf("%f", &c);printf("Gib CpL in kJ/kgK ein: \n");
scanf("%f", &d);printf("Gib CpSt in kJ/kgK ein: \n");
scanf("%f", &e);x=hauptsatz (q,b,c,g,i,f,d,a,e) ;
y=i-b;printf("Das Ergebnis lautet: %f", q);
return 0;
}
-
Und wo ist das Problem?
Was läuft nicht?Aber noch etwas anderes.
Nutze für Code die Code Tags. Code markieren und den C-Button unter den Smilies anklicken. Dann wirds auch farbig und bunt.WArum diese komischen Variablennamen. Warum nennst du die nicht gleich m1, m2, T1 ....
Dann kann man auch bei der Formel durchsteigen.Und vergiss float, nimm double.
Die einzigen Änderungen sind da z.Zt. bei scanf. Da musst du ein %lf nehmen.
-
Also wie gesagt, ich kenne mich echt kaum mit dem Programieren aus, leider hatte ich ein Krankheitssemester und konnte für Informatik nichts lernen. Der Tipp mit den Variablen ist sehr nützlich, also wo genau der Fehler ist weiß ich auch nicht, die Zeit war abgelaufen und er sagte mir, ich soll es zu Hause zu Ende bringen. In der Leiste unten wird immer eine Fehlermeldung angezeigt. Wenn ich dann mal weiterkomme kommt eine neue Meldung.
-
Meinst du nicht, dass diese Fehlermeldung einen Grund hat?
Und Compiler kennen viele Fehler, deswegen teilen sie auch mit welchen sie meinen.
Aus der Meldung kann man auf die Ursache schließen.Darum ist die Angabe "Da ist eine Fehlermeldung" genauso geeignet wie "Das geht nicht": Gar nicht. Damit kann man überhaupt nichts anfangen.
Wenn du weitere Hilfe erwartest solltest du zumindest mal die Fehlermeldung hier wörtlich angeben.
Und wenn du dann noch den Code in Code-Tags packst (du als registriertes Mitglied kannst das sogar nachträglich editieren) passen dann hoffentlich auch die Zeilennummer zu der Fehlermeldung.
Das Ergebnis ist auch nicht q sondern x.
-
Wie schon geschrieben, nimm die Abkürzungen der physikalischen Groessen statt a, b, c alphabetisch willkürlich zugeordnet.
Hier noch ein paar Fragezeichen im Quelltext:
x=hauptsatz (q,b,c,g,i,f,d,a,e) ; // Dirk hat es schon beschrieben y=i-b; // Schön das du y berechnet hast? printf("Das Ergebnis lautet: %f", q); // "Die Masse beträgt: %f" ? return 0; }
Statt einfach Ergebnis gibt es da sicher aussagekräftigere Texte, die das Ergebnis genauer beschreiben. Das geht auch besser als meine Alternative.
MfG f.-th.