如何使用循环缩短条件?

NGC*_*543 2 c++ arrays loops conditional-statements

我有六个组件数组,我想确保如果用户正在初始化组件的值,他/她将不会给出2个或更多相同的数字.

while (tab[i] == tab[i - 1] || tab[i] == tab[i - 2] || tab[i] == tab[i - 3] || tab[i] == tab[i - 4] || tab[i] == tab[i - 5])
    {
        cout << "Liczby nie moga sie powtarzac! Sproboj jeszcze raz: ";
        cin >> tab[i];
    }
Run Code Online (Sandbox Code Playgroud)

我试着这样做:

while (for (int m = 1; m < 6; ++m)
   {  
     tab[i] == tab[i - m];
   }
Run Code Online (Sandbox Code Playgroud)

但它不起作用:/

mol*_*ilo 9

你可以使用std::find:

while (std::find(&tab[i - 5], &tab[i], tab[i]) != &tab[i])
{

}
Run Code Online (Sandbox Code Playgroud)

但是,就像你的代码一样,这只适用于第六个数字.

要读取六个没有重复的数字,你可以这样做:

int tab[6] = {0};
int i = 0;
while (i < 6) {
    do {
        cin >> tab[i];
    } while (std::find(tab, tab + i, tab[i]) != tab + i);
    i++;
}
Run Code Online (Sandbox Code Playgroud)