for Schleifen nebeneinander



  • Hallo Leute, ich brauch mal wieder Hilfe.
    Ich möchte die for Schleifen nebeneinander stehen haben, aber sie führe ein eigen leben.
    Was ist falsch, wie ist es richtig und warum ist das so.
    Vielen dank für die Hilfe

    #include <iostream>
    
    using namespace std;
    
    int z,j;
    
    int main()
    {
    
        for(z=0;z<=10;z++)
    
        {
         for(j=10;j>=0;j--)
    
         cout <<"forwaers:  "<< z  <<"  rueckwaers "<< j <<endl;
        }
    
        return 0;
    }
    


  • for(z=0;z<=10;z++) for(j=10;j>=0;j--)
     {
     }
    

    Nichts zu danken!

    Wenn Du eine sinnvolle Antwort möchtest, stelle eine sinnvolle Frage



  • juhu123 schrieb:

    Ich möchte die for Schleifen nebeneinander stehen haben, aber sie führe ein eigen leben.

    Dies bitte noch ausführlich erklären. Ich kann damit jedenfalls nichts anfangen.



  • #include <iostream>
    
    using namespace std;
    
    int z,j;
    
    int main()
    {
    
        for(z=0;z<10;z++)
        {
    //		for(j=10;j>=0;j--);
    		{
    			cout <<"forwaers:  "<< z  <<"  rueckwaers "<< 10-z <<endl;
    		}
    	}
    
        return 0;
    }
    


  • Die ergebnisse sehen so oder so ähnlich aus und das gefählt mir nicht.

    forwaers: 0 rueckwaers 10
    forwaers: 0 rueckwaers 9
    forwaers: 0 rueckwaers 8
    forwaers: 0 rueckwaers 7
    forwaers: 0 rueckwaers 6
    forwaers: 0 rueckwaers 5
    forwaers: 0 rueckwaers 4
    forwaers: 0 rueckwaers 3
    forwaers: 0 rueckwaers 2
    forwaers: 0 rueckwaers 1
    forwaers: 0 rueckwaers 0
    forwaers: 1 rueckwaers 10
    forwaers: 1 rueckwaers 9
    usw. 10 mal

    forwaers: 0 rueckwaers 10
    forwaers: 1 rueckwaers 9
    forwaers: 2 rueckwaers 8
    forwaers: 3 rueckwaers 7
    forwaers: 4 rueckwaers 6
    forwaers: 5 rueckwaers 5
    forwaers: 6 rueckwaers 4
    forwaers: 7 rueckwaers 3
    forwaers: 8 rueckwaers 2
    forwaers: 9 rueckwaers 1
    forwaers: 10 rueckwaers 0

    so sollten sie aussehen aber wie bekomme ich das hin?

    #include <iostream>
    
    using namespace std;
    
    int z,j;
    
    int main()
    {
    
        for(z=0;z<=10;z++)
        for(j=10;j>=0;j--)
    
        {
         cout <<"forwaers:  "<< z  <<"  rueckwaers "<< j <<endl;
        }
    
        return 0;
    }
    


  • #include <iostream>
    int main()
    {
    	enum
    	{
    		Limit = 10
    	};
    	for(unsigned i = 0; i <= Limit; ++i)
    	{
    		std::cout << "Vorwaerts: " << i << "\tRueckwaerts: " << Limit - i << '\n';
    	}
    }
    


  • danke es läuft einfand frei.
    Mit enum kenne ich mich noch nicht aus, sollte ich wohl ändern.
    Trotzdem noch mal, mit der Kombination/en einfachen for schleifen und diverser Klammern hätte man da eine Möglichkeit diese Problem auch zu lösen ?



  • juhu123 schrieb:

    danke es läuft einfand frei.
    Mit enum kenne ich mich noch nicht aus, sollte ich wohl ändern.
    Trotzdem noch mal, mit der Kombination/en einfachen for schleifen und diverser Klammern hätte man da eine Möglichkeit diese Problem auch zu lösen ?

    Die wurde jetzt schon zweimal eine funktionierende Lösung gezeit. Du brauchst nur EINE Schleife. Zwei Schleifen laufen verschachtelt ab.

    enum kannst Du an der Stelle vergessen, weil völlig überflüssig.



  • qweasdyxc schrieb:

    enum kannst Du an der Stelle vergessen, weil völlig überflüssig.

    kommt drauf an ob du auf code-duplikation stehst oder nicht.



  • juhu123 schrieb:

    danke es läuft einfand frei.
    Mit enum kenne ich mich noch nicht aus, sollte ich wohl ändern.

    Das enum hat mit der Funktionalität nichts zu tun. Das ist erstmal eine Konstante.
    (Du kannst auch direkt in der Schleifenbedingung die 10 eintragen.)

    juhu123 schrieb:

    Trotzdem noch mal, mit der Kombination/en einfachen for schleifen und diverser Klammern hätte man da eine Möglichkeit diese Problem auch zu lösen ?

    Da du die Ausgabe gleichzeitig haben willst, brauchst du nur eine Schleife.



  • asfdlol schrieb:

    qweasdyxc schrieb:

    enum kannst Du an der Stelle vergessen, weil völlig überflüssig.

    kommt drauf an ob du auf code-duplikation stehst oder nicht.

    Es ist völlig albern einem Noob der nichtmal mit verschachtelten Schleifen umgehen kann ein unbenanntes enum entgegen zu werfen, wohlwissend, dass das nur für Verwirrung sorgen wird.
    Mit Code-Duplikation hat das auch nichts zu tun. Und wenn schon hättest Du einfach ein const int verwenden können statt diesem enum-Gefrickel.

    Du bist glaube ich der neue Sone hier.



  • Alles super, Ihr seit Gut.Es läuft.

    #include <iostream>
    
    using namespace std;
    
    int i;
    
    int main()
    {
    
        for(i=0;i<=10;i++)
    
        {
         cout <<"Forwaers:  "<< i  <<"  Rueckwaers "<< 10-i <<endl;
        }
    
        return 0;
    }
    

    Schönen Tag noch 🙂



  • @juhu123
    in c++ verfolgt man ein konzept, laut welchem man alle variablen so lokal und so spät wie möglich definieren soll. das steht genau im gegensatz zu dem stil, den man normal in c anstrebt (variablen am scopebeginn oder global definieren).
    ich sag dir das jetzt damit du dir das vielleicht angewöhnst. besser als wenn du dich in einem jahr plötzlich umgewöhnen musst.
    die lokalste version definiert die variable hier übrigens for-kopf.

    qweasdyxc schrieb:

    Du bist glaube ich der neue Sone hier.

    ist das als beleidigung oder als kompliment zu verstehen?



  • Das ist beleidigend gemeint.



  • For waers immer - rueck waers nimmer! (oder so ähnlich - Erich Honecker)



  • [quote="juhu123"]Hallo Leute, ich brauch mal wieder Hilfe.
    Ich möchte die for Schleifen nebeneinander stehen haben, aber sie führe ein eigen leben.
    Was ist falsch, wie ist es richtig und warum ist das so.
    Vielen dank für die Hilfe

    Meinst du so? 1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1

    dann:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        for(int x=1; x <= 10; x++)
        {
            cout << x << " ";
        }
        for(int x=10; x >= 1; x--)
        {
            cout << x << " ";
        }
        cout << endl;
    }
    


  • asfdlol schrieb:

    @juhu123
    in c++ verfolgt man ein konzept, laut welchem man alle variablen so lokal und so spät wie möglich definieren soll.

    Dazu hab ich mal ne Frage. Hoffe, es ist nicht so schilmm, wenn ich die gleich hier im Thread stelle.
    Deklariert man die Variablen wirklich erst an der Stelle, wo man sie braucht? Ich hab die in der Funktion bisher immer möglichst weit oben, alle an einer Stelle so zu sagen, eingeführt. Für mich ist das einfacher übersichtlicher.
    Okay, Funktionen sollen ja nur ein paar Zeilen haben, aber ich find es schicker, wenn die Variablen net so über den Code verstreut sind.

    Mal als Beispiel:
    Besser so

    foo()
    {
    int a=0;
    int b=0;
    tue Dinge mit a;
    tue Dinge mit b;
    }
    

    oder so

    foo()
    {
    int a=0;
    tue Dinge mit a;
    int b=0;
    tue Dinge mit b;
    }
    


  • Faustregel: Deklariere Variablen erst, wenn du sie auch mit einem vernünftigem Wert initialisieren kannst.
    Besonders bei UDT's ist der Defaultkonstruktoraufruf oft unnötig und langsam.



  • Stocker34 schrieb:

    Deklariert man die Variablen wirklich erst an der Stelle, wo man sie braucht?

    Ja.

    Stocker34 schrieb:

    Ich hab die in der Funktion bisher immer möglichst weit oben, alle an einer Stelle so zu sagen, eingeführt. Für mich ist das einfacher übersichtlicher.

    Ähm, ja, aber ERST WEIL Du keine Ordnung in den Variablen hast, musst Du sie alle vor die Haustür werfen, damit Du immer rausgehen kannst, um sie anzuschauen. Das entspricht aber nicht dem Faulheitsgebot des Programmierens.

    Stocker34 schrieb:

    Mal als Beispiel:
    Besser so

    foo()
    {
    int a=0;
    int b=0;
    tue Dinge mit a;
    tue Dinge mit b;
    }
    

    oder so

    foo()
    {
    int a=0;
    tue Dinge mit a;
    int b=0;
    tue Dinge mit b;
    }
    

    An so Beispielen kann man ectl nix erkennen.

    double berechneZylinderVolumen(double r,double h){
       double G,V;
       G = PI*r*r;
       V = G*h/3;
       return V;
    }
    

    ist

    double berechneZylinderVolumen(double r,double h){
       double G,V;//Rauschen, stört beim Lesen, werd ich eh erst später brauchen…
       G = PI*r*r;//Mist, was war G nochmal? Hab's vorhin gesehen, aber verdrängt…
       V = G*h/3;//Puh, V gelesen zu haben ist aber jetzt echt schon ewig her. 
          //Wer macht denn sowas? Ärgerlich. 
       return V;
    }
    
    double berechneZylinderVolumen(double r,double h){
       double G = PI*r*r;
       double V = G*h/3;
       return V;
    }
    

    ist hübsch

    double berechneZylinderVolumen(double r,double h){
       double G,V;
       V = G*h/3;
       G = PI*r*r;
       return V;
    }
    

    ist

    double berechneZylinderVolumen(double r,double h){
       double G,V;
       V = G*h/3;//PENG, G hat noch keinen sinnvollen Wert. Kommt davon, wenn man 
          //wie vor 40 Jahren pr0ggert, ätsch!
       G = PI*r*r;
       return V;
    }
    


  • Okay, dann werd ich das in Zukunft mal so handhaben. Ich danke euch recht herzlichst. Ein Lehrmeister von mir hat seiner Zeit immer gesagt, man soll jeden Tag was Neues lernen. Tagesaufgabe erfüllt. 🙂
    Nochmals danke.


Log in to reply