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 :

problème inconnu dans mon code


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 16
    Points : 9
    Points
    9
    Par défaut problème inconnu dans mon code
    Bonjour.
    J'apprend le c de mon coté depuis quelque jours en parallèle de mes cours de vb. Et je me suis fixer comme exercice de faire un programme qui convertie un nombre dans une base a une autre. mon programme et diviser en deux, l'une quant les deux base sont inférieur ou egal a 10. et l'autre quant c'est pas le cas (la premiére posibilité étant la plus simple vu que il n'y a pas besoin d'utiliser d'autre caractère que les nombre classique) donc pour cette premiére possibilité j'utilise la méthode des division successive. mon code ressemble a ça :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    int main()
    {
        int depart, arriver=0, Base1, Base2, i=0;
     
        printf("dans quel base est le nombre que vous voulez convertire ?\n");
        scanf("%d", &Base1);
        printf("dans quel base voulez vous le convertire ?\n");
        scanf("%d", &Base2);
        printf("Quel est ce nombre ?\n");
        scanf("%d", &depart);
        while(depart!= 0);
        {
            arriver = arriver + ((depart % Base2)*pow(Base2,i));
            depart = depart / Base2;
            i++;
        }
        printf("%d", arriver);
        return 0;
    }
    Hors pour une raison que je n'arrive pas a comprendre, aprés la ligne 15, le programme plante. il ne se ferme pas, n'envoie pas d'erreur. comme si il tournais en boucle. J'ai tester avec un printf au tout début du while et il ne rentre même pas dans la boucle. Avez vous une idée de mon erreur ?
    Merci beaucoup d'avoir prêter attention a mon message.

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    Le problème est donc ligne 16. Et elle ne devrait pas avoir de point-virgule.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Nan mais sérieusement je me déteste quant je remarque pas des truc pareil XD
    d'ailleurs j'aurais penser que ce genre de chose ne passerais pas a la compilation...

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Mathathias Voir le message
    d'ailleurs j'aurais penser que ce genre de chose ne passerais pas a la compilation...
    Pourquoi ? Les boucles auto-suffisantes existent et sont donc autorisées. Ce n'est donc pas une erreur détectable par le compilateur. Et tu aurais écrit while (depart != 0) { (notation K&R) tu n'aurais pas pu te tromper.
    Accessoirement, c'est "j'aurais pensé" (participe passé puisque l'action est terminée) ainsi que "j'ai testé". Le verbe "convertir" ne prend pas de "e" (ce n'est pas un adjectif qu'on accorde et de toute façon "nombre" étant masculin il n'y avait pas besoin d'accorder au féminin) en revanche, comme "base" est féminin, c'est "quelle base". Ce n'est pas parce que tu as quitté l'école que l'orthographe est devenu obsolète, surtout sur un forum où tout se fait par écrit. "a essayé" et "à essayer" n'ont absolument pas la même signification même si on les entend pareil.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Pourquoi ? Les boucles auto-suffisantes existent et sont donc autorisées. Ce n'est donc pas une erreur détectable par le compilateur. Et tu aurais écrit while (depart != 0) { (notation K&R) tu n'aurais pas pu te tromper.
    Accessoirement, c'est "j'aurais pensé" (participe passé puisque l'action est terminée) ainsi que "j'ai testé". Le verbe "convertir" ne prend pas de "e" (ce n'est pas un adjectif qu'on accorde et de toute façon "nombre" étant masculin il n'y avait pas besoin d'accorder au féminin) en revanche, comme "base" est féminin, c'est "quelle base". Ce n'est pas parce que tu as quitté l'école que l'orthographe est devenu obsolète, surtout sur un forum où tout se fait par écrit. "a essayé" et "à essayer" n'ont absolument pas la même signification même si on les entend pareil.
    Je sais bien que l'orthographe n'est pas obsolète (et je n'ai pas quitter l'école je suis en BTS SIO) J'essaye vraiment de faire de mon mieux sur l'orthographe et la grammaire, je prend des cours particulier depuis des année etc Mais malgré tout j'ai beaucoup de mal a progresser. Mais je relis toujours mes messages pour essayer de trouver toutes les fautes que je vois.
    qu'est ce qu'une boucle auto-suffisantes ? j'ai commencer depuis très peut de temps le c je suis un débutant. Et qu'est ce que la notation K&R, pour le coup j'ai écris comme on me la appris.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mathathias Voir le message
    qu'est ce qu'une boucle auto-suffisantes ?
    C'est une boucle qui contient tout ce dont elle a besoin pour faire le job et n'a donc besoin d'aucune autre instruction. Exemple (pour compter le nombre de caractères d'une chaine): for (i=0; c[i] != '\0'; i++); (en admettant que "c" contient la chaine à compter). Quand la boucle se termine, la variable "i" contient le nombre de caractères et le point-virgule est là obligatoire.

    Citation Envoyé par Mathathias Voir le message
    Et qu'est ce que la notation K&R
    Kernighan et Ritchie (les concepteurs du C). Ils ont aussi donné des conseils d'écriture pour essayer de limiter le risque d'erreur. Par exemple l'accolade toute seule sur sa ligne ne sert à rien, et dans ce cas précis, ça aurait pu t'éviter de faire cette erreur.

    Citation Envoyé par Mathathias Voir le message
    J'essaye vraiment de faire de mon mieux sur l'orthographe et la grammaire
    Ok, accroche-toi, c'est vraiment important
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    intéressant, merci je retient !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Citation Envoyé par Mathathias Voir le message
    d'ailleurs j'aurais penser que ce genre de chose ne passerais pas a la compilation...
    Le code est syntaxiquement correct, donc pas d'erreur. Mais si tu demandes gentiment à ton compilateur, il peut tout de même te prévenir de ce genre d'étourderie (et bien d'autres) :

    GCC avec l'option -Wall :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    main.c: In function 'main':
    main.c:16:5: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
       16 |     while(depart!= 0);
          |     ^~~~~
    main.c:17:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
       17 |     {
          |     ^
    Clang quand à lui le fait de base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    main.c:16:22: warning: while loop has empty body [-Wempty-body]
        while(depart!= 0);
                         ^
    main.c:16:22: note: put the semicolon on a separate line to silence this warning

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

Discussions similaires

  1. De nouveau problème cornélien dans mon code
    Par ochey54 dans le forum Arduino
    Réponses: 2
    Dernier message: 08/11/2018, 21h14
  2. Etrange problème rencontré dans mon code.
    Par bernardmichel dans le forum VBA Access
    Réponses: 8
    Dernier message: 17/09/2015, 05h13
  3. Problème inconnu dans mon code
    Par mouchT8 dans le forum C
    Réponses: 5
    Dernier message: 17/05/2008, 20h52
  4. [Upload] Problème pour uploader un fichier dans mon code
    Par Peuplarchiste dans le forum Langage
    Réponses: 2
    Dernier message: 27/05/2006, 09h48
  5. Problème de paramètres dans mon code javascript
    Par cocacollection dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/03/2006, 10h53

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