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 :

Affichage des étudiants


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Affichage des étudiants
    Bonjour j'ai une problème dans un programme je vous demande de m'aider:
    voilà le prog je veux afficher ces deux taches:
    (Afficher les étudiants admet
    Afficher les étudiants d'une filiairexxw)


    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
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    typedef struct date_Nais
    {
        int J;
        int M;
        int A;
    }date_Nais;
     
    typedef struct ETUDIANT
    {
        char nom[10],prenom[10],ville[100];
        int ID;
        float moy;
        date_Nais dtn;
    }ETUDIANT;
     
    int main()
    {
        ETUDIANT E1[100];
        date_Nais dn;
        int ch,ne,i,n;
        char rep,n1,n2;
    printf("MENU GENERAL : \n");
    printf("1-	ajouter un etudiant \n");
    printf("2-	afficher un etudiant(id) \n");
    printf("3-	ajouter plusieurs etudiants\n");
    printf("4-	recherche d un etudiants(id) \n");
    printf("5-	recherche d un etudiants(nom) \n");
    printf("6-	recherche d un etudiants(prenom) \n");
    printf("7-	Afficher les etudiants admet \n");
    printf("8-	trier les etudiants selon la moyenne \n");
    printf("7-	quitter\n");
     
    do
    {
     
    printf("entrez votre choix : ");
    scanf("%d",&ch);
    switch(ch){
    case 1:
            printf(" AJOUTER UN ETUDIANT\n");
            printf("======================\n");
            printf("donnez l\'\ ID de l\'\etudiant : ");
        scanf("%d",&E1[i].ID);
            printf("donnez le nom de l\'\etudiant : ");
        scanf("%s",E1[i].nom);
            printf("donnez le prenom  de l\'\etudiant : ");
        scanf("%s",E1[i].prenom);
            printf("donnez le jour de l\'\etudiant : ");
        scanf("%d",&E1[i].dtn.J);
            printf("donnez le mois de l\'\etudiant : ");
        scanf("%d",&E1[i].dtn.M);
            printf("donnez l\'\annee de l\'\etudiant : ");
        scanf("%d",&E1[i].dtn.A);
            printf("donnez la ville  de l\'\etudiant : ");
        scanf("%s",E1[i].ville);
        printf("donnez la moyenne de l\'\etudiant : ");
        scanf("%f",&E1[i].moy);
        break;
    case 2:
        printf("\n AFFICHER UN ETUDIANT\n");
        printf("======================\n");
        printf("ID\t\t nom\t\t prenom\t\t dtns\t\t ville\t\t moyenne\n");
        printf("%d\t\t %s\t\t %s\t\t %d/%d/%d\t %s\t\t%f\t\t ",E1[i].ID,E1[i].nom,E1[i].prenom,E1[i].dtn.J,E1[i].dtn.M,E1[i].dtn.A,E1[i].ville,E1[i].moy);
    break;
    case 3:
        printf(" AJOUTER PLUSIEUR ETUDIANTS\n");
        printf("============================\n");
        printf("le nbre des etudiants a ajouter");
        scanf("%d",&ne);
        for(i=1;i<=ne;i++)
        {
                    printf("donnez l\'\ ID de l\'\etudiant : ");
        scanf("%d",&E1[i].ID);
            printf("donnez le nom de l\'\etudiant : ");
        scanf("%s",E1[i].nom);
            printf("donnez le prenom  de l\'\etudiant : ");
        scanf("%s",E1[i].prenom);
            printf("donnez le jour de l\'\etudiant : ");
        scanf("%d",&E1[i].dtn.J);
            printf("donnez le mois de l\'\etudiant : ");
        scanf("%d",&E1[i].dtn.M);
            printf("donnez l\'\annee de l\'\etudiant : ");
        scanf("%d",&E1[i].dtn.A);
            printf("donnez la ville  de l\'\etudiant : ");
        scanf("%s",E1[i].ville);
        printf("donnez la moyenne de l\'\etudiant : ");
        scanf("%f",&E1[i].moy);
        }
        break;
    case 4:
        printf("\n AFFICHER PLUSIEURS ETUDIANTS\n");
        printf("=================================\n");
        printf("ID\t\t nom\t\t prenom\t\t dtns\t\t ville\t\t moyenne\n");
        for (i=1;i<=ne;i++)
        {
            printf("%d\t\t %s\t\t %s\t\t %d/%d/%d\t %s\t\t%f\t\t ",E1[i].ID,E1[i].nom,E1[i].prenom,E1[i].dtn.J,E1[i].dtn.M,E1[i].dtn.A,E1[i].ville,E1[i].moy);
        }
    break;
    case 5:
        printf("\n RECHERCHE D UN ETUDIANT PAR ID\n");
        printf("===================================\n");
        printf("entre le numero de l etudiant : ");
        scanf("%d",&n);
        if (E1[i].ID==n)
        {
            printf("l etudiant n %d est %s %s",E1[i].ID,E1[i].nom,E1[i].nom);
        }
    break;
    case 6:
        printf("\n RECHERCHE D UN ETUDIANT PAR nom\n");
        printf("===================================\n");
        printf("entre le nom de l etudiant : ");
        scanf("%s",&n1);
        if (E1[i].nom=='n1')
        {
            printf("l etudiant %s a l identifiant : %d",E1[i].nom,E1[i].ID);
        }
    break;
    case 7:
        printf("\n RECHERCHE D UN ETUDIANT PAR nom\n");
        printf("===================================\n");
        printf("entre le nom de l etudiant : ");
        scanf("%s",&n2);
        if (E1[i].prenom=='n2')
        {
            printf("l etudiant %s a l identifiant : %d",E1[i].prenom,E1[i].ID);
        }
    break;
    case 8:
        printf("")
    }
    printf("\nvoulez vous continuez O/N : ");
    scanf("%s",&rep);
    }
    while(rep=='o');
        return 0;
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 330
    Points : 4 151
    Points
    4 151
    Par défaut Un problème ?
    Bonjour,

    Des problèmes, il me semble y en avoir énormément. Pour ne citer que quelques uns...

    A la fin (ligne 136) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    printf("\nvoulez vous continuez O/N : ");
    scanf("%s",&rep);
    }
    while(rep=='o');
        return 0;
    }
    a. on compare une chaine à un caractère
    b. si la comparaison était bonne on passerait dans une boucle sans fin (si c'est vrai au premier passage, comme on ne fait rien dans la boucle while...)
    c. on indique que la réponse doit être un O majuscule et on teste un o minuscule

    Un peu avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     scanf("%s",&n2);
        if (E1[i].prenom=='n2')
    a. 'n2' générera une erreur (jamais compilé ?) puisque c'est censé être un caractère (' oblige) composé de 2 caractères.
    b. "n2" ne générerait pas d'erreur mais n'aurait pas plus d'intérêt puisque ne correspondant en rien à la chaîne saisie dans n2
    c. n2 sans rien autour aurait plus de chances d'être utile mais la comparaison stricte se heurtera aux rejets des chaînes de caractères identiques mais de casses différentes.

    Etc.

    Quand on débute, faire tourner le programme "à la main" permet déjà de lever beaucoup d'erreurs.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  3. #3
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonsoir,
    Citation Envoyé par Guesset Voir le message

    a. on compare une chaine à un caractère
    b. si la comparaison était bonne on passerait dans une boucle sans fin (si c'est vrai au premier passage, comme on ne fait rien dans la boucle while...)

    c. on indique que la réponse doit être un O majuscule et on teste un o minuscule
    Attention il y a une petite erreur dans votre explication : rep n'est pas une chaîne, mais une variable de type caractère déclaré plus haut (ligne 25: char rep,n1,n2) que l'on ne doit pas confondre avec une chaîne de caractères identifiables en langage C par un tableau de caractère. Ici l'erreur, c'est d'utiliser une chaîne de contrôle erroné (chaîne de format). C'est-à-dire scanf("%s", argX) au lieu de scanf("%c", argX). car, c'est la chaîne de contrôle qui indique le bon format dans lequel les données lues sont/seront converties, et même en se trompant, la variable de type char ne se transformera pas en une chaîne de caractère (sans parler du fait qu'il ne faut absolument pas utiliser la fonction scanf sans que l'on spécifie clairement l'indicateur de format et celui de la "taille" de la chaîne de caractères).

    à bientôt.
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

  4. #4
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 330
    Points : 4 151
    Points
    4 151
    Par défaut Mea culpa
    Bonjour Sambia39,

    Citation Envoyé par sambia39 Voir le message
    Attention il y a une petite erreur dans votre explication : rep n'est pas une chaîne, mais une variable de type caractère déclaré plus haut
    Dont acte. Je n'avais pas regardé la déclaration initiale, seulement l'incohérence entre le scanf et le type du test.

    En revanche, même ceci corrigé, la remarque b reste valide : le while ne fait rien et entrera en boucle infinie si la condition est valide.

    Bon weekend.
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

Discussions similaires

  1. [Python 3.X] Problème de prog python 3.x
    Par hcI_Prog dans le forum Général Python
    Réponses: 2
    Dernier message: 12/04/2016, 17h34
  2. Problème affichage prog en dos/invite commande
    Par melofilo dans le forum Windows XP
    Réponses: 7
    Dernier message: 13/09/2010, 14h52
  3. Problème RPC prog C#
    Par TomDuBouchon dans le forum C#
    Réponses: 0
    Dernier message: 21/06/2010, 16h40
  4. Petit problème avec prog perl
    Par lavm01 dans le forum Langage
    Réponses: 1
    Dernier message: 30/07/2007, 22h56
  5. Problème avec prog modifiant la date et l'heure système
    Par eldesir dans le forum Assembleur
    Réponses: 1
    Dernier message: 19/01/2007, 20h39

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