Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » [Hilfe] Funktion auslagern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.01.2014, 12:59 Uhr
surge



Hallo,
ich möchte bei folgendem Programm die Funktion zur Summenberechnung auslagern (case 2):

C++:
#include "iostream"
using namespace std;

// Funktionsprototypen zur Summenberechnung
int fsumme(int Feld[],int su);

void main ()
{
    int opt,i, su, Feld[90],el;

    cout<<"Programm zum Arbeiten mit einer Zahlenfolge\n";
    el=0;
        do
        {
        cout<<"Wieviele Zahlen moechten Sie eingeben?\n";
        cin>>el;
        }while (el <0 || el>90);

            for (int i=0;i<el;i++)
            {
            cout<<"Bitte Elemente Nr. "<<i<<" eingeben: ";
            cin>>Feld[i];
            }
    do
    {

    cout<<"\nBitte waehlen Sie aus:\n";
    cout<<"1 - Zahlenfolge ausgeben\n2 - Summe aller Elemente der Folge berechnen und als letztes Element ausgeben\n";
    cout<<"3 - Eine neue Startzahl (kleiner gleich null) festlegen\n5 - Das Programm beenden\n";
    cin>>opt;

    switch (opt)
    {
    case 1:
        cout<<"Folgende Zahlen sind gespeichert:\n";  // Gespeicherte Zahlenfolge ausgeben ohne Summe aller Elemente
        for ( i=0;i<el;i++)
        {
            cout<<"Element Nr."<<i<<" : "<<Feld[i]<<endl;
        }
        break;
                
                case 2: // Summe berechnen
            /*        su=0;
                    for (i=0;i<el;i++)
                    {
                    su += Feld[i];
                    }
                            */

                    su=fsumme([i]); // Error: Es wurde ein "{" zur Einführung eines Lambda-Textes erwartet
                    Feld[i]=su; // Summe aller Zahlen berechnen und als letztes Feldelement ausgeben
                    el++;
                    
                    cout<<"Summe aller Zahlen im Feld: "<<Feld[i];
                    break;
                    
                case 3: //Neue Startzahl
                    
                    for (i=el;i>0;i--)
                    {
                        Feld[i]=Feld[i-1];
                    }
                    el++;

                    cout<<"Neue Startzahl?\n";
                    cin>>Feld[0];
                    break;
                case 4:
                                                    
                        cout<<"Neue Folge: \n"; // Neue Folge ausgeben
                        for (i=0;i<el+1;i++)
                        {
                        cout<<"Element Nr."<<i<<" : "<<Feld[i]<<endl;
                        }
                break;
                    
                    
                case 5:
                    break;
            default:
            cout<<"Ungueltige Option!\n";
                    break;
    }
                
    }
    while (opt != 5);

    int fsumme(int Feld[],int su, int el);
    {
    int su=0;
                    for (int i=0;i<el;i++)
                    {
                    su += Feld[i];
                    }
        return su; // Error: Rückgabewert stimmt nicht mit Funktionswert überein
    }
}



Die Fehlermeldungen habe ich als Kommentar eingefügt, weiß aber nicht so recht was ich machen soll
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.01.2014, 14:23 Uhr
surge



Die oben genannten Fehler konnte ich beheben.

C++:
#include "iostream"
using namespace std;

// Funktionsprototypen zur Summenberechnung
int fsumme(int);

void main ()
{
    int opt,i, su, Feld[90],el;

    cout<<"Programm zum Arbeiten mit einer Zahlenfolge\n";
    el=0;
        do
        {
        cout<<"Wieviele Zahlen moechten Sie eingeben?\n";
        cin>>el;
        }while (el <0 || el>90);

            for (int i=0;i<el;i++)
            {
            cout<<"Bitte Elemente Nr. "<<i<<" eingeben: ";
            cin>>Feld[i];
            }
    do
    {

    cout<<"\nBitte waehlen Sie aus:\n";
    cout<<"1 - Zahlenfolge ausgeben\n2 - Summe aller Elemente der Folge berechnen und als letztes Element ausgeben\n";
    cout<<"3 - Eine neue Startzahl (kleiner gleich null) festlegen\n5 - Das Programm beenden\n";
    cin>>opt;

    switch (opt)
    {
    case 1:
        cout<<"Folgende Zahlen sind gespeichert:\n";  // Gespeicherte Zahlenfolge ausgeben ohne Summe aller Elemente
        for ( i=0;i<el;i++)
        {
            cout<<"Element Nr."<<i<<" : "<<Feld[i]<<endl;
        }
        break;
                
                case 2: // Summe berechnen
            /*        su=0;
                    for (i=0;i<el;i++)
                    {
                    su += Feld[i];
                    }
                            */

                    su=fsumme(Feld[i]); // Error: Es wurde ein "{" zur Einführung eines Lambda-Textes erwartet
                    Feld[i]=su; // Summe aller Zahlen berechnen und als letztes Feldelement ausgeben
                    el++;
                    
                    cout<<"Summe aller Zahlen im Feld: "<<Feld[i];
                    break;
                    
                case 3: //Neue Startzahl
                    
                    for (i=el;i>0;i--)
                    {
                        Feld[i]=Feld[i-1];
                    }
                    el++;

                    cout<<"Neue Startzahl?\n";
                    cin>>Feld[0];
                    break;
                case 4:
                                                    
                        cout<<"Neue Folge: \n"; // Neue Folge ausgeben
                        for (i=0;i<el+1;i++)
                        {
                        cout<<"Element Nr."<<i<<" : "<<Feld[i]<<endl;
                        }
                break;
                    
                    
                case 5:
                    break;
            default:
            cout<<"Ungueltige Option!\n";
                    break;
    }
                
    }
    while (opt != 5);
}
    // Funktionsdeklaration
    int fsumme(int Feld[], int el,int y)
    {
    
                    for (int i=0;i<el;i++)
                    {
                    y += Feld[i];
                    }
        return y; // Error: Rückgabewert stimmt nicht mit Funktionswert überein
    }





Allerdings kommt jetzt folgende Fehlermeldung:

1>------ Erstellen gestartet: Projekt: ws1213, Konfiguration: Release Win32 ------
1> ws1213.cpp
1>ws1213.cpp(8): warning C4007: 'main': '__cdecl' muss angegeben werden
1>ws1213.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""int __stdcall fsumme(int)" (?fsumme@@YGHH@Z)".
1>Lng\ws1213 - Kopie\Release\ws1213.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

Habe bei Google mehrere Treffen bekommen, aber die helfen mir momentan nicht weiter.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.01.2014, 08:25 Uhr
ao

(Operator)


"Nicht aufgelöstes externes Symbol" - das heißt, du hast die Funktion summe zwar deklariert (d.h. einen Prototyp hingeschrieben), aber nicht definiert. Es gibt keinen Programmcode dazu.

Nimm mal dein Lieblings-C-Buch und lies das einführende Kapitel über Funktionen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: