éviter les répétitions
Dark_another
Messages postés
393
Statut
Membre
-
Dark_another Messages postés 393 Statut Membre -
Dark_another Messages postés 393 Statut Membre -
Bonjour, je fais un programme qui consiste à ouvrir un fichier texte et piocher au hasard des nombres : pas de problèmes je fais les boucles pour recommencer si il/elle veut retirer mais le problème est que cela fait des répétitions et je veut éviter ça ! Pouvez-vous m'aider s'il vous plaît ? Merci d'avance
A voir également:
- éviter les répétitions
- Éviter pub youtube - Accueil - Streaming
- Marques smartphone à éviter - Accueil - Guide téléphones
- Liste des sites internet à éviter - Guide
- Comment éviter que les sms se transforme en mms samsung - Forum Xiaomi
- SMS qui se transforment en MMS ✓ - Forum Free mobile
1 réponse
Bonjour,
Si j'ai bien comprit, tu tire au hasard un certain nombre de nombres dans un fichier texte. Ce nombre de tirage étant définir par l'utilisateur. Seulement pour trouver une façon d'optimiser ton code, il faudrait peut-être que tu poste un morceau de ton fichier texte contenant les nombres. Comment sont séparés les nombres ? Y a-t-il autre chose que des nombres dans ce fichier ? Comment sont-t-ils encodés ?
Si j'ai bien comprit, tu tire au hasard un certain nombre de nombres dans un fichier texte. Ce nombre de tirage étant définir par l'utilisateur. Seulement pour trouver une façon d'optimiser ton code, il faudrait peut-être que tu poste un morceau de ton fichier texte contenant les nombres. Comment sont séparés les nombres ? Y a-t-il autre chose que des nombres dans ce fichier ? Comment sont-t-ils encodés ?
001
002
003
...
jusqu'a 999
Il n'y a rien d'autre que des nombre
je ne comprends pas quand tu dis "encodé"
désolé je ne pouvais pas répondre car je n'avais pas le wi-fi
Pour l'encodage, je pense que tes chiffres correspondent à des caractères ascii extended, encodés sur 8 bits (soit dans un char). Vu ces nombres sont tapés "manuellement" ou entrés depuis un string si je ne m'abuse. Ils auraient très bien pu être encodés sur 4 bits dans un int et écrits comme tel dans ton fichier.
Pour ton programme, tu devrait dans un premier temps lire le fichier et stocker ces nombres en mémoire via une fonction :
readNumbers(const std::ifstream& file, std::vector<int>& numbers) // file en entrée et numbers en sortie { readNumbers(file, numbers, 3); } readNumbers(const std::ifstream& file, std::vector<int>& numbers, int charsByNumber) // et sa surcharge qui définit le nombre de caractères dans un nombre { char tmp_char; std::string number; int i = 0; // un char peut aussi convenir pour économiser de la mémoire, à modifier également dans les paramètres de la fonction while(file.get(tmp_char)) // tant qu'il reste des caractères { if(i < 3) { number += tmp_char; i++; } else { numbers.push_back(std::stoi(number)); // pour convertir la chaîne en nombre et l'ajouter au vector. i = 0; } } }Après, il suffit de faire une boucle du genre :
// debut du programme vector<int> numbers; readNumbers(file, numbers); // ... do { int number = algoTirageNombreAlea(numbers); // on tire un nombre de manière aléatoire dans le vector // Traitement du nombre // ... } while(fautIlContinuer()); // fin du programme