2017-02-14 3 views
-4

Ich brauche Hilfe, um eine 'for-Schleife' mit mehr als 2 Werten zu verwenden, die zusammen gehen. Dies ist mein Code:Verwenden von mehr als 1 Werten in einer for-Schleife?

for(x=1 , y=1 ; x<6 , y<10 ; x++ , y++){ 
    cout << "x:" << x << endl; 
    cout << "y:" << y << endl; 

Gerade jetzt, wenn ich es laufen ... x und y bis 9 steigen, obwohl ich sie wollen zusammen laufen, aber ich möchte x 6 Ausgeben zu stoppen, und ich will y weiter bis 9..aber ich weiß nicht wie es geht oder ist es überhaupt möglich .. Vielen Dank im Voraus!

+0

Sie meinen, andere als eine 'if' Bedingung mit dem Wert von 'X' zu überprüfen, bevor es heraus drucken? –

+2

@Pavlin Edrev Was machen Sie im Schleifenkörper, wenn x gleich 6 und y kleiner als 10 ist? –

+0

@VladfromMoscow Ich möchte nur ihre Werte ändern ... indem ich jede geänderte Zahl zeige ... wenn das Ihnen eine Bedeutung gibt –

Antwort

2

Ich benutze keine c++ so jemand korrigiert mich wenn meine Syntax falsch ist, sondern als ein Breitspektrum-Programmierer würde ich stelle mir die Lösung wie folgt aussehen würde:

for (x=1, y=1; x<6 || y<10;) { 
    if (x<6) { 
     cout << "x:" << x << endl; 
     ++x; 
    } 
    if (y<10) { 
     cout << "y:" << y << endl; 
     ++y; 
    } 
} 

Es gibt auch Möglichkeiten, Um diesen Effekt zu erreichen, ohne den Kern Ihrer for-Schleife mit ternären Operatoren zu verlassen, habe ich das aus Gründen der Einfachheit hier ausgeschlossen.

+2

sollte nicht die Bedingung "x <6 || sein y <10'? wie es steht, wird dies bei 6 – vu1p3n0x

+2

stoppen Die while-bedingte sollte "y <10" und die "if (y <10)" ist obselete. – user2176127

+0

Danke für die Bearbeitung @ user2176127 Ich war offline :) –

-7

Die einfachste, für eine natürliche Interpretation der Frage, ist eine verschachtelte Schleife:

for(int y = 1; y < 10; ++y) 
{ 
    for(int x = 1; x < 6; ++x) 
    { 
     cout << "x:" << x << endl; 
     cout << "y:" << y << endl; 
    } 
} 

Wenn stattdessen tatsächlich zwei Werte wollen x und y genannt, die immer gleich sind, und Sie möchten ein tun Sache für x < 6 und etwas anderes für y < 10, dann ein einzelnen Schleifenzähler genügt:

for(int i = 1; i < 10; ++i) 
{ 
    int const y = i; 
    if(i < 6) 
    { 
     int const x = i; 
     // Do the x and y thing here. E.g. 
     cout << "x: " << x << endl; 
    } 
    // Do the y only thing here. E.g. 
    cout << "y: " << y << endl; 
} 

Wenn Sie etwas anderes gemeint, dann müssen Sie klären Ihre Frage, z.B. mit einem Beispiel für die gewünschte Ausgabe.

0

test.cpp:

#include <iostream> 
int main() { 
    for(int i = 1; i < 6; ++i) { 
     std::cout << "x: " << i << std::endl; 
     std::cout << "y: " << i << std::endl; 
    } 
    for(int i = 6; i < 10; ++i) { 
     std::cout << "y: " << i << std::endl; 
    } 
} 

Ausgang:

x: 1 
y: 1 
x: 2 
y: 2 
x: 3 
y: 3 
x: 4 
y: 4 
x: 5 
y: 5 
y: 6 
y: 7 
y: 8 
y: 9 
+0

Ich denke, dass jede Iteration der Schleife im Allgemeinen weniger Zeit braucht, wenn sie nach 1 statt nach 2 Bedingungen sucht. Aber ich bin mir nicht sicher, wie der Compiler den Code optimieren würde. Vielleicht ist das egal. –

+0

Das hat mir geholfen! Vielen Dank :) (Ich bin ein Anfänger, daher ist es mir nicht wichtig, den Code zu optimieren. –

Verwandte Themen