CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Aide Exercice C#

Imart
Imart
Niveau 2
02 juin 2019 à 17:57:38

Bonjour à tous! Je suis actuellement les cours d'openclassroom sur le C# et j'aurais besoin d'aide pour un exercice.

Voici l'énoncé:
Bienvenue dans cette activité où vous allez devoir manipuler les boucles et les méthodes afin de réaliser un tirage de loto !
Je vais vous demander de réaliser un tirage de 7 chiffres aléatoires. Pour cela, il vous faudra procéder en 3 étapes:
1. Créez un tableau de 7 éléments
2. Alimentez ce tableau avec des nombres aléatoires, tous différents entre eux et compris entre 1 et 49 inclus. Il faudra donc créer une boucle qui tire un nombre et l'ajoute dans le tableau seulement s'il n'a pas déjà été tiré.
3. Affichez le contenu du tableau à l'aide d'une méthode une fois que le tirage des 7 nombres est terminé.

Voici mon code (réalisé sur Visual Studio 2019):
using System;

namespace TirageLoto
{
class Program
{
static void Main(string[] args)
{
int[] nombres = new int[7];

Random aleatoire = new Random();

for (int i = 0; i < nombres.Length; i++)
{
int nombrealeatoire = aleatoire.Next(1, 50);

int valeur = nombres[i];

if (valeur != nombrealeatoire)
{
nombres[i] = nombrealeatoire;
}

}

for (int indice = 0; indice < nombres.Length; indice++)
{
Console.WriteLine(nombres[indice]);
}
}
}
}

Mon problème:
Mon code génère bien 7 nombres aléatoires à chaque fois mais il y a parfois des doublons alors qu'il faut que les nombres soient tous différents les uns des autres. Quelqu'un saurait pourquoi?
Merci d'avance

no_lift_69
no_lift_69
Niveau 10
02 juin 2019 à 18:45:38

tiens en utilisant une liste:


  List<int> nombres = new List<int>();
  while (nombres.Count < 7)
  {
     int nombrealeatoire = aleatoire.Next(1, 50);
     if (!nombres.Contains(nombrealeatoire)) nombres.Add(nombrealeatoire);
  }
Impune
Impune
Niveau 4
02 juin 2019 à 18:47:34

Le problème de ton algo, c'est qu'il ne teste tout simplement à aucun moment que le chiffre random soit dans le tableau ou non. Le code est le suivant :

int valeur = nombres[i];
if (valeur != nombrealeatoire)
{
  nombres[i] = nombrealeatoire;
}

Et ici, tu ne fais une vérification sur nombres[i], donc sur une seule valeur, alors qu'il faut faire cette vérification sur les sept valeurs du tableau.

no_lift_69
no_lift_69
Niveau 10
02 juin 2019 à 18:52:57

version tableau:

int[] nombres = new int[7];
Random aleatoire = new Random();
int n = 0;

while (n < 7)
{
    int nombrealeatoire = aleatoire.Next(1, 50);
    if (!nombres.Contains(nombrealeatoire))
    {                
        nombres[n] = nombrealeatoire;
        n++;
    }
}
Message édité le 02 juin 2019 à 18:54:07 par no_lift_69
no_lift_69
no_lift_69
Niveau 10
02 juin 2019 à 19:34:09

si t'a besoin d'aide hésites pas :ok:

thefearisback
thefearisback
Niveau 9
03 juin 2019 à 02:14:20

Une ligne avec Linq :(

var rand = Enumerable.Range(1,50).OrderBy(g => Guid.NewGuid()).Take(7).ToArray();
Message édité le 03 juin 2019 à 02:16:02 par thefearisback
Imart
Imart
Niveau 2
05 juin 2019 à 11:48:00

J'ai bien compris mon erreur et j'ai réussi à faire mon exercice grâce à vos réponses. Un grand merci à vous tous!

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment