Problem mit Array


  • Mod

    Davidlocke13 schrieb:

    Das habe ich so in der Berufsschule gelernt, so mit der Begründung wenn es ganz am Anfang steht kann man es auch nirgends vergessen !

    Ahh, diese Programme kenne ich. Das sind die, wo am Anfang einer Funktion 15 Variablen mit zweibuchstabigem Bezeichner stehen, von denen gerade einmal 5 tatsächlich benutzt werden.



  • Davidlocke13 schrieb:

    #include <iostream>
    #include <string>
    using namespace std;
    int main()   
    { 
     int Teilnehmer;
     int *Startnummer = new int [Teilnehmer];
     string *Namen = new string [Teilnehmer];
     cout << "Wie viele Laeufer haben teilgenommen: ";
     cin  >> Teilnehmer;
     for (int i=0; i < Teilnehmer; i++)
     {
      cout << "\nStartnummer: ";
      cin  >> Startnummer[i];
      cout << "Name: ";
      cin  >> Namen[i];
     }
     cout << "Teilnehmerliste:\n\n";
     cout << "Startnummer:\tName:\n";
     for (int i=0; i < Teilnehmer; i++)
     {
      cout << Startnummer[i] << "\t\t";
      cout << Namen[i] << "\n";
     }
     delete[] Namen; 
     delete[] Startnummer; 
     getchar();
     return 0; 
    }
    

    So jetzt stürzt es aber bei der Eingabe ab!

    joa klar, dann sag mir mal wie gross "Teilnehmer" ist zu dem zeitpunkt, an dem du den speicher reservierst



  • Ah ich habe meine Fehler bemerkt!

    Ich darf meine Arrays ja erst deklarieren wenn Teilnehmer einen Wert bekommen hat. 😉

    #include <iostream>
    #include <string>
    using namespace std;
    int main()   
    { 
     int Teilnehmer;
     cout << "Wie viele Laeufer haben teilgenommen: ";
     cin  >> Teilnehmer;
     int *Startnummer = new int [Teilnehmer];
     string *Namen = new string [Teilnehmer];
     for (int i=0; i < Teilnehmer; i++)
     {
      cout << "\nStartnummer: ";
      cin  >> Startnummer[i];
      cout << "Name: ";
      cin  >> Namen[i];
     }
     cout << "Teilnehmerliste:\n\n";
     cout << "Startnummer:\tName:\n";
     for (int i=0; i < Teilnehmer; i++)
     {
      cout << Startnummer[i] << "\t\t";
      cout << Namen[i] << "\n";
     }
     delete[] Namen; 
     delete[] Startnummer; 
     getchar();
     return 0; 
    }
    


  • Davidlocke13 schrieb:

    ...

    Gut, und jetzt versuchst du das nochmal mit den Funktionen.



  • #include <iostream>
    #include <string>
    using namespace std;
    
    int eigabe(int Teilnehmer, int Startnummer[], string Namen[])
    {
     for (int i=0; i < Teilnehmer; i++)
     {
    {
      cout << "\nStartnummer: ";
      cin  >> Startnummer[i];
      cout << "Name: ";
      cin  >> Namen[i];
     }
     }
    }
    
    int ausgabe(int Teilnehmer, int Startnummer[], string Namen[])
    {
    cout << "Teilnehmerliste:\n\n";
     cout << "Startnummer:\tName:\n";
     for (int i=0; i < Teilnehmer; i++)
     {
      cout << Startnummer[i] << "\t\t";
      cout << Namen[i] << "\n";
     }
    }
    
    int main()
    {
     int Teilnehmer;
     cout << "Wie viele Laeufer haben teilgenommen: ";
     cin  >> Teilnehmer;
     int *Startnummer = new int [Teilnehmer];
     string *Namen = new string [Teilnehmer];
     int *gZeit = new int [Teilnehmer];
     eigabe(Teilnehmer, Startnummer, Namen);
     ausgabe(Teilnehmer, Startnummer, Namen);
    
     getchar();
     return 0;
    }
    

    So ...



  • Davidlocke13 schrieb:

    struct hatte ich auch noch nicht.

    .. aber new 🙄

    Davidlocke13 schrieb:

    out schrieb:

    Sagt dir eingetlich dein Compiler, dass Definitionen am Anfang der main stehen müssen? Oder wieso machst du das? 😃

    [..]
    Das habe ich so in der Berufsschule gelernt, so mit der Begründung wenn es ganz am Anfang steht kann man es auch nirgends vergessen !

    Du kannst mit Deinen Lehrern ja ruhig mal ein Bierchen trinken gehen, vielleicht sind das ja ganz nette Typen, aber erwarte nicht dass sie Dir C++ beibringen - das wird nichts!



  • Fast. Eine Funktion muss etwas zurückgeben, wenn der Rückgabedatentyp nicht void ist. Willst du was zurückgeben?



  • also return 0; oder ganz schnell void draus machen 😉



  • Davidlocke13 schrieb:

    also return 0; oder ganz schnell void draus machen 😉

    Warum denn return 0?
    Du brauchst doch keinen Rückgabewert.
    Also auf jeden Fall void.



  • Nathan schrieb:

    Davidlocke13 schrieb:

    also return 0; oder ganz schnell void draus machen 😉

    Warum denn return 0?
    Du brauchst doch keinen Rückgabewert.
    Also auf jeden Fall void.

    So war das ja auch gemeint 😉


Anmelden zum Antworten