Einzelnen Beitrag anzeigen

Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#1

[C] Probleme mit Aufgabe und Variablen

  Alt 30. Sep 2010, 16:52
Hallo,

zuerst: KEINE ANGST! ich will hier keine lösung für meine aufgabe, die ich zu bearbeiten habe. ich hänge grade nur an einer stelle.

Ich habe folgende aufgabe (auch wenn ich das meiste sinnfrei finde, wie das gelöst ist):
Zitat:
Schreiben Sie ein Programm, welches 2 float-Zahlen a und b mit der Funktion einlesen() einliest, und dann mit der Funktion average () den Durschnitt, mit der Funktion quotient() den Quotienten, mit der funktion produkt() das Produkt, mit der funktion summe() die Summe und mit der Funktion differ() die Differenz berechnet. Alle Funktionen sollen in main() aufgerufen werden. Jede funktion steht in einer eigenen Datei. Der Dateiname bildet sich aus dem jeweiligen Funktionsnamen und der endung.c

Die Zahl a soll eine globaale Variable sein und in der Datei main.c definiert sein. Die zahl b soll über die Parameterliste übergeben werden. Die ergebnisse der arithmetischen Operationen sollen bei average(), quotient() und produkt() über die Parameterliste, bei summe() und differ() als Rückgabewert übergeben werden
Dazu bekamen wir diese main.c:
Code:
#include <stdio.h>
#include "einlesen.c"
#include "average.c"
#include "quotient.c"
#include "produkt.c"
#include "summe.c"
#include "differ.c"



extern void einlesen (float *, float *);
extern void average (float, float *);
extern void quotient (float, float *);
extern void produkt (float, float *);
extern float summe (float);
extern float differ (float);

float a;

int main (void)
{
   float b;
   float mittel, quot, prod, summ, diff;

   einlesen (&a, &b);
   average (b, &mittel);
   quotient (b, &quot);
   produkt (b, &prod);

   summ = summe (b);
   diff = differ (b);
   printf ("\n a = %6.2f, b = 6.2f",a,b);
   printf ("\n der Mittelwert von a und b ist %6.2f", mittel);
   printf ("\n das Produkt a*b ist %6.2f", prod);
   printf ("\n der Quotient a/b ist %6.2f", quot);
   printf ("\n die Summe a + b ist %6.2f", summ);
   printf ("\n die Differenz ist %6.2f", diff);
   return 0;
}
Die anderen Dateien sehen bei mir wie folgt aus:

einlesen.c:
Code:
#include <stdio.h>

void einlesen (float * first, float * second) {
   printf ("Bitte a eingeben: ");
   scanf ("%f", first);
   printf ("Bitte b eingeben: ");
   scanf ("%f", second);
}
average.c:
Code:
void average (float num, float * res) {
  *res = (a / num) / 2;
}
quotient.c:
Code:
void quotient (float num, float * res) {
  *res = num / a;
}
usw. eigentlich nichts späktakuläres (und total unsinnig alles in einzelne files zu packen, aber OK).

Nun habe ich das problem, das keine der externen dateien die variable "a" findet.
Der Compiler meldet:
Code:
user@bueckstueck02 ~/Desktop/Labor Info/blatt1/aufg1 $ gcc -o main main.c
In file included from main.c:3:
average.c: In Funktion »average«:
average.c:2: Fehler: »a« nicht deklariert (erste Benutzung in dieser Funktion)
average.c:2: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt
average.c:2: Fehler: für jede Funktion in der er auftritt.)
In file included from main.c:4:
quotient.c: In Funktion »quotient«:
quotient.c:2: Fehler: »a« nicht deklariert (erste Benutzung in dieser Funktion)
In file included from main.c:5:
produkt.c: In Funktion »produkt«:
produkt.c:2: Fehler: »a« nicht deklariert (erste Benutzung in dieser Funktion)
In file included from main.c:6:
summe.c: In Funktion »summe«:
summe.c:2: Fehler: »a« nicht deklariert (erste Benutzung in dieser Funktion)
In file included from main.c:7:
differ.c: In Funktion »differ«:
differ.c:2: Fehler: »a« nicht deklariert (erste Benutzung in dieser Funktion)
user@bueckstueck02 ~/Desktop/Labor Info/blatt1/aufg1 $
Woran liegt das? ich glaube nicht, das es an der main.c liegt, da die fertig schon da war und das labor in den jahren davor ja auch zu machen war.

Danke für eure hilfe!
  Mit Zitat antworten Zitat