AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C++ [C] Probleme mit Aufgabe und Variablen
Thema durchsuchen
Ansicht
Themen-Optionen

[C] Probleme mit Aufgabe und Variablen

Ein Thema von Hybrid666 · begonnen am 30. Sep 2010 · letzter Beitrag vom 30. Sep 2010
Antwort Antwort
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, 17: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
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: [C] Probleme mit Aufgabe und Variablen

  Alt 30. Sep 2010, 17:57
Hallo,

musst du nicht auch extern float a in den anderen Dateien machen ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Hybrid666

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

AW: [C] Probleme mit Aufgabe und Variablen

  Alt 30. Sep 2010, 17:59
hab ich auch grade gemerkt danke.

allerdings bleibt mir dann nur das hier:
Code:
user@bueckstueck02 ~/Desktop/Labor Info/blatt1/aufg1 $ gcc -o main main.c
/tmp/cc0775xc.o: In function `average':
main.c:(.text+0x79): undefined reference to `a'
/tmp/cc0775xc.o: In function `quotient':
main.c:(.text+0xa9): undefined reference to `a'
/tmp/cc0775xc.o: In function `produkt':
main.c:(.text+0xd1): undefined reference to `a'
/tmp/cc0775xc.o: In function `summe':
main.c:(.text+0xf1): undefined reference to `a'
/tmp/cc0775xc.o: In function `differ':
main.c:(.text+0x109): undefined reference to `a'
/tmp/cc0775xc.o:main.c:(.text+0x124): more undefined references to `a' follow
collect2: ld gab 1 als Ende-Status zurück
Ich weiß langsam nimmer weiter ich weiß warum ich sonst nie mit globalen sachen arbeite.

EDIT: Fehler gefunden. war ein kleiner fehler in der main.c.

DANKE!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: [C] Probleme mit Aufgabe und Variablen

  Alt 30. Sep 2010, 18:02
Hallo,

du must dem gcc alle c files angeben

gcc 1.c 2.c 3.c -o explorer.exe



siehe auch hier http://www.network-theory.co.uk/docs...cintro_11.html


Heiko
Heiko
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

AW: [C] Probleme mit Aufgabe und Variablen

  Alt 30. Sep 2010, 18:11
Wenn ich das sehe, dann bekomme ich das kalte Grausen
Code:
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);
und zwar deshalb:
1.) keine Parameternamen - somit sieht man nicht was übergeben werden soll
2.) kein Header-File
Man könnte z.B. in main.c etwas anderes deklarieren als dann in average.c geschrieben wird.
Der Linker packt den Objektcode brav zu einer EXE zusammen. (nur wenn er kein Namemangling benützt)
Lässt man das Programm laufen, stürzt es ohne hilfreiche Meldung einfach ab.

Man bin ich froh, dass ich kein C programmieren muss, sondern Delphi hab.
Andreas
  Mit Zitat antworten Zitat
Hybrid666

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

AW: [C] Probleme mit Aufgabe und Variablen

  Alt 30. Sep 2010, 18:14
Wenn ich das sehe, dann bekomme ich das kalte Grausen
Code:
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);
und zwar deshalb:
1.) keine Parameternamen - somit sieht man nicht was übergeben werden soll
2.) kein Header-File
Man könnte z.B. in main.c etwas anderes deklarieren als dann in average.c geschrieben wird.
Der Linker packt den Objektcode brav zu einer EXE zusammen. (nur wenn er kein Namemangling benützt)
Lässt man das Programm laufen, stürzt es ohne hilfreiche Meldung einfach ab.

Man bin ich froh, dass ich kein C programmieren muss, sondern Delphi hab.
Mir kommt da auch das grauen, das kannst mir glauben. aber siehe aufgabe, das muss so gemacht werden und die teile von der main.c sind vorgegeben. ich hätte garnicht erst für einzeiler funktionen neue dateien angelegt (und wenn, dann in ne .c mit ner .h datei...). Aber ich kanns mir nicht aussuchen.

und ich code auch lieber in delphi aber ich bin schon froh das wir kein java machen *gg* auch wenns anfangs wie C ist...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: [C] Probleme mit Aufgabe und Variablen

  Alt 30. Sep 2010, 20:22
Hallo,

so, nu Ruhe

Klappt es denn jetzt ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz