C++ Fehler !! WICHTIG !!



  • ... und mal die funktion definieren, da fehlt der funktionskörper, er findet ihn nicht



  • das habe ich ja mom, hier ist das Programm:

    #include <stdio.h>
    #include <iomanip.h>
    #include <iostream.h>
    #include <math.h>
    #include <conio.h>
    #include <stdlib.h>
    
    int a, b;
    
    int einlage_gesell(void);
    int summe_einlagen(int);
    double zinsen_einlagen(int);
    int summe_zinsen(double);
    float gewinn_gesell(int, int, int);
    
    int main()
    {
    int summe_gewinn, ges_insg, ges_insg2,rest_summe;
    int summe_ein, summe_zins;
    double zins_einlagen[ges_insg];
    int einlage_ges[ges_insg];
    int rest_gesell[ges_insg], p, g, f;
    double gewinn_ges[ges_insg];
    
    cout<<"Gewinnverteilung Version 1.0"<<endl<<endl;
    cout<<"Bitte geben Sie den Gewinn ein (in Euro):     ";
    cin>>summe_gewinn;
    cout<<endl<<endl;
    cout<<"Bitte geben Sie an, wieviele Gesellschafter beteiligt waren:    ";
    cin>>ges_insg;
    cout<<endl<<endl;
    
    ges_insg2=ges_insg-1;
    
    ges_insg = a;
    ges_insg2 = b;
    
    //------ Ab hier beginnen die Funktionen ----------------------------
    
    einlage_ges[ges_insg] = einlage_gesell(); // Funktion einlage_gesell()
    
    summe_ein = summe_einlagen(einlage_ges[ges_insg]); // Funktion summe_einlagen()
    
    zins_einlagen[ges_insg] = zinsen_einlagen(einlage_ges[ges_insg]); // Funktion zinsen_einlagen()
    
    summe_zins = summe_zinsen(zins_einlagen[ges_insg]); // Funktion summe_zinsen()
    
    gewinn_ges[ges_insg] = gewinn_gesell(einlage_ges[ges_insg], summe_ein, summe_gewinn); // Funktion gewinn_gesell()
    
    //------ Ende der Funktionen -----------------------------------------
    
    rest_summe = summe_gewinn - summe_zins;
    
    for (p=0; p<=ges_insg2; p++)
    {
     rest_gesell[p] = rest_summe / ges_insg;
    }
    
    //-------- Hier beginnt die Ausgabe der Tabelle ----------------------
    
    cout<<"Gesellschafter";
    cout<<"\t Einlage";
    cout<<"\t\t Zinsen auf die";
    cout<<"\t\t\t Rest nach";
    cout<<"\t\t\t\t Summe der Gew- "<<endl;
    cout<<"              ";
    cout<<"\t        ";
    cout<<"\t\t Einlage       ";
    cout<<"\t\t\t Koepfen  ";
    cout<<"\t\t\t\t winnbeteiligung"<<endl;
    
    for (g=0; g<=ges_insg2; g++)
    {
     for (f=1; f<=ges_insg; f++)
     {
      cout<<f;
      cout<<"\t"<<einlage_ges[g];
      cout<<"\t\t"<<zins_einlagen[g];
      cout<<"\t\t\t"<<rest_gesell[g];
      cout<<"\t\t\t\t"<<gewinn_ges[g];
      cout<<endl;
     }
    
     cout<<endl;
    }
    
    cout<<"Summe";
    cout<<"\t"<<summe_ein;
    cout<<"\t\t"<<summe_zins;
    cout<<"\t\t\t"<<rest_summe;
    cout<<"\t\t\t\t"<<summe_gewinn;
    
    //---- Hier endet die Bildschirmausgabe -------------------------------
    
      getchar();
      return 0;
    }
    
    //--- Hier beginnen die Funktionen ----------------------------------
    
    int einlage_gesell(void)
    {
    int i,j;
    int einlage[a];
    
       for (i=0; i<=b; i++)
       {
          for (j=1; j<=a; j++)
          {
          cout<<"Bitte geben Sie die Einlage des Gesellschafters "<<j<<" ein:   ";
          cin>>einlage[i];
          }
    
        cout<<endl<<endl;
        }
    
     return einlage[a];
    }
    
    //-----------------------------------------------------------------------
    
    int summe_einlagen(int ein_ges[])
    {
     int w;
     int summe_einlagen;
    
      for (w=0; w<=b; w++)
      {
       summe_einlagen=summe_einlagen+ein_ges[w];
      }
    
     return summe_einlagen;
    }
    
    //------------------------------------------------------------------------
    
    double zinsen_einlagen(int zins_ein[])
    {
     int u;
     double zinsen_ein[a];
    
     for (u=0; u<=b; u++)
     {
      zinsen_ein[u]=zins_ein[u]*0.04;
     }
    
     return zinsen_ein[a];
    }
    
    //------------------------------------------------------------------------
    
    int summe_zinsen(int zinsen_ein[])
    {
     int v;
     int sum_zins;
    
      for (v=0; v<=b; v++)
      {
       sum_zins=sum_zins+zinsen_ein[v];
      }
    
     return sum_zins;
    }
    
    //------------------------------------------------------------------------
    
    float gewinn_gesell(int einl_ges[],int sum_ein, int sum_gew)
    {
     int y;
     float zinsen_gewinn[a];
     float gewinnb_ges[a];
    
     for (y=0; y<=b; y++)
     {
     zinsen_gewinn[y] = einl_ges[y] / sum_ein;
     gewinnb_ges[y] = sum_gew * zinsen_gewinn[y];
     }
    
     return gewinnb_ges[a];
    }
    

    So und da gibt erm ir wie gesagt:

    C:\DOKUME1\Chris\LOKALE1\Temp\ccSUcaaa.o(.text+0x433):gewinn~1.cpp: undefined reference to `gewinn_gesell(int, int, int)'

    aus als Fehler



  • Die Parameter bei gewinn_gesell sind bei der Deklaration unterschiedlich als bei der Implementation (siehe 1 Param).
    Das sind also 2 verschiedene Funktionen.

    Wenn du die 1te aufrust wird sie nicht gefunden, weil sie nicht implementiert ist.
    Wenn du die 2te aufrust wird sie nicht gefunden, weil sie in der Zeile des Aufrufs nocht nicht deklariert ist.



  • Ne sorry, dass versteh ich jetzt net so ganz,kannste vielleicht den Fehler berichtigen? Oder mir auch an meine e-mail addy schicken? chaz-man@web.de !

    Weil das für mich sehr wichtig ist !



  • oder auch hier reinschreiben,weil ich das unbedingt morgen brauche!!!

    Dieses Programm wird bei mir nämlich benotet !



  • BITTE !!!!!!!!!!!!!!!!!!!!!!!!!!!



  • 1. Funktionsdeklaration:

    float gewinn_gesell(int, int, int);
    

    2. Funktionsdefinition:

    float gewinn_gesell(int einl_ges[],int sum_ein, int sum_gew)
    {
    *snip*
    }
    

    Bereits einem durchnittlichen VB-Programmierer fällt auf, dass sich Funktionsdeklaration und Definition *unterscheiden*. Das ist aber wahrscheinlich nicht gewünscht. Im Moment *deklarierst* du eine Funktion gewinn_gesell die drei ints erwartet. Du *definierst* aber eine Funktion gewinn_gesell die ein int-Array sowie zwei ints erwartet. Im Programm aufrufen tust du dann wiederum eine Funktion gewinn_gesell mit drei ints. Für die hast du nun aber ja keine Definition.
    Der Compiler ist mit dieser Situation zufrieden, da er ja die Deklaration hat. Auf der Suche nach der *Definition* der Funktion stellt der *Linker* nun aber fest, dass es keine solche gibt. Und darüber setzt er dich in Kentniss.

    Was du also tun musst ist *Definition* für die Funktionen bereitstellen, die du in deinem Programm aufrufst.

    PS: Weder Rumschreien noch viele Ausrufungszeichen werden dir übermäßig viel Hilfe einbringen. Eher im Gegenteil.



  • Kannst du mir das mal berichtigen ?

    Bitte,ich sitze schon seit gestern daran !

    BITTE !



  • Guck dir mal oben:

    float gewinn_gesell(int, int, int);
    

    und unten:

    float gewinn_gesell(int einl_ges[],int sum_ein, int sum_gew)
    {
     int y;
     ...
    

    an.
    Siehst du den "kleinen" Unterschied ?



  • Oha,
    ich sehe gerade, dass das Programm *deutlich* größere Probleme als nur so ne läppsche fehlende Funktionsdefinition hat.

    Ich glaube du solltest noch mal sehr intensiv deine Aufzeichnungen durchgehen. Besonders das Kapitel über Arrays.


Anmelden zum Antworten