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 :

Le programme donne un résultat erroné


Sujet :

C

  1. #1
    Membre régulier Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Points : 73
    Points
    73
    Par défaut Le programme donne un résultat erroné
    Bonjour,

    ce programme devant donné le nombre de sous séquences croissantes me donne 0 comme résultat à chaque fois ?

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
    int precedent,courant,cptr;
     
    for(cptr=0,printf("introduire un entier : "),scanf("%d",&courant),precedent=courant;0!=courant;printf("introduire un entier : "),scanf("%d",&courant),precedent=courant)
     
    if(courant<precedent)
    cptr++;
     
    printf("il y a %d sous sequences croissantes\n",cptr);
     
      system("PAUSE");
      return 0;
    }

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Hum, dis moi, ton objectif est d'obfusquer le code ? ><

    voici une retraduction de ta boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(cptr=0; 0!=courant; )
    {
        printf("introduire un entier : ");
        scanf("%d",&courant);
        precedent=courant;
        if(courant<precedent)
            cptr++;
    }
    Je pense que tu as compris pourquoi cptr = 0 a chaque fois.

  3. #3
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Si tu écrivait ton code de façon claire au lieu d'utiliser un for parfaitement abscons , peut-être pourrais-tu t'y retrouver toi-même.

    En voici une forme équivalente :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
      int precedent,courant,cptr;
      cptr = 0;
      printf("introduire un entier : ");
      scanf("%d",&courant);
      precedent=courant
      while(0!=courant;)
      { 
         if(courant<precedent)
            cptr++;
         printf("introduire un entier : ");
         scanf("%d",&courant);
         precedent=courant; 
      }
      printf("il y a %d sous sequences croissantes\n",cptr);
      system("PAUSE");
      return 0;
    }
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #4
    Membre régulier Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Points : 73
    Points
    73
    Par défaut
    Je comprends mieux ton code mais ce qui est étonnant c'est que mon code est la solution donné par mon prof
    J'ai recopié exactement son code et ça ne pouvait pas fonctionner

  5. #5
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    J'aimerais pas avoir un prof comme le tiens
    Plus tu pédales moins fort, moins t'avances plus vite.

  6. #6
    Membre régulier Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Points : 73
    Points
    73
    Par défaut
    Ton code ne fonctionne pas diogène ? Et celui de soft non plus

  7. #7
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    ? Je t'ai juste indiqué ou etait le probleme ^^
    Et diogene a retranscrit ton code en lisible, mais ca reste ton code, normal que ca marche pas.

    Pour info, combien de sous sequence croissante on a ici ?

    1
    2
    3
    4
    5
    0
    Une ou quatre ?
    La solution est plus complexe a avoir que tu ne le pense si c'est une.

  8. #8
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Non, parce que c'est TON code (ou celui de ton prof) retranscrit clairement.

    mais ce qui est étonnant c'est que mon code est la solution donné par mon prof
    Hallucinant !
    Ce n'est même plus de l'amateurisme mal digéré, c'est du sabotage !

    Condoléances.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  9. #9
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Citation Envoyé par diogene Voir le message

    Hallucinant !
    Ce n'est même plus de l'amateurisme mal digéré, c'est du sabotage !

    Condoléances.
    Deja, rien que le fait de mettre tout dans le for pour économiser trois lignes ....
    Les prof font ce qu'ils peuvent, desfois c'est juste un peu court.

  10. #10
    Membre régulier Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Points : 73
    Points
    73
    Par défaut
    Il va être content mon prof

    Pour essayer de prendre sa défense c'est un exercice sur les instructions et il a peut être essayé de montrer ce qu'on pouvait faire avec le for

    par contre vous pouvez me montrer où se situent les erreurs et comment faire pour que ça fonctionne ?
    j'ai bien compris que l'empploi du for de cette manière n'est pas à conseiller

  11. #11
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    La reponse depend de ma precedente question : qu'entend tu exactement par sous sequence ?


    ? Je t'ai juste indiqué ou etait le probleme ^^
    Et diogene a retranscrit ton code en lisible, mais ca reste ton code, normal que ca marche pas.

    Pour info, combien de sous sequence croissante on a ici ?


    1
    2
    3
    4
    5
    0
    Une ou quatre ?
    La solution est plus complexe a avoir que tu ne le pense si c'est une.

  12. #12
    Membre régulier Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Points : 73
    Points
    73
    Par défaut
    Il n'y en a qu'une
    (j'ai gagné le million ? je plaisante )

    Mais de toute façon quand j'exécute le programme ça me donne toujours 0 comme réponse quelque soit la série de nombres que je tape

  13. #13
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    chicabonux :
    Mais de toute façon quand j'exécute le programme ça me donne toujours 0 comme réponse quelque soit la série de nombres que je tape
    Il faut commencer par corriger le programme. Tel qu'il est construit, lorsqu'on teste if(courant<precedent) on a toujours courant==precedent.
    Trouve pourquoi et corrige l'erreur.

    Pour essayer de prendre sa défense c'est un exercice sur les instructions et il a peut être essayé de montrer ce qu'on pouvait faire avec le for
    C'est possible et tu n'as peut être pas entendu lorsqu'il a (peut être) dit "Ce qu'on peut faire et qu'il ne faut pas faire ..."
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  14. #14
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    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
     
    #include <stdlib.h>
    #include <stdio.h>
     
     
    int main(int argc, char *argv[])
    {
        /* Permet de savoir si c'est une nouvelle serie croissante ou si c'est la continuité de l'ancienne - Agit comme un booleen */
        int suite = 0;
        /* Les chiffre precedent et suivant */
        int precedent,courant;
     
        /* Initialisation de precedent */
        printf("introduire un entier\n");
        scanf("%d",&precedent);
     
     
        int cptr = 0;
        while (courant != 0)
        {
            printf("introduire un entier\n");
            scanf("%d",&courant);
     
     
            if(precedent < courant)
            {
                /* Si c'est une nouvelle suite, on la comptabilise et on indique qu'on a commencer une suite */
                if (!suite)
                {
                    cptr++;
                    suite = 1;
                }
            }
            else
                suite = 0;
     
            precedent=courant;
        }
     
     
        printf("il y a %d sous sequences croissantes\n",cptr);
     
        system("PAUSE");
        return 0;
    }
    Voici le code qui fait ce que tu demande.
    Note l'apparition du booleen "suite".
    Si tu as des question, n'hesite pas.
    Et tu peux jeter le code de ton prof, il est completement erroné commme le fait remarquer diogene.

  15. #15
    Membre régulier Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Points : 73
    Points
    73
    Par défaut
    Oui ou alors je peux très bien aussi avoir fait une erreur dans la copie de son code

    je me remets au travail sur ce programme

    merci sof

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon programme donne un résultat "incorrect"
    Par domxaline dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 07/01/2015, 10h15
  2. Ajout dans une liste donne un résultat erroné
    Par *alexandre* dans le forum Langage
    Réponses: 0
    Dernier message: 18/05/2009, 16h17
  3. crc32() donne un résultat négatif
    Par Hal2001 dans le forum Langage
    Réponses: 1
    Dernier message: 19/04/2006, 18h11
  4. Réponses: 5
    Dernier message: 19/11/2004, 19h16
  5. Résultats erroné différence entre deux types TDateTime
    Par Alghero dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/03/2004, 17h03

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