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 :

Re struct


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 6
    Par défaut Re struct
    Bonsoir à tous !

    J'ai un problème de structure et d'affichage de tableau !
    J'ai effectué un prog qui fait rentrer un contenu de tableau l'index et le num de secu !
    Puis je veux afficher le tableau puis faire une recherche par index !
    le code est le suivant :

    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
    #include <stdio.h>
     
     
    int remplirtableau(int classe[6][2]){
    int i,j;
    for(i=0;i<6;i++){
    printf("%s","entrez l'index suivi du num de secu""\n");
    for(j=0;j<2;j++){
     
    scanf("%d",&classe[i][j]);}
    }
    return(0);
    }
     
     
    int affichertableau(int classe[6][2]){
    int i,j;
    for(i=0;i<6;i++){
    printf("%s""\n");
    for(j=0;j<2;j++){
    printf("%d","classe[6][2]");}
    }
     
    return(0);
    }
     
    int recherche(int classe[6][2]){
    int i,numero;
     
    printf("%s","Entrez l'index à chercher""\n");
    scanf("%d",&numero);
     
    i=0;
    while (numero != classe[i][0]) {
    i++;
    }
    printf ("Voici le num :%d",classe[i][1]);
     
    return(0);
    }
     
     
     
    int main(){
     
    int classe[6][2];
     
    remplirtableau(classe);
     
    affichertableau(classe);
     
    recherche(classe);
     
    return(0);
     
    }


    Le prob est le suivant :

    -le prog n'affiche pas correctement le tableau


    Dans un deuxième temps je souhaite rajouter une colonne qui me donne un nom d'élève !

    je veux déclarer une structure du style
    typedes struct el
    int index;
    int numsecu;
    char Nom[20
    élève;

    eleve classe[6]]

    Que dois je modifier dans mon code pour inclure la strucuture et pour que l'affichage, l'insertion,et la recherche soit la même?
    Quel doit être le nouveau code?

  2. #2
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 380
    Billets dans le blog
    1
    Par défaut
    Bonjour à toi !
    -le prog n'affiche pas correctement le tableau
    Beaucoup trop imprécis. Si tu nous disais ce que d'abord tu attends de ton programme et ensuite ce que tu obtiens réellement, cela serait déjà bien plus précis.

    Maintenant, ton code en détails :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%s","entrez l'index suivi du num de secu""\n");
    Pourquoi utiliser %s ici ? Pourquoi séparer le \n du reste de la chaîne ? Il est bien plus simple de faire printf("entrez l'index suivi du num de secu\n") voire simplement puts("entrez l'index suivi du num de secu").

    Ici, cette manie de séparer les \n a créé un bug. Si je traduis ce que va voir le compilateur, cela sera : printf("%s\n");, c'est-à-dire un printf() avec un argument chaîne qui n'est pas fourni. Une très grosse erreur. Pour un simple retour à la ligne, autant faire simple : putchar('\n')

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%d","classe[6][2]")
    Grosse erreur encore. Regarde bien ce que tu cherches à faire... Tu demandes à printf() d'afficher un entier, et tu lui passes... une chaîne de caractères contenant le nom de la variable ! Sans les guillemets, ça sera déjà mieux.

    Ta fonction recherche() ne gère pas du tout le cas où la valeur recherchée n'existe pas dans le tableau. Cela conduira à un comportement indéterminé. Il ne faut jamais oublier de traiter les erreurs !

    Pourquoi tu déclares tes fonctions en renvoyant un int ? Tu ne te sers jamais de la valeur de retour. Il faut déclarer tes fonctions pour retourner "void" (excepté pour main qui doit réellement retourner un int).

    Je ne sais pas quel compilateur tu utilises, mais tu devrais absolument afficher les avertissements, ils t'aideraient à découvrir ce genre de problèmes. Pour gcc, le minimum est d'utiliser l'option -Wall.

    Honnêtement, l'indentation est à revoir. Aucune indentation et placement anarchique des accolades : ton code est très difficile à lire.

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

Discussions similaires

  1. Struct et Sequence: Mapping en C++
    Par Marc_S dans le forum CORBA
    Réponses: 1
    Dernier message: 02/11/2004, 14h45
  2. struct ?
    Par bart64 dans le forum C
    Réponses: 5
    Dernier message: 10/11/2003, 23h08
  3. qsort avec un struct* ?
    Par hpfx dans le forum MFC
    Réponses: 11
    Dernier message: 06/10/2003, 18h29
  4. Unrecognized option -fnative-struct
    Par copyallright dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 01/05/2003, 12h25
  5. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25

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