Linker Fehler.könnt ihr mir helfen?
-
hey leute
ich habe ne problem in meinem folgenden programm.
kann mir jemand dabei helfen?schonmal danke für eure hilfe
#include <stdio.h> #include <math.h> #include <iostream.h> #include <stdlib.h> /******************************************************************************/ void eingabe(int, int*); //Prototypendeklaration void ggT(int,int*); void kgv(int, int*); int main() { int i; int zahl; char antwort=1; int *eingabefeld; int anzahl; int ausgabewunsch=0; /***Eingabe der Anzahl*********************************************************/ do { // Ende der Bildschirmausgabe printf("Von wievielen Werten soll der ggT bzw das kgV ermittelt werden: \n"); scanf("%i",&anzahl); //Eingabe anzahl if (anzahl <= 0) //Prüfen der Anzahl { printf("Der Wert muss >0 sein! Bitte geben Sie einen neuen Wert ein \n"); //neue Eingabe scanf("%i",&anzahl); } eingabe(anzahl, eingabefeld); //Aufruf Eingabe /***Auswahl der Funktionen*****************************************************/ do { printf("\n\nMoechten Sie den kgV(1), den ggT(2) oder beides(3) ausrechnen:"); //Ausgabe an den Benutzer scanf("%i",&ausgabewunsch); //Eingabe switch (ausgabewunsch) //Auswahl des Falls { case 1: kgv(anzahl, eingabefeld); //Aufruf : Kleinstes gemeinsames Vielfaches printf("\nDas kleinste gemeinsame Vielfache ist %i\n ",i); break; case 2: ggT(anzahl, eingabefeld); //Aufruf : Größter gemeinsamer Teiler printf("\nDer groesste gemeinsame Teiler ist %i\n",zahl); break; case 3: kgv(anzahl, eingabefeld); //Aufruf : Kleinstes gemeinsames Vielfaches printf("\nDas kleinste gemeinsame Vielfache ist %i\n ",i); ggT(anzahl, eingabefeld); //Aufruf : Größter gemeinsamer Teiler printf("\nDer groesste gemeinsame Teiler ist %i\n",zahl); break; } } while (ausgabewunsch!=1 && ausgabewunsch!=2 && ausgabewunsch!=3 ); //Prüfen /***Programm neu durchlaufen***************************************************/ printf("\Wollen Sie einen neue Berechnung anstellen? [0 Nein|1 Ja] \n"); fflush(stdin); cin >> antwort; //Eingabe des Users system("cls"); //Anzeige leeren } while (antwort == '1' ); //Bedingung der Do-While-Schleife return 0; } /***Main Ende******************************************************************/ /***Funktion der Werte*********************************************************/ void eingabe(int anzahl, int i) { int *eingabefeld; eingabefeld = ((int*) malloc (anzahl * sizeof(int))); //malloc = dynamisches array //größe wird durch die anzahl berechnet //aufruf mit int* for (i = 0; i < anzahl; i++) { printf("Bitte geben sie die %i. Zahl ein: \n",i+1); //Eingabe der Werte printf(" \n"); //Leerzeile scanf("%i",&eingabefeld[i]); //Einlesen der Werte if (eingabefeld[i] <= 0) //Prüfen der Zahl { printf("Der Wert muss >0 sein! Bitte geben Sie einen neuen Wert ein \n"); scanf("%i",&eingabefeld[i]); } fflush(stdin); } } /***Funktion ggT***************************************************************/ void ggT(int anzahl,int*eingabefeld) { int modulo=0; int counter=0; //Variablen deklariert int i=0; int zahl=0; for(i=1;i<(eingabefeld[0]+1);i++) { counter=0; modulo=0; for(int p=0;p<anzahl;p++) { //ggT mittels for-Schleife berechnet modulo=eingabefeld[p]%i; if(modulo>=1) { counter++; } } if (counter==0) { zahl=i; } } //printf("\nDer groesste gemeinsame Teiler ist %i\n",zahl); //Ausgabe des ggT } /***Funktion kgv***************************************************************/ void kgv(int anzahl, int*eingabefeld) { int modulo=0; int counter=0; //Variablen deklariert long int i=0; int zahl=0; int start= anzahl; for(i=eingabefeld[start-1]+1;i<100000000;i++) { counter=0; modulo=0; for(int p=0;p<( anzahl);p++) { modulo=i%eingabefeld[p]; //kgV mittels for-Schleife berechnet if(modulo>=1) { counter++; } } if(counter==0) { //printf("\nDas kleinste gemeinsame Vielfache ist %i\n ",i); //Ausgabe des kgV break; } } }/edit pumuckl: cpp-Tags. Nächsteal bitte selber machen!
-
Und jetzt sollen wir herausfinden, wo du da ein Problem hast, oder wie?
Erklär doch mal genau, was dein Problem ist und Grenze das ein wenig ein.
Und benutz das nächste mal bitte die cpp-Tags. So kann man das nicht lesen.
-
Lohminio schrieb:
void eingabe(int, int*); //Prototypendeklaration
Wenn man mal davon absieht, dass der Code insgesamt furchtbar ist: Die Funktion zu diesem Prototypen hast du nirgends definiert. Du hast eine Funktion namens eingabe definiert, aber die hat eine andere Signatur.
-
Saubere Leistung, pumuckl

-
Gut gemacht schrieb:
Saubere Leistung, pumuckl


@OP: bitte unbedingt mal den Thread "du brauhcst Hilfe?" und die anderen mit wichtig markierten Threads durchlesen und dann die Frage nochmal so stellen, dass man sie auch beantworten kann.
-
Außerdem ist reines C wie dieses hier wohl eher ein Fall für die Experten im C Forum. die können dann auch mit deinen C-typischen Konstrukten etwas anfangen.
-
SeppJ schrieb:
reines C wie dieses hier
Das hab ich auch erst gedacht. Es ist aber C mit einem klitzekleinen Fitzelchen uralt-C++: <iostream.h> und cin im globalen namespace *schauder*
-
pumuckl schrieb:
SeppJ schrieb:
reines C wie dieses hier
Das hab ich auch erst gedacht. Es ist aber C mit einem klitzekleinen Fitzelchen uralt-C++: <iostream.h> und cin im globalen namespace *schauder*
Hah, habe ich glatt übersehen. Klingt nach Copy/Paste. vielleicht ist das auch der Grund für den Linkerfehler. @Threadersteller: Benutzt du zufällig einen C Compiler?
-
hey
ich benutze den borland builder
das programm war auch lauffähig
ich hatte das erst nur mit den funktionen mit ggt und kgv
jetzt muss die eingabe allerdings in ne funktion und jetzt habe ich das problem mit dem linker fehler
-
MFK hat ja bereits gesagt, woran es liegt. Schau dir mal die Deklaration und Definition von eingabe an. Die sind verschieden und somit kann der Linker keine Definition finden für diese Funktion, welche der Compiler benutzen möchte.
-
Lohminio schrieb:
hey
ich benutze den borland builder
das programm war auch lauffähig
ich hatte das erst nur mit den funktionen mit ggt und kgv
jetzt muss die eingabe allerdings in ne funktion und jetzt habe ich das problem mit dem linker fehlerDu hast meinen Rat nicht befolgt oder dir das was in den oben angesprochenen Threads steht nicht zu Herzen genommen. Sonst hättest du uns wenigstens gesagt, wie die Fehlermeldung lautet. Also bitte, LIES DIR DIE MIT wichtig GEKENNZEICHNETEN THREADS AUFMERKSAM DURCH. Danke.
Im übrigen hat MFK schon die vermutliche Ursache des Problems genannt.