Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeiger übung

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
16.01.2005, 16:17 Uhr
~kn00b
Gast


Hallo,

ich lerne gerade Zeiger und ich versuche das Konzept wirklich zu assimilieren... Ich hab schon ein paar tutorials dafür gelesen und trotzdem sind mir einige Sachen zu diesem Thema immer noch unklar.
Nun hab ich versucht eine Aufgabe zu lössen. Wieder zu abstrakt. Kann mir jemanden hier helfen?


Implementieren Sie eine Klasse Ort, in der jedes Objekt neben dem Ortsnamen auch noch die Verbindungen zu maximal 5 anderen Orten enthalten kann. Modellieren Sie diese Verbindungen als Zeiger auf die entsprechenden erreichbaren Orte. Schreiben sie ein Hauptprogramm, in dem Sie ein Straßennetz mit mindestens 5 Orten und 10 Verbindungen aufbauen. (Das Netz kann ruhig konstant sein und muss nicht eingelesen werden.) Jede Verbindung ist als Einbahnstraße zu interpretieren, die von dem Ort, in dem der Zeiger gespeichert ist, zu dem Ort führt, auf den der Zeiger zeigt. Der Benutzer soll die Möglichkeit haben, eine 'virtuelle Reise' durchzuführen. Das heißt von einem (fixen) Startpunkt aus werden dem Benutzer immer alle von dort direkt erreichbaren Zielorte angezeigt. Nachdem sich der Benutzer ein Ziel ausgesucht hat, gilt dieser Ort als nächster Startpunkt und so weiter. Bis man entweder an einen Ort gelangt, von dem aus keine anderen Orte erreichbar sind, oder der Benutzer das Programm abbricht.


Danke in voraus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.01.2005, 16:27 Uhr
DerSchwarzeSchlumpf



hmm wo genau liegt jetzt dein problem? dann versuch ich dir schon zu helfen, aber das ganze programm mach ich dir jetzt sicher nicht *g*

lg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.01.2005, 17:33 Uhr
~kn00b
Gast


Na ja,

wie wird z.B. der Pseudocude da aussehen. We würden die Zeiger in den Verbindungen aussehen? Das ist mir auch irgendwie unklar...
hm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.01.2005, 17:35 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


so brauchst merh oder weniger nur noch deine reise proggen

C++:
#include <iostream>
#include <string>
#include <vector>

class Ort;

std::ostream& operator<<(std::ostream& , Ort&); //deklaration damit auch der unwissende zufrieden ist... ;-)

class Ort{

    public :
        Ort(std::string ortsname);
        void addVerbindung(Ort* ort);
        friend std::ostream& operator<<(std::ostream& , Ort&);

    private:
        std::string ortsname;
        std::vector<Ort*> verbindungen;
};

Ort::Ort(std::string ortsname){this->ortsname=ortsname;}
void Ort::addVerbindung(Ort* ort){verbindungen.push_back(ort);}


std::ostream& operator<<(std::ostream& os, Ort& ort){
    os<<ort.ortsname<<" Verbindungen: ";
    for(int i=0;i<ort.verbindungen.size();++i)
        os<< ort.verbindungen[i]->ortsname <<"\t";
    os<<std::endl;
    return os;
}


void Ortsliste_erstellen(std::vector<Ort>& Ortsliste){
    
    Ortsliste.clear();
    
    Ortsliste.push_back(Ort("Berlin"));
    Ortsliste.push_back(Ort("Potsdam"));
    Ortsliste.push_back(Ort("Deppendorf"));
    Ortsliste.push_back(Ort("KaiserAugustusGedaechtnisKloake"));
    Ortsliste.push_back(Ort("Des Weihnachtsmann Werkstadt"));
    Ortsliste.push_back(Ort("Rom"));

    for(size_t i=0;i<5;++i){
        //bekanntlich führen ja alle Wege nach Rom...
        Ortsliste[i].addVerbindung(&Ortsliste[5]);
        //vermutlich gehts auch wieder zurück
        Ortsliste[5].addVerbindung(&Ortsliste[i]);
    }

    //wenn man von Berlin nach Potsdam will trifft man immer ein paar Deppen
    Ortsliste[0].addVerbindung(&Ortsliste[2]);
    Ortsliste[2].addVerbindung(&Ortsliste[1]);
        
    //der Weihnachtsmann besucht öfter mal die Gedenkstätte seines alten Kollegen...
    Ortsliste[4].addVerbindung(&Ortsliste[3]);
    Ortsliste[3].addVerbindung(&Ortsliste[4]);

}

int main(){

    std::vector<Ort> Ortsliste;
    Ortsliste_erstellen(Ortsliste);
    
    for(size_t i=0;i<Ortsliste.size();++i)
        std::cout<<Ortsliste[i];

}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 16.01.2005 um 19:14 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.01.2005, 18:25 Uhr
~kn00b
Gast


Wow,

danke Windalf, jedoch brauchte ich kaum ein paar Anleitungen und nicht den ganzen Code. Allerdings sieht das sehr schön und interessant, jedoch verstehe ich manche von den Methoden welche du da anvendest, nicht.
Erstens warum mit vector?


Code:
std::ostream& operator<<(std::ostream& , Ort&);

WAs macht diese Zeile?

danke für die schnelle antwort
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.01.2005, 18:34 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

danke Windalf, jedoch brauchte ich kaum ein paar Anleitungen und nicht den ganzen Code


ist ja noch nicht fertig... du musst ja noch deine reise proggen... also das dem user immer ausgeben wird wo er gerade ist und wo er überall hinreisen kann...


Zitat:

Erstens warum mit vector?


hmm ist totale geschmacksache... kannst auch was anders nehmen...

zum ausgeben eines ortes...

quasi damit du std::cout<<ORT verwenden kannst an sonsten wäre ja nicht definiet was das macht und du müsstest jedesmal ortsname und verbindungen von hand ausgeben
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: