#include <iostream>
#include <vector>
using namespace std;

int main () {
    std::vector<int> winning_numbers {13579,26791,26792,33445,55555,62483,77777,79422,85647,93121};
    
    std::cout <<"Please Enter Your Numbers: ";
    int users_numbers;
    std::cin >> users_numbers;
    
    int size = winning_numbers.size();
    int index = 0;
    bool found = false;
    
    while(index < size && !found) {
        if(users_numbers == winning_numbers[index]) {
            std::cout << "You Won!" << std::endl;
            found = true;
        }
        index++;
    std::cout <<"You Lost" << std::endl;
    }
}

Je suis supposé faire correspondre les numéros des utilisateurs avec les numéros de billets de loterie que j'ai dans mon vecteur et s'ils correspondent, cela dit "Vous avez gagné!" et si vous perdez, il dit "Vous avez perdu!". Le seul hic, c'est que je dois utiliser une recherche linéaire. J'ai terminé le programme mais pour une raison quelconque, quand j'ai mis "You Lost", il le spams 5 fois et pas une fois donc je ne sais pas où le mettre dans ma boucle while.

c++
0
austinvan295 24 sept. 2020 à 03:14

2 réponses

Meilleure réponse

Erreur très simple. Alors que l'indentation vous ferait penser que tout va bien, votre parenthèse bouclée correspondante est à l'emplacement incorrect pour la boucle while. Actuellement, il envoie le spam "Vous avez perdu" à la fin de chaque index qu'il scanne parce qu'il lui est demandé. Je suggérerais les changements suivants:

while(index < size && !found) {
    if(users_numbers == winning_numbers[index]) {
        found = true;
        break;
    }
    index++;
}
if (found)
    std::cout << "You Won!" << std::endl;
else
    std::cout << "You Lost" << std::endl;

Maintenant, le code vérifiera chaque élément de la liste jusqu'à ce qu'il trouve la paire correspondante. Une fois que cela se produit, il arrêtera de scanner la liste et affichera "You Won!" Si aucune paire correspondante n'est trouvée à la fin, le message «Vous avez perdu» s'affiche.

1
NWEenglish 24 sept. 2020 à 00:24

Vous mettez std::cout << "You Lost" << std::endl; à l'intérieur de la boucle while, donc elle est répétée chaque fois que la boucle est itérée. Vous devriez le mettre en dehors de la boucle while, par exemple comme ceci: ìf(!found) std::cout << "You lost" << std::endl;

0
Anselmo GPP 24 sept. 2020 à 00:24