"" und int



  • Ich hätte da mal eine Frage die für euch warscheinlich sehr leicht zu beantworten ist weshalb ich auch nirgendwo was gefunden hab. Und zwar wie krigt man "irgendwas" und einene Varieable zb. i zusammen?
    Bei cout geht das ja ser gut mit:

    cout<<"irgendwas"<<i;
    

    Aber wie mach ich das an anderen stelle zb. in einer case anweisung?

    for(int i=1;i<26;i++){
    		switch("f"i)//hier muss "f"und i zusammen also zu f1 f2 ...
                    {
    		case 2 :cout<<"2\n";break;
    		case 3 :cout<<"3\n";break;
    		default :cout<<"de\n";break;}}
    

    Weil ohne die schleife müste ich jedes mal das case nochmal schreiben wodursh der code ewig lang wird.
    Freu mich schon auf Antworten. 😃



  • #include <iostream>
    using namespace std;
    
    int main()
    {
    	 for (int wieoft = 20, i = 1; wieoft; i++, wieoft--)
           cout << "Hallo" << i << endl;
        return 0;
    }
    

    🙂 🕶



  • Ne dar hast du mich wohl falsch verstanden ich wollte wissen wie ich das "" und deie vareieable zusammen krig.

    switch("f"i)/*Hier soll dan f1 stehen wen i 1 ist wen i 2 ist f2 ... 
    damit die case anweisung die varieable f1 f2 .. überprüfen kann*/
    {
    case 2 :cout<<"2\n";break;
    case 3 :cout<<"3\n";break;
    default :cout<<"de\n";break;}
    


  • Zuerst ist anzumerken, daß man Strings nicht in einer case-Abfrage prüfen kann. Dein "f"i soll ja sicher einen aus einem Buchstaben und einer Zahl zusammengesetzten String darstellen. Das heißt also, daß Dein Programmausschnitt so oder so schonmal gar nicht kompilierbar wäre.
    Zweitens: Du fragst nach switch("f"i), doch die case-Zweige lauten case 2 und case 3. Nun mal angenommen, das würde so funktionieren, wie Du Dir das vorstellst. Dann wäre das Ergebnis von "f"i doch im Endeffekt, je nach Wert von i, "f1", "f2", "f3" etc. Wieso fragst Du also bei den case-Stellen, ob die in den switch-Klammern stehende Variable 2 oder 3 ergibt? Ich denke, sie soll "f2" und "f3" ergeben.
    Dazu fällt mir noch eine Frage ein: Wieso muß das "f" dort überhaupt davorstehen? Willst Du vielleicht nur die Zahlen überprüfen? Dann schreibe doch einfach nur switch (i), dann geht das auch.
    O.k., doch wenn es Dir nur darum geht, eine Zahl in einen String einzufügen, so nach dem Motto:

    string str="Hallo";
    int i=5;
    string zusammensetzung=str+i;
    
    cout<<zusammensetzung; //Hier soll jetzt "Hallo5" rauskommen
    

    dann müßtest Du Dich, soweit ich weiß, mit Streams auseinandersetzen. Damit geht diese Verknüpfung wohl. Allerdings gibt es in der String-Klasse selbst leider keine Funktion, die sowas direkt macht.

    Ich hoffe, ich konnte Dir helfen.



  • Also ich das mit den f1 f2 .. war schon richtig. Aber ich beschreibs vileicht lieber nochmal. ich habe varieablen mit zahlenwerten die varieablen sind f1 f1 f3 ... bis f25 und die will ich durch case überprüfen ob dern wert 2 oder 3 oder was anderes ist. Normalerweise müste ich ja 25 case anweissungen schreiben(also für jede varieable eine). Damit das ganze übersichtlicher wird wollt ich nun eine schleife machen die 25 mal durchleuft und bei jeden durchgang das nexte f überprüft. Ansonsten würde es ja so ausehen:

    switch(f1){
    		case 2 :break;
    		case 3 :break;
    		default :break;
    		}
    switch(f2){
    		case 2:break;
    		case 3:break;
    		default:break;
    		}
    ...
    switch(f25){
    		case 2 :break;
    		case 3 :break;
    		default :break;
    }
    

    Hoffe es pt doch so wie ich mir das vorstell und das ich es nun besser beschrieben hab.



  • Du verwendest einfach ein Array, dann is das Problem gegessen!

    grüße



  • Ach, so meinst Du das. Du willst also quasi den Namen der gerade verwendeten Variablen zusammenbasteln. Nun, tut mir leid: Das geht nicht. Definitiv nicht.
    In so einem Fall mußt Du ein Feld erstellen:

    int f [25]; //Erstellt ein Feld von 25 int-Variablen
    
    for (int i=0; i<25; i++)
    {
        switch (f [i])
        {
        case 1:
            //...
            break;
        //etc.
        }
    }
    

    Achtung: Der erste Index bei einem Feld ist 0. Bei einem Feld, das Du mit

    int f [25];
    

    deklarierst, kannst Du also auf die Feldeinträge f [0] bis f [24] zugreifen.



  • NES-Spieler schrieb:

    Das geht nicht. Definitiv nicht.

    Nicht so schnell:

    #define BOOST_PP_LOCAL_LIMITS (1, 25)
    
    #define BOOST_PP_LOCAL_MACRO(n) \
        switch (f##n) \
        { \
        case 1: \
        case 2: \
        } \
        /**/
    
    #include BOOST_PP_LOCAL_ITERATE()
    

    Quasi direkt aus der Boost.Preprocessor-Doku übernommen. 😉

    @Dercodiminator: Nimm die Arrays, der Präprozessor ist böse und du solltest ihn eigentlich nicht benutzen. Ein Programm wie oben ist ein absoluter Anwärter für thedailywtf ;).
    Man kann nur solche harten Aussagen wie die von NES-Spieler nicht einfach stehen lassen 😃



  • Naja... hab des hier mal alles net gelesen 😃 Aber was solls 😉

    Strings zusammensetzen: stringstream(C++), snprintf(C)



  • Hättest du doch lieber alles gelesen... 🙄



  • @.filmor: hehe, elegant... 😉

    Greetz, Swordfish



  • Swordfish schrieb:

    @.filmor: hehe, elegant... 😉

    Elegant? Naja...

    Zumindest erinnert mich derartiges daran, warum ich mir
    diesen Nick ausgesucht habe 😃



  • Warum zum Henker postest du dann immer wieder hier rein 😡 ?! Erstens habe ich geschrieben, dass der Präprozessor böse ist und man das nicht verwenden sollte und zweitens sind hier doch genug ;)-Smilies, du musst nur suchen :p



  • .filmor schrieb:

    Warum zum Henker postest du dann immer wieder hier rein 😡 ?! Erstens habe ich geschrieben, dass der Präprozessor böse ist und man das nicht verwenden sollte und zweitens sind hier doch genug ;)-Smilies, du musst nur suchen :p

    Und warum rastest du gleich aus?

    1. Ist deine Lösung mit dem #-Operator wirklich raffiniert.
    2. Habe ich deinen Hinweis auf eine solche Präprozessor-Lösung sehr wohl gesehen
    3. Habe ich deine Smilies ebenfalls verstanden
    4. Habe ich dich doch gar nicht angegriffen
    5. Habe ich niemanden angegriffen
    6. Habe ich nur darauf hingewiesen, daß man manches wirklich nicht machen sollte
    7. Poste ich hier rein weil ich kein Java-Troll bin sonder auch gerne C/C++ code
    8. Werde ich weiter posten
    9. Muß ich jetzt aufhören, da die Numerierung sonst zweistellig wird und ich
    dann alles neu ausrichten müßte 🕶



  • Vielen dank ich versuche es jetzt mal mit einen array.
    Hoffe es klapt und wen nicht melde ich mich wieder 😉



  • Javaner schrieb:

    3. Habe ich deine Smilies ebenfalls verstanden

    Dann bin ich ja beruhigt :).
    [quote="Javaner"]7. Poste ich hier rein weil ich kein Java-Troll bin sonder auch gerne C/C++ code[/cpp]Es gibt kein C/C++. Entscheide dich :p

    Javaner schrieb:

    8. Werde ich weiter posten

    Habe ich nichts gegen. Aber Verweise auf Java in diesem Teil des Forums verbitte ich mir ;).

    Javaner schrieb:

    9. Muß ich jetzt aufhören, da die Numerierung sonst zweistellig wird und ich
    dann alles neu ausrichten müßte 🕶

    Sehr pragmatisch.



  • Es gibt kein C/C++. Entscheide dich :p

    0.5 : 0 für dich, also: "...auch gerne C- und C++-Code"
    (sieht irgendwie vermurkst aus)

    Aber Verweise auf Java in diesem Teil des Forums verbitte ich mir 😉.

    Nicht jeder Javanese ist C-Hasser und trollt rum (Auch umgekehrt sicher nicht)
    Solche Trolle sind nur die lautstarke Minderheit.
    Die schweigende Mehrheit codet wechselweise in der Sprache, die für
    das gerade anstehende Problem am geeignetsten ist (Außer Vorgaben).



  • Also hat nun wunderbarr geklapt vilen dank nochmal. 🙂
    Alein hätte ich wohl ewig rumprobirt und meinen pc aus den Fesnster geworfen. 😃
    Also viel spass noch bei euerer troll debate.


Log in to reply