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

C# Discussion :

Aide a la modification d'une classe Combinaison


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut Aide a la modification d'une classe Combinaison
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    public class Combination
    {
    private long n = 0;
    private long k = 0;
    private long[] data = null;
     
    public Combination(long n, long k)
    {
    if (n < 0 || k < 0) // normally n >= k
    throw new Exception("Negative parameter in constructor");
     
    this.n = n;
    this.k = k;
    this.data = new long[k];
    for (long i = 0; i < k; ++i)
    this.data[i] = i;
    } // Combination(n,k)
     
    public Combination(long n, long k, long[] a) // Combination from a[]
    {
    if (k != a.Length)
    throw new Exception("Array length does not equal k");
     
    this.n = n;
    this.k = k;
    this.data = new long[k];
    for (long i = 0; i < a.Length; ++i)
    this.data[i] = a[i];
     
    if (!this.IsValid())
    throw new Exception("Bad value from array");
    } // Combination(n,k,a)
     
    public bool IsValid()
    {
    if (this.data.Length != this.k)
    return false; // corrupted
     
    for (long i = 0; i < this.k; ++i)
    {
    if (this.data[i] < 0 || this.data[i] > this.n - 1)
    return false; // value out of range
     
    for (long j = i+1; j < this.k; ++j)
    if (this.data[i] >= this.data[j])
    return false; // duplicate or not lexicographic
    }
     
    return true;
    } // IsValid()
     
    public override string ToString()
    {
    string s = "{ ";
    for (long i = 0; i < this.k; ++i)
    s += this.data[i].ToString() + " ";
    s += "}";
    return s;
    } // ToString()
     
    public Combination Successor()
    {
    if (this.data[0] == this.n - this.k)
    return null;
     
    Combination ans = new Combination(this.n, this.k);
     
    long i;
    for (i = 0; i < this.k; ++i)
    ans.data[i] = this.data[i];
     
    for (i = this.k - 1; i > 0 && ans.data[i] == this.n - this.k + i; --i)
    ;
     
    ++ans.data[i];
     
    for (long j = i; j < this.k - 1; ++j)
    ans.data[j+1] = ans.data[j] + 1;
     
    return ans;
    } // Successor()
     
    public static long Choose(long n, long k)
    {
    if (n < 0 || k < 0)
    throw new Exception("Invalid negative parameter in Choose()"); if (n < k)
    return 0; // special case
    if (n == k)
    return 1;
     
    long delta, iMax;
     
    if (k < n-k) // ex: Choose(100,3)
    {
    delta = n-k;
    iMax = k;
    }
    else // ex: Choose(100,97)
    {
    delta = k;
    iMax = n-k;
    }
     
    long ans = delta + 1;
     
    for (long i = 2; i <= iMax; ++i)
    {
    checked { ans = (ans * (delta + i)) / i; } }
     
    return ans;
    } // Choose()
     
    } // Combination class
    htthttp://msdn.microsoft.com/fr-fr/library/aa289166(v=vs.71).aspx explication du code ici

    http://msdn.microsoft.com/fr-fr/libr...(v=vs.71).aspx et démonstration ici

    bjr !

    apres plusieur recherche sur internet j'ai retrouvé cette classe de combinaison, elle permet de renvoyer sucessivement des combinaison de N et K par exemple N=5 et K=3 on a {0 1 2} {0 1 3} {0 1 4} ..... la difficulté pour moi est qu'elle commence par 0 moi je voudrai excluir le 0 car je suis en train de realiser un programme sur la cours des chevaux et la numerotation commence par 1.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Par défaut
    bonjour,

    Vous souhaitez que à l'affichage les valeurs commence à 1 ou bien en mémoire également ? Dans le premier cas, changer dans la méthode ToString en remplacant cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s += this.data[i].ToString() + " ";
    par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s += this.(data[i] + 1).ToString() + " ";

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    ou plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s += (this.data[i] + 1).ToString() + " ";
    ^^

  4. #4
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    ça plante la machine le système
    c'est pas corecte

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    Ca plante la machine ?¿ oO

    Drôle de message d'erreur :p

    d'autres indices ?

  6. #6
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    en fait le programme console se plante et VS affiche " La référence d'objet n'est pas définie à une instance d'un objet"

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Par défaut
    Sur quel ligne de code exactement Visual Studio lance une exception ?

Discussions similaires

  1. Récupération de variable après modif d'une classe
    Par Invité dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 03/06/2009, 21h25
  2. modification d'une classe
    Par BradPitt dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 15/04/2009, 09h48
  3. [Langage] Modification d'une classe dans un vector
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 19/12/2008, 03h44
  4. [MySQL] Modification d'une classe requêtant pour MySQL
    Par gimpycpu dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/03/2008, 00h16
  5. Réponses: 1
    Dernier message: 17/04/2007, 16h51

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