Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Informatik in der Schule (http://www.informatikerboard.de/board/board.php?boardid=21)
--- C++ (http://www.informatikerboard.de/board/thread.php?threadid=1373)
Geschrieben von eulerscheZahl am 21.01.2013 um 19:41:
Für die Ausgabe braucht man eine Schleife.
Was ist die Abbruchbedingung?
Wie kommt man an das nächste Kettenglied?
Geschrieben von info am 21.01.2013 um 20:09:
Die Abbruchbedingung ist ja wenn kein speicherplatz mehr da ist.
An das nächste Kettenglied kommt man doch mit e pfeil oder?
Geschrieben von eulerscheZahl am 21.01.2013 um 20:13:
Der Speicherplatz sollte nicht das Problem sein, in aller Regel hast du weniger Events als du speichern könntest.
Abbruchbedingung ist je nach genauer Implementierung, dass e bzw. e->next ==NULL ist.
Mit e->next kommt man auch an das nächste Kettenglied.
Geschrieben von info am 21.01.2013 um 20:19:
Wäre die Ausgabefunktion irgendwie so:
Die Ausgabe eines Events sollte klar sein:
cout << e->Datum << ": " << e->Veranstaltungsort << "\n";
if(erstes == NULL){
return e pfeil next == Null;
}
Könnte das stimmen?
Ich versuch das jetzt irgendwie mit dir zu entwickeln.
Ich hoffe die idee ist nicht ganz falsch
Geschrieben von eulerscheZahl am 21.01.2013 um 20:30:
Das ergibt aus mehreren Gründen keinen Sinn:
-die Funktion ausgabe ist void, das heißt sie hat keinen Rückgabewert, du brauchst also auch kein return.
-"->" ist keine Abkürzung meinerseits, sondern wird wirklich so verwendet. e pfeil next wird vom Compiler nicht erkannt.
-Wo ist die Schleife zur Ausgabe (Rekursion wäre auch möglich, ist aber langsamer und müllt den Stack unnötig zu)?
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
|
void AusgabeListe(struct Event *e)
{
while(e != NULL)
{
cout << e->Datum << ": " << e->Veranstaltungsort << "\n";
e = e->next;
}
} |
|
möglicherweise nötige Erklärungen gibt es morgen.
Geschrieben von info am 21.01.2013 um 20:31:
Das ist die ganze Ausgabe funktion oder wie?
Geschrieben von info am 21.01.2013 um 20:39:
Oder muss ich noch was in der Ausgabe funktion definieren .
Dann könnte ich mir wenigstens schon paar gedanken machen.
Geschrieben von info am 21.01.2013 um 21:56:
Mittlerweile sind neue fragen entstanden ?
while(1)
{
cout << "Veranstaltungsort? ";
cin >> ort;
if(strlen(ort) < 2) break;
cout << "Datum? ";
cin >> datum;
momentan->next = (struct Event*)malloc(sizeof(struct Event));
if(momentan == NULL) //kein Speicherplatz vorhanden
return 1;
momentan = momentan->next;
momentan->next = NULL;
strcpy(momentan->Datum, datum);
strcpy(momentan->Veranstaltungsort, ort);
}
Das mit der while schleife habe ch verstanden.
Aber das hier nicht:
if(strlen(ort) < 2) break;
cout << "Datum? ";
cin >> datum;
momentan->next = (struct Event*)malloc(sizeof(struct Event));
if(momentan == NULL) //kein Speicherplatz vorhanden
return 1;
momentan = momentan->next;
momentan->next = NULL;
strcpy(momentan->Datum, datum);
strcpy(momentan->Veranstaltungsort, ort);
}
Was bedeutet das hier: strlen(ort)
Und wäre nett wenn du mir den weiteren code ein wenig erklären kannst .
Danke
Geschrieben von Karlito am 22.01.2013 um 01:02:
Kurze kritische Zwischenfrage:
Wo ist deine Eigeninitiative? strlen findet man gut bei google. Und warum hast du so ein Aufgabe und keinerlei Wissen?
VG,
Karlito
Geschrieben von info am 22.01.2013 um 17:37:
Ich hab leider meine schwierigkeiten gehabt und war daher auch sehr froh über eulersche Zahls hilfe.
Vielleicht kannst du es mir ja erklären?
Geschrieben von Karlito am 22.01.2013 um 19:01:
Das überlasse ich euler... Ich würde Dir aber raten strlen einfach mal zu googeln. Wenn du daraufhin konkrete Fragen stellst, zeigt das ein wenig mehr, dass du dich wirklich damit beschäftigst.
VG,
Karlito
Geschrieben von eulerscheZahl am 22.01.2013 um 19:42:
| Zitat: |
Original von info
Und wäre nett wenn du mir den weiteren code ein wenig erklären kannst . |
Ich kenne dich nicht und kann daher schlecht sagen, was genau du nicht weißt. Wenn ich hier anfange, irgendetwas zu erklären, dann kann es sein, dass ich Dinge voraussetze, die du noch nicht weißt oder dass du dich beim Lesen langweilst, weil die Erklärung zu ausführlich ist.
In beiden Fällen wäre es sinnlos investierte Zeit, was glaube ich auch für gestern gilt.
Bei konkreten Fragen kannst du dich ja melden, aber erst wenn du dich selbst daran versucht hast.
Bei strlen gebe ich Karlito recht:
google.
Ich rate dir auch, jemanden zu suchen, den du persönlich kennst und der dir helfen kann. Du hast größere Lücken und die lassen sich in einem Forum nicht so einfach schließen, das gestern hat sich über einen ganzen Tag gezogen, im direkten Gespräch lässt sich das auch in 30min lösen.
Geschrieben von info am 22.01.2013 um 19:45:
Aber meine Aufgabe ist soweit richtig gelöst oder?
Geschrieben von info am 22.01.2013 um 19:48:
Ok aber kannst du mir wenigstens erklären warum du bei diesem code:
char ort[20], datum[11];
Die zahlen 20 und 11 genommen hast?
Was bewirkt das?
Geschrieben von eulerscheZahl am 22.01.2013 um 19:52:
Für das Datum ist das recht klar: "22.01.2013" hat mit '\0' zur Kennzeichnung des Stringendes 11 Zeichen.
Die 20 sind willkürlich gewählt (Mönchengladbach passt z.B. noch rein).
Forensoftware: Burning Board, entwickelt von WoltLab GmbH