【问题标题】:Using more than 1 values in a for loop?在 for 循环中使用超过 1 个值?
【发布时间】:2017-02-14 23:46:46
【问题描述】:

我需要帮助才能使用具有 2 个以上同时出现的值的“for 循环”。这是我的代码:

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

现在当我运行它时... x 和 y 将上升到 9 虽然我希望它们一起运行,但我希望 x 在 6 时停止输出,我希望 y 继续到 9 ..但我不知道该怎么做,甚至有可能这样做..提前致谢!

【问题讨论】:

  • 你的意思是,除了在打印出来之前使用if 条件检查x 的值吗?
  • @Pavlin Edrev 当 x 等于 6 并且 y 小于 10 时,你打算在循环体中做什么?
  • @VladfromMoscow 我只是想改变他们的价值观......通过显示每个改变的数字......如果这对你有意义
  • @PavlinEdrev 它没有给我任何意义,因为变量 y 的值比变量 x 多。所以显示你期望的输出。

标签: c++ for-loop


【解决方案1】:

我不使用c++,所以如果我的语法错误,请有人纠正我,但作为一名广谱程序员,我想解决方案看起来像这样:

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;
    }
}

还有一些方法可以在不离开 for 循环核心的情况下使用三元运算符来实现这种效果,但为了简单起见,我在此处将其排除在外。

【讨论】:

  • 条件不应该是x&lt;6 || y&lt;10吗?就目前而言,这将在 6 点停止
  • while 条件应该是 y &lt; 10if (y &lt; 10) 已过时。
  • @AlbertRenshaw 嗯,这实际上帮助了我,正是我想要的方式!谢谢你:)
  • @AlbertRenshaw:随着输出语句之前的增量,您的代码永远不会输出 1。为你解决了这个问题。通常最好 (1) 在发布之前测试您的代码,除非它是微不足道的,并且 (2) 忽略 SO 上的选民。
  • 有很多online C++ compilers,包括Coliru(由SO阅读器创建)。
【解决方案2】:

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;
    }
}

输出:

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

【讨论】:

  • 我猜循环的每次迭代如果检查 1 个而不是 2 个条件,通常会花费更少的时间。但我不确定编译器将如何优化代码。毕竟这可能无关紧要。
  • 这对我有帮助!非常感谢 :) (我是初学者,所以我还不太关心优化代码。
【解决方案3】:

对于问题的自然解释,最简单的是嵌套循环:

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

如果您实际上想要两个称为xy 的值始终相同,并且您想为x &lt; 6 做一件事,而为y &lt; 10 做另一件事,那么一个循环计数器就足够了:

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;
}

如果您的意思是别的,那么您需要澄清您的问题,例如带有所需输出的示例。

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 2012-08-17
    • 2019-07-14
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2021-04-01
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多