Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Jump Befehl in c++?

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 ] [ 2 ] > 3 <
020
15.03.2005, 19:20 Uhr
~Reyx
Gast



Zitat von typecast:
W00t?

Goto? Weniger fehleranfaellig als ne Schleife? Also _das_ hoer ich jetzt zum ersten mal
Also in diesem Fall ist die Schleife ja auch noch _wirklich_ einfach. Ausserdem kann er das was ich gepostet habe ja fast genauso uebernehmen......

Stimmt, ich habe, glaube ich, auch noch nie wirklich goto verwendet (außer in den frühen Anfängen ... :-)), aber wenn er nicht gerade vor hatte die ganzen Zeilen mit nem neuen Tab zu versehen, vielleicht... :-)
Naja, aber eigentlich gibt's ja wirklich nichts über eine gut formulierte Schleife!

Wie gesagt... im Notfall...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
15.03.2005, 21:25 Uhr
0xdeadbeef
Gott
(Operator)


OK, ich bin noch mal drübergegangen, und ich denke, jetzt ist es so reif, dass ich es benutzen würde - wenn ich denn Textmenüs bräuchte... Here goes:

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

class menu_choice {
public:
  virtual ~menu_choice() { };

  virtual bool operator()() const = 0;

  static const bool GO_BACK = true;
};

class menu : public menu_choice {
public:
  menu(std::string const &banner = "",
       bool offer_back = false,
       std::string const &back_label = "Zurück")
    : banner_    (banner    ),
      offer_back_(offer_back),
      back_label_(back_label) { }

  void push_back(std::string const &label, menu_choice *mc) {
    choices_.push_back(std::pair<std::string, menu_choice const*>(label, mc));
  }

  virtual bool operator()() const {
    std::string zeile;
    std::stringstream sstr;
    int choice;

    do {
      std::cout << std::endl
                << banner_ << std::endl
                << std::endl;

      for(int i = 0; i < choices_.size(); ++i)
        std::cout << i + 1 << ") " << choices_[i].first << std::endl;
      if(offer_back_)
        std::cout << choices_.size() + 1 << ") " << back_label_ << std::endl;

      do {
        sstr.clear();
    
        std::getline(std::cin, zeile);
        sstr.str(zeile);
        sstr >> choice;
      } while(!sstr || choice < 1 || choice > choices_.size() + (offer_back_ ? 1 : 0));
      
      if(choice == choices_.size() + 1)
        return GO_BACK;
    } while(GO_BACK == (*choices_[choice - 1].second)());

    return !GO_BACK;
  }

private:
  std::string banner_;
  bool offer_back_;
  std::string back_label_;
  std::vector<std::pair<std::string, menu_choice const*> > choices_;
};

class echo : public menu_choice {
public:
  echo(std::string const &msg) : msg_(msg) { }

  virtual bool operator()() const {
    std::cout << msg_ << std::endl;
    return !GO_BACK;
  }

private:
  std::string msg_;
};

class main_menu : public menu {
public:
  main_menu(std::string const &banner = "Hauptmenü")
    : menu(banner) {
    menu_de = new menu("Deutsch", true);
    menu_en = new menu("English", true, "Go back");
    menu3 = new menu("Menü 3");

    hurra = new echo("Hurra!");
    hooray = new echo("Hooray!");

    menu3->push_back("Hurra", hurra);
    menu3->push_back("Hooray", hooray);
    menu3->push_back("Hauptmenü / Main Menu", this);

    menu_en->push_back("Menu three", menu3);
    menu_en->push_back("Hooray!", hooray);
    
    menu_de->push_back("Menü drei", menu3);
    menu_de->push_back("Hurra", hurra);
    
    push_back("Deutsch", menu_de);
    push_back("English", menu_en);
  }

  ~main_menu() {
    delete menu_de;
    delete menu_en;
    delete menu3;
    delete hurra;
    delete hooray;
  }

private:
  menu *menu_de, *menu_en, *menu3;
  echo *hurra, *hooray;
};

int main() {
  main_menu m;
  m();
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 15.03.2005 um 21:27 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
16.03.2005, 10:36 Uhr
~Dr4g0n
Gast


Sieht zar schön aus darf ich aber net benutzten da wir es noch net hatten in der Schle mein Prog is mitlerweile auch schon fertig sind 2088 Zeilen geworden. Allerdings fehlt dem Teil haslt noch der gewisse schliff, dass man an einem Menü ende wieder an den anfang kommt und dazu kann ich nur schleifen nehmen, weil wir die schon hatten allerdings weiß ich net wie ich sie hier benutzten kann!!!
kurzes kleines prost

C++:
cout<<"Willkommen beim Immobilienbuero bei *...*"<<endl;
cout<<"Inhaber ..."<<endl<<endl<<endl;
cout<<"Bei uns koennen sie kostenguenstig Baugrundstuecke und Haeuser erwerben"<<endl<<endl<<endl;
cout<<"Wir haben folgende Katagorien zur Auswahl"<<endl<<endl;
cout<<"1.Baugrundstuecke"<<endl;
cout<<"2.1-Familienhaeuser"<<endl;
cout<<"3.2-Familienhaeuser"<<endl;
cout<<"4.Landwirtschaftliche Gebaeude"<<endl;
cout<<"5.Ferienhaeuser"<<endl<<endl;
cout<<"6.Fals sie unser Angebot nicht nutzen wollen"<<endl<<endl;
cout<<"WICHTIG:Fuer eine Auswahl einer Katagorie geben Sie bitte immer die jeweilige \nNummer ein und Bestaetigen Sie ihre Eingabe"<<endl;
cin>>Bauart;

   switch(Bauart)
   {
    case 1 :cout<<"In welchen Bundesland suchen Sie ein Baugrundstueck?\n";
            cout<<"1.Baden-Wuertemberg"<<endl;
            cout<<"2.Bayern"<<endl;
            cout<<"3.Berlin"<<endl;
            cout<<"4.Brandenburg"<<endl;
            cout<<"5.Bremen"<<endl;
            cout<<"6.Hamburg"<<endl;
            cout<<"7.Hessen"<<endl;
            cout<<"8.Mecklenburg-Vorpommern"<<endl;
            cout<<"9.Niedersachsen"<<endl;
            cout<<"10.Nordrhein-Westfalen"<<endl;
            cout<<"11.Rheinland-Pfalz"<<endl;
            cout<<"12.Saarland"<<endl;
            cout<<"13.Sachsen"<<endl;
            cout<<"14.Sachsen-Anhalt"<<endl;
            cout<<"15.Schleswig-Holstein"<<endl;
            cout<<"16.Thueringen"<<endl;
            cin>>Bundesland;




Bearbeitung von typecast:
cpp-Tags korrigiert

Dieser Post wurde am 17.03.2005 um 09:47 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
16.03.2005, 10:38 Uhr
~Dr4g0n
Gast



C++:

switch(Bundesland)
         {
          case 1   :cout<<"In Baden-Wuertemberg koennen wir Ihnen zwei Baugrundstuecke Vorstellen"<<endl<<endl;
                    cout<<"1.Haben wir ein VOLL ERSCHLOSSENER BAUPLATZ in sonniger Suedhanglage \nin 74599 Wallhausen"<<endl;
                    cout<<"2.Haben wir ein BAUPLATZ voll erschlossen in schöner Lage in 74575 Schorzberg"<<endl;
                    cin>>Auswahl;

             switch(Auswahl)
                  {
                  case 1 :cout<<"Dieser voll erschlossene Bauplatz liegt in sonniger Suedhanglage."<<endl;
                          cout<<"Es besteht kein Bauzwang. Damit koennen Sie sich ihre Wuensche voll erfuellen."<<endl;
                          cout<<"Auf Grund der Groesse koennen Sie hier auch eine Doppelhaushaelfte errichten."<<endl;
                          cout<<"Hinsichtlich der Projektierung bin ich ihnen gern behilflich. Mir stehen hier"<<endl;
                          cout<<"kompetente Fachleute zur Seite, die ein individuelels Planen ermoeglichen."<<endl;
                          cout<<"Auch fuer die Finanzierung bin ich ihr Ansprechpartner. Meine Kundenbetreuer"<<endl;
                          cout<<"hilft Ihnen gern auch hier weiter."<<endl;
                          cout<<"Fals Sie interrese haben Rufen Sie mich an, dass wir einen Termin vereinbaren."<<endl;
                          cout<<"Meine Telefonnummer lautet: ..."<<endl;
                          cout<<"Vielen Dank fuer Ihr Interresse";
                          cin>>Fertig;break;
                  case 2 :cout<<"Dieser Bauplatz liegt in toller Lage von Schrozberg. Er ist voll erschlossen,"<<endl;
                          cout<<"es kann sofort mit dem Bauen begonnen werden. Es besteht jedoch kein Bauzwang."<<endl;
                          cout<<"Ich bieten Ihnen unseren Vollservice an: Projektierung - Finanzierung -"<<endl;
                          cout<<"notarielle Beurkundung - Baubegleitung - und Betreuung. Fals Sie interrese"<<endl;
                          cout<<"haben Rufen Sie mich an, dass wir einen Termin ausmachen."<<endl;
                          cout<<"Meine Telefonnummer lautet: ..."<<endl;
                          cout<<"Vielen Dank fuer Ihr Interresse";
                          cin>>Fertig;break;
                 }

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
16.03.2005, 10:40 Uhr
~Dr4g0n
Gast



C++:
        case 2   :cout<<"In Bayern koennen wir Ihnen zwei Baugrundstuecke Vorstellen"<<endl<<endl;
                    cout<<"1.Haben wir ein Villengrundstueck in Starnberg in 82031 Gruenwald"<<endl;
                    cout<<"2.Haben wir ein Traumgrundstueck in Bestlage in 85774 Unterfoehring"<<endl;
                    cin>>Auswahl;


             switch(Auswahl)
                  {
                  case 1 :cout<<"Das Grundstueck liegt in einer ruhigen Seitenstrasse auf dem Almeida-Huegel,"<<endl;
                          cout<<"einer der begehrtesten und besten Wohnlagen in Starnberg. Hier koennen"<<endl;
                          cout<<"Sie die Ruhe geniessen, kein Auto stoert Sie. Der Entspannung in Garten und"<<endl;
                          cout<<"Haus steht nichts im Wege. Aufgrund des eingewachsenen Gartens stoeren"<<endl;
                          cout<<"auch keine Nachbarblicke. Der wunderschoene Blick auf den Starnberger"<<endl;
                          cout<<"See liegt sozusagen um die Ecke. Ueberhaupt lohnt es sich hier oben"<<endl;
                          cout<<"spazieren zu gehen. Es warten ausgedehnte Wälder und Wiesen darauf"<<endl;
                          cout<<"entdeckt zu werden.Durch die reine Suedausrichtung hat man viel Licht"<<endl;
                          cout<<"im Haus und den ganzen Tag Sonne auf der Terrasse"<<endl;
                          cout<<"Obwohl das Grundstueck wunderschoen ruhig liegt, ist das Starnberger"<<endl;
                          cout<<"Zentrum mit seinen sehr guten Einkaufsmoeglichkeiten und Schulen ganz"<<endl;
                          cout<<"nah. Die Stadt Starnberg hat sich in den letzten Jahren sehr vorteilhaft"<<endl;
                          cout<<"entwickelt. Gute Restaurants, Cafes, Bistros, Kino, Medicenter uvm.  - alles"<<endl;
                          cout<<"vorhanden. Mit der Maximilianstrasse hat sich eine befahrbare"<<endl;
                          cout<<"Fussgaengerzone etabliert. Hier befindet sich auch das viel beachtete Delikatessen-Geschaeft Schindler."<<endl;
                          cout<<"Fals Sie interrese haben Rufen Sie mich an, dass wir einen Termin vereinbaren."<<endl;
                          cout<<"Meine Telefonnummer lautet: ..."<<endl;
                          cout<<"Vielen Dank fuer Ihr Interresse";
                          cin>>Fertig;break;
                  case 2 :cout<<"Wohnen Sie am Biotop umgeben von altem Baumbestand. Dieses ca. 1600"<<endl;
                          cout<<"m² gr. Grundstueck eignet sich hervorragend für die Bebauung eines"<<endl;
                          cout<<"exklusiven Einfamilienhauses bzw. einer Villa. Es koennen bis zu 440 m²"<<endl;
                          cout<<"Nettowohnflaeche entstehen. Maximaler Baukoerper 12 m x 20 m, als E + 1 + DG mit 38° Dachneigung."<<endl;
                          cout<<"Fals Sie interrese haben Rufen Sie mich an, dass wir einen Termin ausmachen."<<endl;
                          cout<<"Meine Telefonnummer lautet: ..."<<endl;
                          cout<<"Vielen Dank fuer Ihr Interresse";
                          cin>>Fertig;break;
                          }


          case 3   :cout<<"In Berlin koennen wir Ihnen zwei Baugrundstuecke Vorstellen"<<endl<<endl;
                    cout<<"1.Haben wir ein Mahlsdorf Baugrundstueck in Ortslage 12623 Berlin"<<endl;
                    cout<<"2.Haben wir ein Schoenes Grundstueck im gruenen Rudow 12355 Berlin"<<endl;
                    cin>>Auswahl;



             switch(Auswahl)
                  {
                  case 1 :cout<<"Das Baugrundstueck befindet sich in sehr interessanter Lage in Mahlsdorf."<<endl;
                          cout<<"Die umliegenden Grundstuecke sind mit Mehrfamilienhaeusern bebaut."<<endl;
                          cout<<"Oeffentliche Verkehrsmittel wie Bus oder S-Bahn sind in nur wenigen"<<endl;
                          cout<<"Gehminuten zu erreichen. Einkaufsmoeglichkeiten, Schulen und"<<endl;
                          cout<<"Kindertagesstaetten sind in der naeheren Umgebung zahlreich vorhanden."<<endl;
                          cout<<"Denkbar waere für die Nutzung des Grundstuecks bsw. die Bebauung mit"<<endl;
                          cout<<"einem Mehrfamilienhaus in 3-geschossiger Bauweise, welches sich als"<<endl;
                          cout<<"Giebelbau an der vorhandenen Bebauung orientiert. Bei Interesse kann eine"<<endl;
                          cout<<"bestehende Planung uebernommen werden."<<endl;
                          cout<<"Fals Sie interrese haben Rufen Sie mich an, dass wir einen Termin vereinbaren."<<endl;
                          cout<<"Meine Telefonnummer lautet: ..."<<endl;
                          cout<<"Vielen Dank fuer Ihr Interresse";
                          cin>>Fertig;break;
                  case 2 :cout<<"Rudow zeichnet besonders durch sehr viel Gruen, beschauliche"<<endl;
                          cout<<"Siedlungsbebauung und sehr gute Infrastruktur aus. In wenigen Minuten"<<endl;
                          cout<<"erreicht man die Stadtgrenze in Richtung Sueden und den Flughafen"<<endl;
                          cout<<"Schoenefeld, ohne dass das Gebiet selbst vom Fluglaerm betroffen ist. Das"<<endl;
                          cout<<"Grundstueck liegt in einer sehr ruhigen Wohnstrasse und ist dennoch nur ca."<<endl;
                          cout<<"zwei Gehminuten vom U-Bahnhof Zwickauer Damm entfernt. Es handelt"<<endl;
                          cout<<"sich um ein hinteres Baugrundstueck, das jedoch ueber eine eigene Zufahrt"<<endl;
                          cout<<"verfuegt, so dass die tatsaechliche Grundstuecksgroessee etwas mehr als 500"<<endl;
                          cout<<"m² betraegt. Das Grundstueck ist erschlossen und sehr kurzfristig bebaubar"<<endl;
                          cout<<"Fals Sie interrese haben Rufen Sie mich an, dass wir einen Termin ausmachen."<<endl;
                          cout<<"Meine Telefonnummer lautet: ..."<<endl;
                          cout<<"Vielen Dank fuer Ihr Interresse";
                          cin>>Fertig;break;
                          }

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
16.03.2005, 10:42 Uhr
~Dr4g0n
Gast


Könnt ihr mir daran mal zeigen wie das mit ner schleife aussehen soll!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
16.03.2005, 11:36 Uhr
(un)wissender
Niveauwart


Na gut, es muss wohl sein...einfach deine Sachen in die entsprechende Fälle des switch-Statement kopieren und die enum erweitern bzw. anpassen.
Du kannst das auch alles mit Integerkonstanten machen, aber ich finde enums besser. Mit Intergern kannst du auch die operatoren>> bzw. << löschen.


C++:
#include <iostream>

enum Selection
{      
    DEINE_ERSTER_CASE = 1,
    DEIN_ZWEITER_CASE,
    DEIN_DRITTER_CASE,
    END_MENU
    //weitere Fälle
};
    
std::ostream & operator<<(std::ostream &out, Selection sel);
std::istream & operator>>(std::istream &in, Selection& sel);

void clearInputStream(std::istream &in);

int main()
{  
    std::cout << "Zum Beenden " << END_MENU<<" druecken.\n";
    Selection selection;
    do
    {
        //Eingabe sicher machen...
        while(true)
        {  
            std::cout << "Bitte um Eingabe: ";
            std::cin >> selection;
            if(std::cin.fail()) clearInputStream(std::cin);
            else break;                          
        }  
        
        clearInputStream(std::cin); //Wenn noch was da ist, z B. bei Eingabe von 2er...
        
        switch(selection)
        {
        case DEINE_ERSTER_CASE: //was auch immer du hier tun willst...
            std::cout << "DEINE_ERSTER_CASE\n";
            break;
        case DEIN_ZWEITER_CASE: //was auch immer du hier tun willst...
            std::cout << "DEIN_ZWEITER_CASE\n";
            break;
        case DEIN_DRITTER_CASE: //was auch immer du hier tun willst...
            std::cout << "DEIN_DRITTER_CASE\n";
            break;
            //Weitere Fälle
        case END_MENU:
            std::cout << "Beende Programm!";
            break;
        default:
            std::cout << "Unbekannte Eingabe: " << selection << ", beende Programm!";
            selection = END_MENU; //Unbekannte eingabe -> beenden          
        }          
    }
    while(selection != END_MENU);  
}    

std::ostream & operator<<(std::ostream &out, Selection sel)
{
    return out << static_cast<int>(sel);
}
    
std::istream & operator>>(std::istream &in, Selection& sel)
{
    int temp;
    in >> temp;
    sel = static_cast<Selection>(temp);
    return in;
}
    
void clearInputStream(std::istream &in)
{
     std::cin.clear();
     std::string temp;
     getline(std::cin, temp);  
}



--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
16.03.2005, 13:12 Uhr
~Dr4g0n
Gast


Ein großes dankeschön an alle die mir helfen wollten und es getan haben!!! So mein Programm ist jetzt fertig. Es klappt alles perfect. Allerdings muss ich das Programm als eine .exe Datei abgeben kann mir einer Kurz sagen wie ich dann aus Borland cpp Format eine exe datei erstellen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
16.03.2005, 13:31 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Wie meinst du dass?
Wenn du den Quellcode kompilierst und linkst, dann bekommst du unter Windows immer eine *.exe! Du breuchst einfach die Datei, welche du auch selbst ausführst um dein Programm zu testen (wobei du ggf. darauf achten musst einige Libs o. Dlls hinzuzulinken bzw. einzubinden)!

(P.s. *.cpp ist kein Borland-Format sondern ein ganz normales Text-Format (i.d.R. wie *.txt).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
16.03.2005, 13:54 Uhr
~Dr4g0n
Gast


em ojo habs gerade selbst gesehn die exe wird von borland gleich mit erstellt!!!thx an alle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 <     [ 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: