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 :

Mauvaise gestion des directives utilisateurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut Mauvaise gestion des directives utilisateurs
    Actuellement, je travaille sur un projet donne en classe.
    J'ai constitue un menu avec switch case ou l'utilisateur devra choisir la tache a effectuer car le programme est multi-tache.
    Et l'affichage du menu doit etre toujours present pour le cas ou l'utilisateur voudrait realiser une action differente.La j'ai fait usage d'une boucle pour afficher le menu de maniere continu.
    Jusque la pas de probleme
    Il va y en avoir au moment ou je veux faire en sorte que l'utilisateur ait fait un mauvais choix
    Vous allez voir ma source

    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "msg.h"
    #include "fct.h"
    #include <conio.h>
    #define BANNIERE printf("\t\t\t**************************\n");\
                     printf("\t\t\t*******  Bienvenue *******\n");\
                     printf("\t\t\t*** Sur le MULTI_TACHE ***\n");\
                     printf("\t\t\t**************************\n\n\n");
     
     
    int main(int argc,char** argv)
    {
        char chx,anag[TAILLECHAR];
        int valfact,combn,combp,i;
        do
        {
            BANNIERE
            menu_prog();
            scanf("%c",&chx);
            fflush(stdin);
            switch(chx)
            {
                case 'a':
                case 'A':{
                            printf("\t\tQue voulez vous ecrire dans votre fichier\n");
                            ecrire_ds_fichier();
                            break;
                            }
                case 'b':
                case 'B':{
                            affich_from_fichier();
                            break;
                            }
                case 'c':
                case 'C':{
                						printf("\t\tEntrez la valeur dont vous voulez calculer la factoriel\n");
    												scanf("%d",&valfact);
    												 printf("\t\tLa factorielle de %d est %ld\n",valfact,facto(valfact));
    												 break;
                            }
                case 'd':
                case 'D':{
    											rap_comb();//position de la fonction pour etre  visible apres pasaj deif
    											do
    											{
    													printf("\t\tEntrez la valeur de p\n");
    													scanf("%d",&combp);
    													printf("\t\tEntrez la valeur de n\n");
    													scanf("%d",&combn);
    													if( combn<combp||combn<0||combp<0 )
    													{
    															printf("\t\tErreur!!! Relire le rappel attentivement\n");
    															printf("\t\tPressez une touche pour continuer\n");
    															system("pause");//system("cls");
     
    													}
    											}while(combn<0||combp<0);
    											printf("\t\tLa combinaison de %d dans %d est: %f\n",combp, combn,comb_2_nb(combn,combp));
    											break;
                            }
                case 'e':
                case 'E':{
    											printf("\t\tEntrez le mot dont vous voulez l'anagramme\n");
    											scanf("%s",anag);
    											printf("\t\tL'anagramme de %s est: ",anag);
    											for(i=strlen(anag);i>=0;i--)
    											{
    											    printf("%c",anag[i]);
    											}
    											printf("\n");
    											break;
                            }
                case 'f':
                case 'F':{
                					date();
                					break;
     
                            }
                case 'g':
                case 'G':{
                                eteindre();
                                break;
                            }
                case 'h':
                case 'H':{
                                break;
                            }
                case 'i':
                case 'I':{
                                break;
                            }
            }
     
            if(chx!='a'||chx!='A'||chx!='b'||chx!='B'||chx!='c'||chx!='C'||chx!='d'||chx!='D'||chx!='e'||chx!='E'||chx!='f'||chx!='F'||chx!='g'||chx!='G'||chx!='h'||chx!='H'||chx!='i'||chx!='I')
            {
                printf("\tCe n'est pase une option valide\n");
                printf("\tVeuillez bien regarder les directives du menu\n");
            }
            system("pause");system("cls");
        }while(chx!='a'||chx!='A'||chx!='b'||chx!='B'||chx!='c'||chx!='C'||chx!='d'||chx!='D'||chx!='e'||chx!='E'||chx!='f'||chx!='F'||chx!='g'||chx!='G'||chx!='h'||chx!='H'||chx!='i'||chx!='I');
        //printf("Hello world!\n");
        system("pause");
        return 0;
    }
    Le probleme c'est le if qui s'excute meme quand l'utilisateur fait un bon choix au menu..
    J'espere que j'ai ete assez clair
    Un grand merci deja a vous pour le temps que vous allez prendre pour visionner ma source.Et aussi pour vos conseils.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut
    je crois que tu t'es trompé dans l'opérateur logique de ta condition. Essaye avec '&&'

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut Merci harta
    Citation Envoyé par harta Voir le message
    je crois que tu t'es trompé dans l'opérateur logique de ta condition. Essaye avec '&&'
    Rire!!!!Rire!!!C'est fou!! C'était vraiment substile comme erreur(algebre de boole)WOOOOWWWW
    L'opérateur logique que j'ai choisi: le "OU"
    Il arrive qu'en faisant un bon choix, ce choix est également différent des autres
    Puisqu'il l'est le IF doit s'executer

    C'est bien de voir ses erreurs

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut
    Ta condition peut s'écrire comme ça aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ( ! ( (chx>='a' && chx<='i') || (chx>='A' && chx<='I'))
    {
        printf("\tCe n'est pase une option valide\n");
        printf("\tVeuillez bien regarder les directives du menu\n");
    }

  5. #5
    Membre émérite
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Par défaut
    Tu devrais sans doute y aller un peu plus doucement avec l'indentation.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut Merci&&Explication
    Citation Envoyé par Kirilenko Voir le message
    Tu devrais sans doute y aller un peu plus doucement avec l'indentation.
    Je voudrais savoir pourquoi je devrais aller mollo avec l'indentation.
    Ce ne serait pas un moyen de rendre ses codes lisibles?
    De mieux se repérer en cas d'erreur?

    Pour le lien?

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Citation Envoyé par alexisleprogrammeur Voir le message
    Je voudrais savoir pourquoi je devrais aller mollo avec l'indentation.
    Ce ne serait pas un moyen de rendre ses codes lisibles?
    De mieux se repérer en cas d'erreur?
    A partir de la case C de ton switch, tu pars trop sur a droite ce qui rend ton code moins lisible.
    Généralement on rajoute une tabulation ou 4 à 8 espaces (selon les préférences) par blocs imbriqués.

  8. #8
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Et, de façon générale, ne mélange pas caractères TAB et espace (j'ai dit caractère, pas touche). L'"apparence" (le rendu) des tabulations se reglent via les préférences des éditeurs et tout le monde ne choisit pas la même valeur : 3, 4, 8 ... Si tu mélanges tab et espace, ton code qui t'apparait propre "chez toi" peut devenir un vrai fouillis quand il est exploité par quelqu'un d'autre.

    Le mieux est de configurer ton éditeur favori pour qu'il génère des caractères espaces en lieu et place des tabulations. Quand ton code est lu par quelqu'un d'autre, sur son propre éditeur, avec ses propres réglages, il n'y a alors aucun problème : un caractère espace est interprété de la même façon partout.

    Ceux qui, en plus du C, développent en Python comprendront tout de suite l'intérêt de procéder de la sorte ...

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut Merci
    Citation Envoyé par harta Voir le message
    Ta condition peut s'écrire comme ça aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ( ! ( (chx>='a' && chx<='i') || (chx>='A' && chx<='I'))
    {
        printf("\tCe n'est pase une option valide\n");
        printf("\tVeuillez bien regarder les directives du menu\n");
    }
    Un grand merci!!
    Mais je préfère remplacer par &&. Vu que je ne comprend pas assez le syntaxe
    Vous pourriez peut-être m'éclaircir un peu?

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    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 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par alexisleprogrammeur Voir le message
    Un grand merci!!
    Mais je préfère remplacer par &&. Vu que je ne comprend pas assez le syntaxe
    Vous pourriez peut-être m'éclaircir un peu?
    Bonjour
    Il s'agit des classiques lois de De Morgan
    Si A et B sont des expressions boolennes, alors
    • non (A ET B) = non(A) OU non(B)
    • non (A OU B) = non(A) ET non(B)


    Exemple: tu veux un nombre entre 5 et 10, alors il faut que ton nombre soit plus grand que 5 ET plus petit que 10. Inversement tu ne veux pas un nombre entre 5 et 10, alors il faut que ton nombre soit plus petit que 5 OU plus grand que 10.

    Autre exemple: il est parfois ecrit "defense de cracher et fumer" ce qui signifie, dans la logique absolue, qu'on peut faire l'un ou l'autre mais pas les deux a la fois. L'auteur de ce genre d'affiche aurait etudie les lois de De Morgan, il aurait ecrit "defense de cracher ou fumer" ce qui se serait traduit alors par "defense de cracher ET defense de fumer"...
    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]

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut Thanks
    Citation Envoyé par Sve@r Voir le message
    Bonjour
    Il s'agit des classiques lois de De Morgan
    Si A et B sont des expressions boolennes, alors
    • non (A ET B) = non(A) OU non(B)
    • non (A OU B) = non(A) ET non(B)


    Exemple: tu veux un nombre entre 5 et 10, alors il faut que ton nombre soit plus grand que 5 ET plus petit que 10. Inversement tu ne veux pas un nombre entre 5 et 10, alors il faut que ton nombre soit plus petit que 5 OU plus grand que 10.

    Autre exemple: il est parfois ecrit "defense de cracher et fumer" ce qui signifie, dans la logique absolue, qu'on peut faire l'un ou l'autre mais pas les deux a la fois. L'auteur de ce genre d'affiche aurait etudie les lois de De Morgan, il aurait ecrit "defense de cracher ou fumer" ce qui se serait traduit alors par "defense de cracher ET defense de fumer"...



    c'est cool je peux dire
    Puisqu'en classe j'ai vraiment suivi le cours d'algèbre de Bool et pas même pendant une seconde je me suis du fameux loi de De Morgan.
    Merci de m'avoir "rafraichi la mémoire" comme on dit bien souvent dans mon pays.

    Thanks

Discussions similaires

  1. gestion des droits utilisateurs par vba
    Par laurent.w dans le forum Sécurité
    Réponses: 14
    Dernier message: 17/01/2007, 08h09
  2. [WD9] gestion des privilèges utilisateurs
    Par dreamland dans le forum WinDev
    Réponses: 3
    Dernier message: 15/01/2007, 16h21
  3. Gestion des comptes utilisateurs
    Par tibal dans le forum Administration
    Réponses: 6
    Dernier message: 10/11/2006, 11h10
  4. gestion des droits utilisateurs struts
    Par ijklm dans le forum Struts 1
    Réponses: 1
    Dernier message: 18/05/2006, 19h17
  5. firefox - mauvaise gestion des passwords
    Par photorelief dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/06/2005, 09h02

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