PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C Probleme mit meheren quelltext dateien



Primex
17-10-2005, 20:01
Hi.

Ich raste gleich aus. Arbeite gerade an einer kleinen Übungsaufgabe.

Mein Problem ist das ich den Fehler nicht finde. Sitze seit 1 Stunde vor dem kleinen code.



/*main.c*/
#include "durchmesser.h"
#include <stdio.h>


int main (int argc, const char * argv[]) {

durchmesser();

return 0;
}



/*durchmesser.c*/
#include "durchmesser.h"
#include "oberflaesche.h"
#include "volumen.h"
#include <stdio.h>



void durchmesser(void)
{

float zahl1;
printf("Geben Sie bitte den Durchmesser der Kugel in mm an: \n");
scanf("%f",&zahl1);
printf("Das Volumen der Kugel beträgt: %f Kubikmillimeter \n",volumen(zahl1));
printf("Die Oberfläsche der Kugel beträgt: %f Quadratmillimeter \n",ober(zahl1));


}


/*durchmesser.h*/
void durchmesser();


/*volumen.c*/
#include "volumen.h"
#include <stdio.h>

float volumen(float durch)
{
float zahl2 = (PI*durch*durch*durch)/6;
return zahl2;
}


/*volumen.h*/
#define PI 3.141592654
float volumen(float durch);



/*oberflaesche.h*/
#include "oberflaesche.h"
#include "volumen.h"
#include <stdio.h>

float ober(float durch)
{
float zahl2 = durch * durch * PI;
return zahl2;
}



/*oberflaesche.h*/
float ober(float);

Der fehler ist das er mir die Oberfläsche nicht ausgibt. Bekomme immer 0 zurück. Sobald ich aber die Funktion ober() vor der eigendlichen ausgabe einmal aufrufe zeigt er mir bei der Ausgabe den richtigen wert.
Hab das Programm vorher in einer Datei geschrieben und jetzt um den Umgang mit mehreren c Files zu lernen in mehrere Dateien aufgeteilt.

peschmae
18-10-2005, 09:09
Ich konnte keinen Fehler entdecken. Mal abgesehen davon dass es wirklich etwas gar viele Dateien für etwas gar wenig Funktionen sind (aber das ist ja scheinbar der Zweck der Sache ;))

Bei mir funktionierts auch:


peschmae@sid:/tmp/o$ ./o
Geben Sie bitte den Durchmesser der Kugel in mm an:
123
Das Volumen der Kugel beträgt: 974347.687500 Kubikmillimeter
Die Oberfläsche der Kugel beträgt: 47529.156250 Quadratmillimeter


statt


float ober(float durch)
{
float zahl2 = durch * durch * PI;
return zahl2;
}

tuts auch ein


float ober(float durch)
{
return durch * durch * PI;
}

aber das hat mit dem konkreten Problem nichts zu tun (und PI ist auch in "math.h" definiert - heisst dann M_PI). Und nach dem scanf solltest du noch etwas rumchecken (ob das ding überhaupt erfolgreich eingelesen wurde)

MfG Peschmä

Primex
18-10-2005, 10:46
Misst. Also das Volumen gibt er mir aus. Nur danach nicht mehr die oberfläsche. Versuche es jetzt auch mal von Hand zu übersetzen. Habe es im xcode übersetzt.

Primex
18-10-2005, 14:48
Also bin jetzt so weit das ich sagen kann das es an XCode liegt. Wenn ich den ganzen Quatsch mit gcc von Hand übersetzte dann funktioniert das ganze. Werd mich wohl in XCode rum suchen müssen.

Joghurt
18-10-2005, 20:47
Werd mich wohl in XCode rum suchen müssen.Was meinst du damit? BTW: Es heißt Oberfläche

Primex
18-10-2005, 21:14
BTW: Es heißt Oberfläche
Ja das ist mir auch aufgefallen. Hab den Code schnell geschrieben.

Was ich damit meine?
Wenn ich den Code von Hand mit dem gcc übersetzte funktioniert es wie es sein soll. Nur über XCode läuft es nicht.
werde es mal wieder versuchen und ein neues Projekt anlegen.