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 :

pb en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Par défaut pb en c
    slt tout le monde.
    alors j'ai une question a posé:et merci d'avance pour vos reponse
    j'ai un programme qui doit m'affiché des erreur en cas si je le donne un nombre pas equivalent de ce qu'il doit avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    printf("entrer le nbre de sommets:\n");
    scanf("%d",&ns);
    if(ns>100)
    printf("depassement de capacité\n");
    c une partie du programme ou je doit pas avoir un nombre superieur a 100 et en cas de l'avoir je doit ecrire depassement de capacité et sortir directement du programme .alors comment faire?merci

  2. #2
    Membre très actif Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Par défaut
    un petit return ?! style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (code == !erreur){
      printf ("depassement!");
       return -1;
    }
    sinon évite scanf, et met un titre explicite lol
    Compil your life guy!
    The Aures Project

  3. #3
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut
    salut,

    utilise plutot fgets que scanf --> regarde sur le forum, le sujet test souvent abordé !!

    Pour quitter ton programme, utilises exit(0) !!

  4. #4
    Membre éclairé
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par défaut Re: pb en c
    Tu mets tout ton code dans un do while(0):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    do
    {
      printf("entrer le nbre de sommets:\n");
      scanf("%d",&ns);
      if(ns>100)
      {
        printf("depassement de capacité\n");
        break;
      }
    }
    while(0);

  5. #5
    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 Re: pb en c
    Citation Envoyé par l_seringa
    j'ai un programme qui doit m'affiché des erreur en cas si je le donne un nombre pas equivalent de ce qu'il doit avoir
    Tu t'es relu ? Tu peux le refaire en français ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    printf("entrer le nbre de sommets:\n");
    scanf("%d",&ns);
    if(ns>100)
    printf("depassement de capacité\n");
    C'est pas trop mal. Visiblement, et comme 99% des codeurs, tu ne sais pas utiliser scanf(), alors je te conseille d'utiliser fgets() + strtol().
    c une partie du programme ou je doit pas avoir un nombre superieur a 100 et en cas de l'avoir je doit ecrire depassement de capacité et sortir directement du programme .alors comment faire?
    Déjà, il faut soigner l'ergonomie en incitant le singe placé devant le clavier à refréner ses ardeurs...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf ("entrer le nbre de sommets (max 100):\n");
    On te demande vraiment de sortir directement ? C'est crade...
    inclure <stdlib.h>

  6. #6
    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 Re: pb en c
    Citation Envoyé par barthelv
    Tu mets tout ton code dans un do while(0):
    C'était pas évident, mais le monsieur, il a dit :
    sortir directement du programme
    et puis un do-while(0), ça va pas boucler beaucoup... C'est quoi le but ? Mettre un break ?

  7. #7
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut Re: pb en c
    Citation Envoyé par barthelv
    Tu mets tout ton code dans un do while(0):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    do
    {
      printf("entrer le nbre de sommets:\n");
      scanf("%d",&ns);
      if(ns>100)
      {
        printf("depassement de capacité\n");
        break;
      }
    }
    while(0);
    Il est où l'interêt de ta boucle ? Le seul moment ou je pense qu'elle est utile c'est dans une macro mais ici nous en sommes loin...

    Pour quitter ton programme, utilises exit(0) !!
    Non, il faut éviter les valeurs en dur, si un jour tu tombes sur un système ou 0 n'a pas la même signification que tu le pensais tu n'aura peut être pas le même comportement que prévu...

    Utilise EXIT_SUCCESS ou EXIT_FAILURE à la place qui sont des valeurs plus explicites que 0 ou 1 ... . De plus comme l'a précisé l_seringa, le programme doit renvoyer une erreur et là il me semble que ce que tu as voulu renvoyer c'est que tout c'était bien passé... comme quoi !

  8. #8
    Membre averti
    Inscrit en
    Février 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 70
    Par défaut
    Il est clair que la boucle de barthelv ne sert pas à grand chose.

    Et puis ça mange pas de pain de respecter la langue :
    printf("D%cpassement de capacit%c !", 130, 130);

    Enfin, si tu es sous windows l_seringa, utilises un petit getch(); à la fin de ton programme pour constater ce message d'erreur.

  9. #9
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Et puis ça mange pas de pain de respecter la langue :
    printf("D%cpassement de capacit%c !", 130, 130);


    C'est dans quel manuel ça ?

    Enfin, si tu es sous windows l_seringa, utilises un petit getch();
    Et ben de mieux en mieux ! pourquoi utiliser une fonction non portable ?

  10. #10
    Membre averti
    Inscrit en
    Février 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 70
    Par défaut
    Citation Envoyé par PRomu@ld


    C'est dans quel manuel ça ?
    Ah ? Il existe une meilleur façon d'afficher les accents que d'utiliser la table ascii ?
    Et ben de mieux en mieux ! pourquoi utiliser une fonction non portable ?
    C'est juste pour apprécier la totalité du programme, puisqu'une fenêtre dos se referme automatiquement à la fin du fichier (le message d'erreur n'aurait pas été visible). Que veux-tu dire par non portable ? Ca marche très bien pour une utilisation scolaire classique windows/linux.

  11. #11
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Il existe une meilleur façon d'afficher les accents que d'utiliser la table ascii ?
    Rien de standard, rien ne prédit que la sortie soit en ascii en fait. De plus j'ai un doute sur tes codes, mais néanmoins, si tu veux t'en convaincre, en utilisant ton instruction j'ai en sortie :

    D?passement de capacit? !
    Comme quoi ...

    C'est juste pour apprécier la totalité du programme, puisqu'une fenêtre dos se referme automatiquement à la fin du fichier (le message d'erreur n'aurait pas été visible).
    Tout dépend de l'IDE que tu utilises, VC pour ne citer que lui ne ferme pas les fenêtres dos sous windows ...

    Que veux-tu dire par non portable ?
    Qu'il s'agit d'une chose que tu ne pourras pas utiliser sur tous les systèmes qui supporte le C.

    Ca marche très bien pour une utilisation scolaire classique windows/linux.
    Ca n'est pas une raison (quoique sous linux j'ai un doute mais n'ayant pas de machine à portée, je n'en parlerais pas), il ne faut pas oublier que le C est utilisé sur d'autres système ...

  12. #12
    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 babar56
    C'est dans quel manuel ça ?
    Ah ? Il existe une meilleur façon d'afficher les accents que d'utiliser la table ascii ?
    Déjà y'a pas d'accents dans la table ASCII...
    Et ben de mieux en mieux ! pourquoi utiliser une fonction non portable ?
    C'est juste pour apprécier la totalité du programme, puisqu'une fenêtre dos se referme automatiquement à la fin du fichier (le message d'erreur n'aurait pas été visible).
    Question d'IDE (Code::blocks gère problème correctement) ou de raccourci Windows (décocher 'fermer en quittant')
    Que veux-tu dire par non portable ? Ca marche très bien pour une utilisation scolaire classique windows/linux.
    getch() n'est pas une fonction standard du C. Elle peut exister ou non sur telle ou telle plateforme...

    Celle des unixoïdes ([n]curses) n'a pas forcément le même comportement que celle de DOS/Windows (conio).

  13. #13
    Membre averti
    Inscrit en
    Février 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 70
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Déjà y'a pas d'accents dans la table ASCII...
    Je ne vois pas l'intérêt de jouer sur les mots ... Dans les expressions "table ascii étendue" ou "extended ascii table" il y a les mots table ascii.

    getch() n'est pas une fonction standard du C.
    Peu importe, c'est très bien dans l'absolue de traiter tous les cas possibles mais en l'occurence c'est complètement inutile, j'ai testé cette fonction sur de nombreuses plateformes différentes et je n'ai jamais constaté d'erreur de compilation. Trouves-moi donc une configuration courante où ça ne passe pas qu'on rigole ...

  14. #14
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut
    Ne te vexe pas comme ca babar56 !!
    Sur le forum, on reste cool, et on fait ce qu'on veut dans son code en fonction des réponses des autres.

  15. #15
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Trouves-moi donc une configuration courante où ça ne passe pas qu'on rigole ...
    Tout simplement tous les unix/linux qui n'ont pas la bibliothèque ncurses d'installé ...

    Je ne vois pas l'intérêt de jouer sur les mots ...
    Ca n'est pas jouer sur les mots, cela s'appelle l'exactitude, c'est extremement important en programmation et même dans la vie de tous les jours, ça évite les confusions/méprises...

    l'occurence c'est complètement inutile
    Tu ne vois ceci que de ton point de vu, il est préférable d'utiliser au maximum les fonctions du C de façon à limiter les dépendances vis à vis des autres bibliothèques de fonction. Entre deux programmes qui réalisent la même action (mêmes fonctionnalités), mais l'un requiert une dizaine de bibliothèque et l'autre n'en requiert aucune, mon choix est très vite fait !

  16. #16
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut
    Citation Envoyé par PRomu@ld
    Tu ne vois ceci que de ton point de vu, il est préférable d'utiliser au maximum les fonctions du C de façon à limiter les dépendances vis à vis des autres bibliothèques de fonction.
    Je suis entièrement d'accord, ca permet à l'appli de pouvoir s'exécuter sans soucis sur un système supportant le C standard en n'ayant qu'à ajouter qu'un minimum de lib (ce qui est très impréciable quand on installe quelque chose) !!

    Citation Envoyé par PRomu@ld
    Entre deux programmes qui réalisent la même action (mêmes fonctionnalités), mais l'un requiert une dizaine de bibliothèque et l'autre n'en requiert aucune, mon choix est très vite fait !
    Le mien aussi

  17. #17
    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 PRomu@ld
    Trouves-moi donc une configuration courante où ça ne passe pas qu'on rigole ...
    Tout simplement tous les unix/linux qui n'ont pas la bibliothèque ncurses d'installé ...
    Ou les plateformes Wintel celles qui n'ont pas conio installé...

  18. #18
    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 babar56
    getch() n'est pas une fonction standard du C.
    Peu importe, c'est très bien dans l'absolue de traiter tous les cas possibles mais en l'occurence c'est complètement inutile, j'ai testé cette fonction sur de nombreuses plateformes différentes et je n'ai jamais constaté d'erreur de compilation.
    Alors si tu connais tout, il n'y a rien à ajouter. Je ne savais pas qu'on avait affaire à un gourou de niveau 5. Respect!
    Trouves-moi donc une configuration courante où ça ne passe pas qu'on rigole ...
    Tu vas rire, mais je travaille dans une boite d'électronique :

    http://www.aeta.com/

    qui fabrique des équipements pour les télécoms. Depuis 1994, je programme en C sur des plateformes diverses
    • M68302 (68000 Freescale ex-Motorola) avec compilateur Intermetrics
    • M68302 avec compilateur Microtek (MRI)
    • TMS320C54 Texas Instrument avec IDE Code Composer
    • MPC (PowerPC Freescale) avec système PsOS et compilateur DIAB
    • MPC avec système GNU/Linux et compilateur gcc.

    Aucune de ces plateformes ne connait la fonction getch(). Qu'est-ce qu'on se marre !

  19. #19
    Membre averti
    Inscrit en
    Février 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 70
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Depuis 1994
    Elles ont été updatés ces machines depuis 1994 ?

    Si un jour je tombe sur un M68302 je penserai sans doutes à toi (le temps de mettre deux slash devant mon getch(); , soit un quart de seconde). En attendant je travaille sur des machines qui intègrent ce genre de fonctions, et je ne vois pas pourquoi je m'en passerais.

  20. #20
    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 babar56
    Citation Envoyé par Emmanuel Delahaye
    Depuis 1994
    Elles ont été updatés ces machines depuis 1994 ?
    Pourquoi faire ? Elles tournent 24/7 dans les locaux de France Telecom et chez des clients. Taux de retour 1 à 2%...
    Si un jour je tombe sur un M68302 je penserai sans doutes à toi (le temps de mettre deux slash devant mon getch(); , soit un quart de seconde). En attendant je travaille sur des machines qui intègrent ce genre de fonctions, et je ne vois pas pourquoi je m'en passerais.
    Si tu es sûr de la perrénité et de la portabilité, pas de problèmes.

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