Variable in Variable ?!



  • switch(Zahl) {
    case 1:
    cout<<a1;
    break;
    case 2: 
    cout<<a2;
    break;
    case 3: 
    cout<<a3;
    break;
    }
    

    oder

    for (;;Zahl==1) {
    cout<<a1;
    break;
    }
    for (;;Zahl==2) {
    cout<<a2;
    break;
    }
    for (;;Zahl==3) {
    cout<<a3;
    break;
    }
    

    Den Blödsinn kann man auch noch mit while machen. Sinn? Keiner, natürlich.



  • Richters schrieb:

    Jetzt möchte ich -OHNE IF ABFRAGE oder ähnliches- das er mir die Zahl ausgibt.

    Ähnliches ist switch, for, while.
    Edit: Dein for ist übrigens falsch.


  • Mod

    cout << 2*zahl + 10;
    


  • SeppJ schrieb:

    cout << 2*zahl + 10;
    

    +1 😃



  • Danke kleiner Troll .. aber ich habe extra gesagt ohne irgendeine abfrage^^ .. das kann ich auch..

    Ich zeige es mal an einem konkreten Beispiel.

    Ich hab vor ein Kampfsystem zu basteln. Verschiedene Attacken mit verschiedener Angriffskraft (dmg) und verschieden hoher verbrauch von Mana (mp). Und die bereite ich so vor:

    struct attack
    {
    int dmg;
    int mp;
    };
    attack a1, a2;

    a1.dmg = 80; a1.mp = 50;

    a2.dmg = 60; a2.mp = 35;
    Beispiel ende.

    Dann soll mein Kampfsystem so verallgemeinert werden das ich mit der eingabe des Users (Zahl der gewählten Attacke zB. 1, 2 oder 3) dann die Attacke auswählen kann und die werte in das folgende System einfügen kann.

    treffer = random(100);
    if(player == 1)
    {
    cout << "Spieler ist dran!\n";
    cout << "Gegner: " << p2.hp << " HP." << endl;
    cout << "Ich: " << p1.hp << " HP." << endl << "waehle attake (1/2)";
    cin >> atk;
    cout << "Spieler wählt Attake " << atk << " aus!\n";
    Sleep(1000);system("CLS");
    if(treffer < 80)
    {
    if(treffer > 70) {x = 2; cout << "KRITT\n\n";} else x = 1;
    if(atk == 1)
    {
    dmg = ( x *(80 + random(5)));
    cout << dmg << " dmg." << endl;
    p2.hp = p2.hp - dmg;
    p1.mp - 50;
    }
    }else cout << "Attake " << atk << " ging daneben!\n";
    }

    Beispiel ende.

    Und würde ich jetzt für jede Attacke sowas machen müssen, wäre es ja doch schon ein riesiger Block. Und es sollen ja schon einige Attacken werden^^

    Danke nochmal.



  • struct attack
    {
    int dmg;
    int mp;
    };
    attack a[2];
    
    a[0].dmg = 80; a[0].mp = 50;
    
    a[1].dmg = 60; a[1].mp = 35;
    
    ...
    
    int atackno;
    std::cin >> atackno;
    attack aa = a[attackno];
    

    Array eben.



  • akari schrieb:

    Hallo

    Das geht nur wenn du statt 3 Variablen ein Array benutzt.



  • Ich habe das mit dem Array nicht direkt nachvollziehen können^^ .. danke 🙂



  • Wenn dein Compiler C++11 kann, nimm std::array statt Arrays. Die sind in sämtlichen Punkten überlegen, oder mindestens gleich gut.



  • @Nathan
    Stimmt, war falsch. Aber war auch eher just4fun, die Antwort wurde ja schon von akari gegeben.



  • int a1, a2, a3;
    
    int main()
    {
      a1 = 12;
      a2 = 14;
      a3 = 16;
    
      int Zahl;
      cout << "Wähle eine Zahl zwischen 1 und 3";
      cin >> Zahl; 
      cout << " => " << *(&a1 + Zahl - 1) << '\n';
    }
    


  • cout << " => " << *(& a3 + Zahl - 1) << '\n';



  • Scherzkekse.

    Anmerkung zur echten Lösung:

    int attackno;
    std::cin >> attackno;
    attack aa = a[attackno];
    

    ...wenn ich jetzt 2500 eingebe, hast du damit ein echtes Problem. Du solltest zumindest prüfen, dass 0 <= attackno < Anzahl Angriffe ist.


Anmelden zum Antworten