C ++循环算法逻辑问题

时间:2013-12-10 10:06:06

标签: c++ algorithm loops vector logic

int k = 0;

for (int a = 0; a < Ticket.size(); a++)
{
    for (int i = 0; i < 6; ++i)
    {
        for (int j = 0; j < 6; ++j)
        {
            if (Ticket[a][i] == lotteryRandomNumbers[j])
            {
                k++;
            }
        }
    }
}

std::cout << "You matched: " << k << " number(s)" << std::endl;

Ticket是一个包含多个大小为6的向量的Vector。 lotteryRandomNumbers是一个包含6个值的数组

此循环检查所有向量中的所有值并检查以查看与数组匹配的内容。因此,如果在所有向量中8个数字匹配,则输出8个匹配。

我想要它做的是输出每个单独的向量中有多少匹配,例如在向量1中,有1个匹配,在向量2中没有匹配,在向量3中有2个匹配等。 / p>

向量的数量可以改变,程序员不知道

2 个答案:

答案 0 :(得分:2)

您可以声明匹配的矢量。

vector< int > matches( Ticket.size(), 0 );

for (int a = 0; a < Ticket.size(); a++)
{
  for (int i = 0; i < Ticket[a].size(); ++i)
  {
    for (int j = 0; j < 6; ++j)
    {
      if (Ticket[a][i] == lotteryRandomNumbers[j])
      {
        matches[a]++;
      }
    }
  }
}

for ( int i = 0; i < matches.size(); i++ )
  cout << matches[i] << " ";

答案 1 :(得分:1)

它就像在外部循环中添加变量一样简单,并计算每个向量得到的匹配数,然后在最后打印出来:

int k = 0;

for (int a = 0; a < Ticket.size(); a++) 
{
    int count_vec = 0;
    for (int i = 0; i < 6; ++i) 
    {
        for (int j = 0; j < 6; ++j)
        {
            if (Ticket[a][i] == lotteryRandomNumbers[j])
            {
                count_vec++;
                k++;
            }
        }
    }
    std::cout   << "In vector " << a 
                << " there are " << count_vec 
                << " matches" << std::endl;
}

std::cout   << "You matched: " << k 
            << " number(s)" << std::endl;