Problem mit Array
-
Wenn du jetzt noch Definition und Deklaration von Teilnehmer und Name zusammenfasst und i in der Schleife deklarierts ist es noch etwas besser.
so etwa:int *Startnummer = new int[Teilnehmer];for (int i=0; i < Teilnehmer; i++)
-
Sagt dir eingetlich dein Compiler, dass Definitionen am Anfang der main stehen müssen? Oder wieso machst du das?

-
Grauenhaft, aber innerhalb deiner Beschränkungen wohl das Beste was machbar ist.
Ich würde die Variablen, insbesondere das i, noch lokaler machen. Du kannst
for (int i = 0...)schreiben.Dir ist schon klar, dass der Streamoperator >> an Leerzeichen trennt? Könnte für die Namen wichtig sein. Aber wie gesagt, innerhalb deiner Beschränkungen wohl das Beste was machbar ist
-
out schrieb:
Sagt dir eingetlich dein Compiler, dass Definitionen am Anfang der main stehen müssen? Oder wieso machst du das?

Ich glaube mein Programm verwendet den Borland C++ Compiler.
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 !
-
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 !
Dazu fällt mir nichts mehr ein.

-
#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!
-
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
voidist. 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
