IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages Discussion :

Affichage des fractions


Sujet :

Langages

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Affichage des fractions
    Bonjour tout le monde
    J'ai la méthode suivante qui crée des fractions :
    public Program(int numerateur, int denominateur)
    {
    if (denominateur != 0)
    {
    num = numerateur;
    den = denominateur;
    }
    else
    Console.WriteLine("Le denominateur ne doit pas être égal à zero !!", nameof(denominateur));
    }

    Avec la méthode suivante qui affiche les résultats :
    public static void Str()
    {
    Console.WriteLine($"{num}/{den}");
    }

    Maintenant si j'exécute ce code j'ai ce qui suit :
    static void Main(string[] args)
    {
    var x1 = new Program(0, 1);
    var x2 = new Program(1, 8);
    var x3 = new Program(1, 6);
    var x4 = new Program(1, 4);
    var x5 = new Program(1, 3);
    var x6 = new Program(1, 2);
    var x7 = new Program(2, 3);
    var x8 = new Program(1, 1);
    List<Program> Ls_Str = new List<Program>
    {
    x1, x2, x3, x4 , x5 , x6 , x7, x8
    };
    Avec ForEach ou foreach le résultat est le même :
    1........ : Ls_Str.ForEach(x => Str());
    2........ : foreach(var x in Ls_Str) Str() ;

    il me donne ce résultat :
    1/1
    1/1
    1/1
    1/1
    1/1
    1/1
    1/1
    1/1
    au lieu de :
    0/1
    1/8
    1/6
    1/4
    1/3
    1/2
    2/3
    1/1
    mais si je code ainsi :
    var x1 = new Program(0, 1); Str();
    var x2 = new Program(1, 8); Str();
    var x3 = new Program(1, 6); Str();
    var x4 = new Program(1, 4); Str();
    var x5 = new Program(1, 3); Str();
    var x6 = new Program(1, 2); Str();
    var x7 = new Program(2, 3); Str();
    var x8 = new Program(1, 1); Str();
    le résultat est correct :
    0/1
    1/8
    1/6
    1/4
    1/3
    1/2
    2/3
    1/1
    de l'aide Svp et merci d'avance !!

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636
    Par défaut
    Réfléchis un petit peu:
    var x1 = new Program(0, 1); => num=0 et den=1
    var x2 = new Program(1, 8); => num=1 et den =8
    etc etc


    var x8 = new Program(1, 1); => num=1 et den =1
    donc Str() va forcément afficher 1/1

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Merci d'avoir répondu
    j'ai compris ce que vous voulez dire mais je veux afficher toutes les fractions au même temps en utilisant foreach ou ListForEach .
    Imaginez qu'on a une centaine de fraction alors tous les lister de la manière var x1 = new Program(0, 1); => num=0 et den=1 ne serait ce pas coutant en temps et en énergie ?
    J'espère que vous avez compris ce que je veux !
    Merci encore

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636
    Par défaut
    Pour corriger ça, il faut changer ta méthode Str, elle affiche uniquement num et den, donc si ils changent, bah ils changent.
    Il faudrait ton code entier pour être de la bonne modification à faire.
    Il semble (sauf erreur) que num et den soit des variables globales (ou static), ce qui n'est pas évidemment pas bon.
    Une bonne façon de faire serait de remplacer la méthode ToString de Program (si c'est une classe)
    public override string ToString() => $"{num} / {den}";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public class Fraction{
        private int num;
        private int den;
        public Fraction(int numerator, int denominator){
            if(denominator ==0){
                 throw new ArgumentException("Denominator cannot be zero.");
            }
            this.num=numerator;
            this.den=denominator;
        }
        public override string ToString() => $"{num} / {den}";
    }
    static void Main(string[] args)
    {
        List<Program> Ls_Frac = new List<Program>{};
        Ls_Frac.Add(new Fraction(0, 1));
        Ls_Frac.Add(new Fraction(1, 8));
        Ls_Frac.Add(new Fraction(1, 6));
        Ls_Frac.Add(new Fraction(1, 4));
        Ls_Frac.Add(new Fraction(1, 3));
        Ls_Frac.Add(new Fraction(1, 2));
        Ls_Frac.Add(new Fraction(2, 3));
        Ls_Frac.Add(new Fraction(1, 1));
     
        foreach(Program p in Ls_Frac){
            Console.WriteLine(p.ToString());
        }
     
        Ls_Frac.ForEach(p=>Console.WriteLine(p.ToString());
    }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Bonjour umfred
    J'ai utilisé la même classe avec les mêmes composants sauf que j'ai mis public static num , den et quand j'ai changé en private tout est entré dans l'ordre
    Mille merci à vous

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636

Discussions similaires

  1. Comment optimiser l'affichage des fractions (Latex) avec Python
    Par MarieAnne dans le forum Général Python
    Réponses: 2
    Dernier message: 23/05/2021, 15h08
  2. Réponses: 3
    Dernier message: 19/10/2012, 11h21
  3. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  4. Forcer l'affichage des dizaines...
    Par pataluc dans le forum Langage
    Réponses: 4
    Dernier message: 26/11/2002, 19h38
  5. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo