Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » C++ » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (4): [1] 2 3 nächste » ... letzte » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C++
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
info
unregistriert
C++ Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo leute ich habe gerade ganz grosse Probleme bei einer Aufgabe wo ich keine Anhnung hab wie ich das machen soll.




Eine Konzertagentur will zur Verwaltung ihren Veranstaltungen ein neues DV-System einführen.
Dabei soll eine Veranstaltung mittels einer Struktur Event beschrieben werden und alle
Veranstaltungen der Agentur als verkettete Liste von Events.
Ihre Aufgabe ihm Rahmen des Projekts ist die Erstellung von Ausgabefunktionen.
Programmieren Sie
- eine Funktion void ausgabe(?)
welche die Daten eines Events am Bildschirm anzeigt. Der Parameter kann geeignet
gewählt werden
- eine Funktion void ausgabeListe( Event* start)
welche alle Events der Liste am Bildschirm anzeigt, wobei das erste Element als
Parameter übergeben wird.


Kann mir jemand sagen wie ich Vorgehen soll?

Hab leider noch keine Ansätze.

Meine Ideen:
keine
20.01.2013 23:34
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo, info/Chrisx2/Christine

In eine Struktur kommen zunächst einmal alle Variablen, die du für das Event benötigst. Da es sich um eine verkettete Liste handelt, brauchst du außerdem einen Zeiger auf das nächste Element:
code:
1:
2:
3:
4:
5:
6:
struct Event
{
    struct Event *next;
    char Veranstaltungsort[20];
    char Datum[11];
};


Den Zeiger auf das erste Element der Liste darfst du nicht überschreiben, da du dieses sonst nicht mehr findest.

Und jetzt du!

__________________
Syntax Highlighting fürs Board (Link)
21.01.2013 09:05 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Was muss ich den genau als nächstes machen? Auf was soll ich den Zeiger genau zeigen?
21.01.2013 10:20
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nun geht es ans Befüllen der Elemente, damit wir etwas zum Ausgeben haben.
Du brauchst einen Zeiger auf die Struktur, dann kannst du (z.B. mit malloc) Speicher für das eine Element reseriveren.
Dabei kriegst du auch einen neuen Zeiger auf ein weiteres Element. Die anderen Elemente kannst du mit strcpy füllen.

__________________
Syntax Highlighting fürs Board (Link)
21.01.2013 10:51 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

In meinem Skript steht das ich mit dem Zeiger irgendwie so auf eine Variable zugreife:
Z.b
Uhrzeit u, *ptr= &u


Aber wie wende ich das an?

Für einen Anfänger ist das so schwer.
21.01.2013 11:52
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Liste soll dynamische Länge haben, es wird immer genau ein neues Element erstellt.
Es ist einfacher, wenn man ein erstes Element ohne wirklichen Inhalt erstellt.
code:
1:
2:
3:
4:
5:
6:
7:
8:
struct Event *erstes, *momentan;
erstes = (struct Event*)malloc(sizeof(struct Event));
if(erstes == NULL) //kein Speicherplatz vorhanden
    return 1;
momentan = erstes;

    //Daten einlesen

Das Einlesen am besten mit einer Schleife.
Neuen Speicher kann man dann mit dem Zeiger momentan->next reservieren

__________________
Syntax Highlighting fürs Board (Link)
21.01.2013 12:12 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich bin mir nicht sicher kann ich das so machen?

if( erstes == momentan ) {

cout << "Event momentan ">>endl;

So in Ordnung. Tut mir leid falls es nicht in Ordnung ist.
21.01.2013 12:26
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich verstehe nicht, was du mir mit diesen zwei Zeilen sagen willst.

Wie in meinem letzten Beitrag schon geschrieben:
Nimm zum Einlesen eine Schleife und reserviere in dieser Schleife Speicher für ein Element, das du dann mit dem Eingelesenen füllen kannst.
Wie du den Speicher reservierst, kannst du an meinem letzten Beitrag sehen, wo ich das für das erste Element getan habe.

__________________
Syntax Highlighting fürs Board (Link)
21.01.2013 12:35 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Oh man ich verzweifel grad wie soll ich das denn einlesen . Ich dachte , dass ich es mitweinen Zeilen gemacht hab. Kannst du mir noch einen kleinen Tipp geben. Was soll ich denn nur machen wenn ich einfach nicht drauf komme.
21.01.2013 13:03
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

cout ist, wie die letzten drei Buchstaben schon vermuten lassen, zum Ausgeben von Text.
Ich könnte dir jetzt einfach die fertige Lösung schreiben, habe aber Zweifel, ob das Sinn macht.

Du musst dir wohl nochmal durchlesen, wie man einliest (Stichwort: cin bzw. scanf)

__________________
Syntax Highlighting fürs Board (Link)
21.01.2013 14:32 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ah könnte man das irgendwie so machen?

if( erstes == momentan ) {

cin>> "Event momentan ">>endl;

}

Du musst mir bitte noch ein wenig helfen , sonst schaffe ich diese Aufgabe nie.
21.01.2013 15:12
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Du kannst nicht eine gesamte Struktur einlesen, sondern nur einzelne Variablen, die du dann in die Struktur schreibst.
Wenn du es schon nicht programmieren kannst, versuche zumindest zu verstehen, was ich mache:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
#include <iostream>
#include <stdlib.h>
#include <string.h>
using std::cout;
using std::cin;


int main(int argc, char*argv[])
{
    struct Event *erstes, *momentan;
	char ort[20], datum[11];
	erstes = (struct Event*)malloc(sizeof(struct Event));
	if(erstes == NULL) //kein Speicherplatz vorhanden
		return 1;
	momentan = erstes;
	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);
	}
	AusgabeListe(erstes->next);
	getchar(); getchar();
	return 0;
}

fehlt noch AusgabeListe()

__________________
Syntax Highlighting fürs Board (Link)
21.01.2013 16:35 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ok bevor wir weiter machen müsst du mir kurz erklären was dieses malloc ist? Hast recht wenigsten will ich versuchen es zu verstehen.

Und was ist dieses strcpy?
21.01.2013 16:44
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

malloc reserviert Speicher, in den man dann etwas schreiben kann (hier: Datum, Ort und wo es weiter geht).
strcpy kopiert einen string an eine gewünschte Stelle.

Kann sein, dass ich etwas unübliche Befehle verwende (mein Programm funktioniert aber), kenne das so aus C.
Kennst du new zur Speicherreservierung?

__________________
Syntax Highlighting fürs Board (Link)
21.01.2013 17:14 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich benutze code Blocks und es zeigt mir fehler an:

||=== , Debug ===|
C:\C++\\main.cpp||In function 'int main(int, char**)':|
C:\C++\\main.cpp|12|error: invalid application of 'sizeof' to incomplete type 'main(int, char**)::Event'|
C:\C++\main.cpp|23|error: invalid use of incomplete type 'struct main(int, char**)::Event'|
C:\C++\\main.cpp|10|error: forward declaration of 'struct main(int, char**)::Event'|
C:\C++\main.cpp|23|error: invalid application of 'sizeof' to incomplete type 'main(int, char**)::Event'|
C:\C++\main.cpp|26|error: invalid use of incomplete type 'struct main(int, char**)::Event'|
C:\C++\P\main.cpp|10|error: forward declaration of 'struct main(int, char**)::Event'|
C:\C++\P\main.cpp|27|error: invalid use of incomplete type 'struct main(int, char**)::Event'|
C:\C++\\main.cpp|10|error: forward declaration of 'struct main(int, char**)::Event'|
C:\C++\main.cpp|28|error: invalid use of incomplete type 'struct main(int, char**)::Event'|
C:\C++\main.cpp|10|error: forward declaration of 'struct main(int, char**)::Event'|
C:\C++\main.cpp|29|error: invalid use of incomplete type 'struct main(int, char**)::Event'|
C:\C++\main.cpp|10|error: forward declaration of 'struct main(int, char**)::Event'|
C:\C++\main.cpp|31|error: invalid use of incomplete type 'struct main(int, char**)::Event'|
C:\C++\\main.cpp|10|error: forward declaration of 'struct main(int, char**)::Event'|
C:\C++\\main.cpp|31|error: 'AusgabeListe' was not declared in this scope|
C:\C++\|32|error: 'getchar' was not declared in this scope|
||=== Build finished: 16 errors, 0 warnings (0 minutes, 2 seconds) ===|

Das sind eine reihe von Fehler , vielleicht kannst du mir helfen sie zu beseitigen .

Noch eine frage warum hast du das getchar 2 mal benutzt ?

Das verstehe ich auch nicht.

Und bei der nächsten Aufgabe void Ausgabe liste soll ich da nicht einfach mit cout alles Ausgeben ?
21.01.2013 17:21
Seiten (4): [1] 2 3 nächste » ... letzte » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » C++