probleme pour mon programme en C avec CODE BLOKS
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

probleme pour mon programme en C avec CODE BLOKS



  1. #1
    invite686ab133

    probleme pour mon programme en C avec CODE BLOKS


    ------

    bonjour alor voila je suis en 1er anner de GEII et on fait de la programmation en tp informatique industrielle alor voila jai une preparation a faire ,jai fait ma preparation mais je ne suis pas sur du programme ,alor est ce que sa serai possible de me dire si c'est juste et quel sont les erreure :


    ce qu'il faut faire :
    donner les lignes de codes qui permet de saisir un entier A de type unsigned short,puis de tester (en un seul teste) si cet entier est a la fois dans l'intervalle [5;70], mai aussi HORS des intervalles [12;17] et ]35;43].le programme affichera OUI si c'est le cas ,et NON dans le cas contraire :


    ma preparartion :

    oui je sais il ya beaucoup d'erreur :/,je suis debutant ,jai commencer ya 2semaine alor une bonne explication detailler sera la bienvenue,merci.



    Code:
    #include <stdio.h>
    int main ()
    {
    unsigned short  A
    char   choix ;
    printf(" saisir un entier A \n");
    fflush(stdin);
    scanf("%hu",&A)
    printf(" 1 : [5;70] "\n);
    printf(" 2 : [12;17]" \n);
    printf(" 3 : ]35;43] "\n);
    
    switch 
    {
    case'1' : if 
                5>A>70;
                else
                A=65 ;  /c'est la valeur entier en decimal du char A/
               printf("%hu \n" A);
               break;
    case '2' : if
                12>A>17;
                else
                A=NON ;  
               printf("%hu \n" A);
              break;
    case '3' : if
     5>A>70;
                else
                A=NON
               printf("%hu \n" A);
    
    
    }
    returne 0;
    }




    oui je sais il ya beaucoup d'erreur :/,je suis debutant ,jai commencer ya 2semaine alor une bonne explication detailler sera la bienvenue,merci.

    passer une bonne soirer

    -----
    Dernière modification par Jack ; 23/09/2012 à 09h58. Motif: Ajout balises code

  2. #2
    Jack
    Modérateur

    Re : probleme pour mon programme en C avec CODE BLOKS

    Bonjour,

    remarque d'ordre général: respecter les règles de fonctionnement du forum. En tête du forum programmation, on trouve les consignes suivantes:
    http://forums.futura-sciences.com/programmation-langages-algorithmique/441632-regles-participatives-nouveau-forum.html

    Donc, par respect pour ceux qui vont t'aider, facilite-leur la lecture de ton code en le plaçant entre des balises code, ce qui permet de faire apparaître l'indentation.

    Concernant le problème proprement dit, la question dit bien de tester EN UN SEUL TEST. Donc un seul "if" et pas de "switch". Il va donc falloir écrire une expression logique à base d'opérateurs logiques.

    Pour le reste, il va falloir revoir la syntaxe du C en détail:
    Code:
    printf(" 1 : [5;70] "\n);
    \n mal placé

    Code:
    printf(" 1 : [5;70] "\n);printf(" 2 : [12;17]" \n);
    printf(" 3 : ]35;43] "\n);
    Si l'utilisateur du programme comprend dans quel intervalle doit être le nombre, il est fort. Ce n'est pas de la programmation à ce niveau-là, c'est du simple bon sens.

    Code:
    switch {
    case'1' : if 
                5>A>70;
    Revois la syntaxe du "switch", il manque le sélecteur de cas. réfléchis, tu écris case '1', il faudrait au moins savoir ce qui doit valoir '1'. Le programme ne peut pas l'inventer.
    Après un "if", la condition dit être entre parenthèses.
    5>A>70 est impossible en C => il faut décomposer en 2 expressions logiques et un opérateur logique.

    Code:
               printf("%hu \n" A);
    Fais attention! Il faut être rigoureux avec la syntaxe: il faut une virgule entre la chaîne de formatage et la variable.

    etc.

    Code:
    returne 0;
    sans commentaire ... si tu ne fais pas un peu plus attention à la syntaxe, tu n'y arrivera jamais.

    Enfin bref, il faut tout revoir en détail, en commençant par les bases. Le site du zéro ou developpez par exemple proposent de bons tuto.

    Si je peux me permettre une dernière remarque: si tu as des difficultés, n'essaie pas d'écrire un programme complet avant de le tester. Commence par écrire les instructions de saisie et teste. Lorsque ça marche, écris le teste de l'intervalle, etc.

    Sers-toi du debugger pour mettre au point le programme. Celui de code::blocks n'est pas mal fait.

    Lis bien également les messages d'erreur renvoyés par le compilateur, ça t'aiguillera vers le type d'erreur rencontré.

    A+

  3. #3
    HGP

    Re : probleme pour mon programme en C avec CODE BLOKS

    Faire sur un seul test :
    if ( ( 12 <= a && a <= 35) || ( 68<= a && a <= 99) || (...) || ....) {
    instruction à faire quand le test est vrai
    }
    else{
    instruction à faire quand le test est faux
    }

    && = opérateur logique ET
    || = opérateur logique OU

    il y a aussi l'opérateur ternaire :
    ( ( 12 <= a && a <= 35) || ( 68<= a && a <= 99) || (...) || ....) ? instruction à faire quand le test est vrai : instruction à faire quand le test est faux

    cdt

  4. #4
    Zartan

    Re : probleme pour mon programme en C avec CODE BLOKS

    Bonjour,

    voici une astuce quand on est perdu dans les erreurs de syntaxe, on commence par tout mettre en commentaires:

    Code:
    #include <stdio.h>
    int main ()
    {
    /*
    unsigned short  A
    char   choix ;
    printf(" saisir un entier A \n");
    fflush(stdin);
    scanf("%hu",&A)
    printf(" 1 : [5;70] "\n);
    printf(" 2 : [12;17]" \n);
    printf(" 3 : ]35;43] "\n);
    
    switch 
    {
    case'1' : if 
                5>A>70;
                else
                A=65 ;  /c'est la valeur entier en decimal du char A/
               printf("%hu \n" A);
               break;
    case '2' : if
                12>A>17;
                else
                A=NON ;  
               printf("%hu \n" A);
              break;
    case '3' : if
     5>A>70;
                else
                A=NON
               printf("%hu \n" A);
    
    
    }
    returne 0;
    */
    }
    et ensuite on avance en dé-commentant ligne par ligne (ou par dichotomie si on connaît la méthode).

    C'est pratique quand on a oublié une parenthèse dans une fonction de plusieurs centaines de ligne

  5. A voir en vidéo sur Futura

Discussions similaires

  1. langage C: problème avec mon programme
    Par invite8b421ec7 dans le forum Programmation et langages, Algorithmique
    Réponses: 30
    Dernier message: 19/07/2011, 20h55
  2. Probleme avec mon programme
    Par invite46ba2680 dans le forum Programmation et langages, Algorithmique
    Réponses: 40
    Dernier message: 12/03/2011, 21h35
  3. Comment interagir avec mon programme ?
    Par invitef397beb4 dans le forum Électronique
    Réponses: 2
    Dernier message: 02/03/2011, 08h34
  4. probleme de compilation pour mon programme
    Par invite2d201af9 dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 15/08/2009, 18h58
  5. Problème avec un programme "injecteur de code"
    Par invite87912a33 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 18/04/2006, 09h05