如何在 c++ 中将一维数组中的值与二维数组中的值进行比较

How to compare values in a 1d array to a 2d array in c++

本文关键字:二维数组 比较 一维数组 c++      更新时间:2023-10-16

我正在创建一个在 c++ 中使用的彩票程序,我想知道这段代码是否可以比较数字

do
{
    for (int Num = 0; Num < 6; Num++) {
        if (RandomNumber[Num] == Numbers[Games][Num]) {
            cout << "A Number matches" << Numbers[Games][Num] << endl;
        } else {
            cout << "Bad Luck, Try Again Next Time" << Numbers[Games][Num] << endl;
        }
    }
    Games = Games - 1;
} while (Games > -1);
每当我尝试运行此代码时,它

都不会正确比较数字,我能想到的唯一问题是无法运行代码来执行我希望它执行的操作。对此问题的任何帮助将不胜感激。干杯

我认为你不仅应该检查所有数字[游戏][数字],但我只是猜测。我不知道你的整个想法。我认为你应该做这样的事情:

do
{
    for (int Num=0; Num<6; Num++)
    {
        bool exist = false;
        for( int i = 0; i < 6; ++i ) 
        {
             if (RandomNumber[Num] == Numbers[Games][i]) exist = true;
        }
        if (exist)           
        {
            cout<<"A Number matches"<<RandomNumber[Num]<<endl;
        }
        else
        {
           cout<<"Bad Luck, Try Again Next Time"<<RandomNumber[Num]<<endl;
        }
    }
    Games = Games - 1;
}
while (Games>-1);
}

我没有测试此代码。这不是最佳性能解决方案。

假设您正在尝试匹配整行,您当前的逻辑似乎不是很好。
这是@Adam Folwarczny发布的内容的略微修改版本。

#include <iostream>
int main (void)
{
    int Numbers [] [6] = 
    {
        {1, 2, 3, 4, 5, 6},
        {7, 8, 9, 10, 11, 12},
        {13, 14, 15, 16, 17, 18},
        {19, 20, 21, 22, 23, 24}
    };
    int RandomNumber [] = {13, 14, 15, 16, 17, 18} ;
    int nGames = sizeof (Numbers) / sizeof (Numbers [0]) ;
    int nNumbers = sizeof (RandomNumber) / sizeof (RandomNumber [0]) ;
    // This assumes order matters.
    for (int i = 0; i < nGames; ++i) {
        bool bWin = true ;
        for (int j = 0; j < nNumbers; ++j) {
            if (RandomNumber [j] != Numbers [i] [j]) {
                bWin = false ;
                break ;
            }
        }
        if (bWin == true) {
            std::cout << "Player " << (i + 1) << " won!" << std::endl ;
        }
        else {
            std::cout << "Player " << (i + 1) << " lost!" << std::endl ;
        }
    }
    return 0 ;
}