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 :

probleme de division par zero avec arrangement et combinaison


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Par défaut probleme de division par zero avec arrangement et combinaison
    bonjour à tous, alors voilà j'ai un petit problème avec un programme.
    il est sensé calculer le factoriel
    les arrangements
    les combinaisons
    le factoriel fonctionne à merveille tandis que l'arrangement et la combinaison ne fonctionne pas. mon debbuger me dit que le problème vient soit disant d'une division par 0 . Si vous connaissez l'astuce dites le moi svp merci.

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int fct_facto(int nombre);
    int fct_arrangement(int p,int n);
    int fct_combinaison(int p,int n);
     
    int main()
    {  int choix;
     
       int nombre_facto;
       int p,n,arrangement,combinaison;
                               printf("faire un choix");
                               scanf("%d",&choix);
     
       switch(choix)
       {
       case 1: {
                scanf("%d",&nombre_facto);
                nombre_facto=fct_facto(nombre_facto);
                printf("%d",nombre_facto);
               }
     
        case 2:{
                 scanf("%d",&p);
                 scanf("%d",&n);
                 arrangement=fct_arrangement(p,n);
                 printf("%d",arrangement);
               }
     
        case 3:{
                 scanf("%d",&p);
                 scanf("%d",&n);
                 combinaison=fct_combinaison(p,n);
                 printf("%d",&combinaison);
               }
       default:{
                 printf("mauvais choix");
               }
     
        }
     
     
     
     
    }
     
    int fct_facto(int nombre)
    {
       int var_facto=1;
       int i;
     
     
       for(i=1;i<=nombre;i++)
       {
     
          var_facto=var_facto*i;
     
        }
        return var_facto;
     
    }
     
    int fct_arrangement(int p,int n)
    {
      int var_arrangement;
      int np;
     
      n=fct_facto(n);
      np=n-p;
      np=fct_facto(np);
     
      var_arrangement= n/np;
     
     return var_arrangement;
     
    }
     
     
    int fct_combinaison (int p,int n)
    {  int var_combinaison;
       int np;
     
        p=fct_facto(p);
        n=fct_facto(n);
        np=n-p;
        np=fct_facto(np);
     
        var_combinaison=n/(np*p);
     
        return var_combinaison;
     
     
     
    }

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    1- il manque les break dans les case du switch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       switch(choix)
       {
       case 1: 
                scanf("%d",&nombre_facto);
                nombre_facto=fct_facto(nombre_facto);
                printf("%d",nombre_facto);
                break;
    // et idem pour les autres case
    2- Les expressions pour les arrangements et les combinaisons sont fausses
    fct_arrangement : n est modifié AVANT de calculer n-p
    fct_combinaison : n et p sont modifiés AVANT de calculer n-p
    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
    int fct_arrangement(int p,int n)
    {
      int var_arrangement;
      int np ;
      np=n-p; 
      n=fct_facto(n);
      np=fct_facto(np);
      var_arrangement= n/np; 
     return var_arrangement; 
    }
    // ou encore :
    int fct_arrangement(int p,int n)
    {
      return fct_facto(n)/ fct_facto(n-p);
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Par défaut
    merci beaucoup

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par cucci Voir le message
    bonjour à tous, alors voilà j'ai un petit problème avec un programme.
    il est sensé calculer le factoriel
    les arrangements
    les combinaisons
    le factoriel fonctionne à merveille tandis que l'arrangement et la combinaison ne fonctionne pas. mon debbuger me dit que le problème vient soit disant d'une division par 0 . Si vous connaissez l'astuce dites le moi svp merci.
    Je verrais bien un peu d'amélioration de l'ergonomie...
    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
     
    static int fct_facto (int nombre)
    {
       int var_facto = 1;
       int i;
     
       for (i = 1; i <= nombre; i++)
       {
          var_facto = var_facto * i;
       }
       return var_facto;
    }
     
    static int fct_arrangement (int p, int n)
    {
       int var_arrangement;
       int np;
     
       n = fct_facto (n);
       np = n - p;
       np = fct_facto (np);
     
       var_arrangement = n / np;
     
       return var_arrangement;
    }
     
    static int fct_combinaison (int p, int n)
    {
       int var_combinaison;
       int np;
     
       p = fct_facto (p);
       n = fct_facto (n);
       np = n - p;
       np = fct_facto (np);
     
       var_combinaison = n / (np * p);
     
       return var_combinaison;
    }
     
    #include <stdio.h>
     
    int main (void)
    {
       int choix;
     
       int nombre_facto;
       int p, n, arrangement, combinaison;
       printf ("1 - Nombre factoriel\n" "2 - Arrangement \n" "3 - Combinaison\n""> ");
       fflush (stdout);
       scanf ("%d", &choix);
     
       switch (choix)
       {
       case 1:
          printf ("Nombre factoriel : Entrer une valeur entiere en decimal\n");
          scanf ("%d", &nombre_facto);
          nombre_facto = fct_facto (nombre_facto);
          printf ("nombre_facto = %d\n", nombre_facto);
          break;
     
       case 2:
          printf ("Arrangement : Entrer deux valeurs entieres en decimal\n");
          scanf ("%d", &p);
          scanf ("%d", &n);
          arrangement = fct_arrangement (p, n);
          printf ("arrangement = %d\n", arrangement);
          break;
     
       case 3:
          printf ("Combinaison : Entrer deux valeurs entieres en decimal\n");
          scanf ("%d", &p);
          scanf ("%d", &n);
          combinaison = fct_combinaison (p, n);
          printf ("combinaison = %d\n", combinaison);
          break;
     
       default:
          printf ("mauvais choix");
     
       }
       return 0;
    }

Discussions similaires

  1. Division par zéro
    Par hanane78 dans le forum MATLAB
    Réponses: 1
    Dernier message: 19/07/2007, 12h58
  2. la division par zero pour effectuer un pourcentage dans une requete
    Par VIRGINIE87 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 24/05/2007, 22h44
  3. Réponses: 3
    Dernier message: 25/09/2006, 16h39
  4. [Math][Info]division par zéro
    Par niko8181 dans le forum Général Java
    Réponses: 9
    Dernier message: 23/05/2005, 09h58
  5. Comment faire une division par 5 avec les decalages
    Par Zaion dans le forum Assembleur
    Réponses: 7
    Dernier message: 05/11/2004, 17h33

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