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 :

un tableau mixte prenom et chiffres


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Par défaut un tableau mixte prenom et chiffres
    Pour declarer une matrice mixte c'est a dire en ayyant pour information des prenoms et des chiffres.

    1- faut - il annoncer le tableau des caracteres seul et apres la matrice int.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    char*name[5];
    int mark[5]
    et de ce fait le compteur serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for(i=0;i<5;i++)
      {
    scanf("%s", name);
       }
      for(j=0;i<5;j++)
         {
    scanf("%d", &mark[j]);
    }

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    matrice mixte
    Impossible en C.
    Il faut faire une structure spécifique.
    scanf("%s", name);
    Non sécurisé.
    Soit on spécifie une taille maximale:
    Ou mieux avec "fgets":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgets(name,sizeof name,stdin);

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char*name[5];
    ....
    scanf("%s", name);
    Ce code n'est pas cohérent : name est du type char ** et non pas char *. on attend plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i=0;i<5;i++)
      {
    scanf("%s", name[i]);
    ....
    Avec les restrictions habituelles sur le scanf("%s",...)
    c'est a dire en ayyant pour information des prenoms et des chiffres.
    Donc, il est vraisemblable que la structure de données adéquate sera plutôt qq chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct
    {
     char * name;
    int mark;
    } MonInfo;
    ...
    MonInfo TabMonInfo[5];
    ....

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Il faudra aussi allouer de l'espace à chaine[i] car dans la déclaration c'est un pointeur, et il n'est pas initialisé lors de l'utilisation du scanf apparemment.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  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
    Citation Envoyé par bonomsoleil
    Pour declarer une matrice mixte c'est a dire en ayyant pour information des prenoms et des chiffres. <...>
    Méthode de chacal... La Bonne Conception dit que l'on doit créer une structure regroupant les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct data
    {
       char name[32];
       int mark;
    };
    puis un tableau de structure du même accabit :
    Ensuite, le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       for (i = 0; i < 5; i++)
       {
          printf ("Nom\n");
          scanf ("%31s", array[i].name);
          printf ("Note\n");
          scanf ("%d", &array[j].mark);
       }
    ce qui est évidemment plus rationnel...

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Méthode de chacal
    Tu veux dire que c'est faisable?
    Comment verrais tu ça?

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Méthode de chacal... La Bonne Conception dit que l'on doit créer une structure regroupant les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct data
    {
       char name[32];
       int mark;
    };
    puis un tableau de structure du même accabit :
    Ensuite, le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       for (i = 0; i < 5; i++)
       {
          printf ("Nom\n");
          scanf ("%31s", array[i].name);
          printf ("Note\n");
          scanf ("%d", &array[j].mark);
       }
    ce qui est évidemment plus rationnel...

    comment fait-on pour visualiser la matrice sur l'ecran ?

    merci

  8. #8
    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 bonomsoleil
    comment fait-on pour visualiser la matrice sur l'ecran ?
    avec printf() ? Fait de ton mieux et poste ton code si tu es perdu !

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    avec printf() ? Fait de ton mieux et poste ton code si tu es perdu !
    Merci

  10. #10
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Par défaut
    J'ai essaye avec ce code mais la matrice n'est pas affichee

    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
     
    # include <stdio.h>
    # include <conio.h>
    # include <stdlib.h>
    void main ()
    {
    int i,j;
    struct data
          {
          char name[10];
          int mark;
          };
    struct data array [5];
    for (i=0;i<4;i++)
         for (j=0;j<4;j++)
     
                      {
                      printf("name\n");
                      scanf("%9s", array[i].name);
                      printf("mark \n");
                      scanf("%d", &array[j].mark);
                      }
     
     
    printf("%s \t \n", array[i].name);
    getch();
    printf("%d \t",array[j].mark);
    getch();
    }

  11. #11
    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 bonomsoleil
    J'ai essaye avec ce code mais la matrice n'est pas affichee
    Voici ton code commenté et corrigé. Pose des questions si tu ne comprends pas. N'oublie pas que certaines réponses se trouvent dans le mode d'emploi des fonctions, par exemple http://man.developpez.com
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    /* -ed- non standard. On peut s'en passer...
       #include <conio.h>
     */
    /* -ed-
       void main ()
     
       main() retourne int. Toujours.
     */
    int main (void)
    {
       int i, j;
       struct data
       {
          char name[10];
          int mark;
       };
       struct data array[5];
       /* -ed-
          for (i = 0;i < 4;i++)
          for (j = 0;j < 4;j++)
     
          pourquoi 2 boucles imbriquees ?
          On a un tableau de 5 elements, il suffit
          de faire une boucle de 5 et c'est tout.
     
        */
     
       for (i = 0; i < 5; i++)
       {
          printf ("name\n");
          scanf ("%9s", array[i].name);
          printf ("mark\n");
          scanf ("%d", &array[i].mark);
       }
     
    /* -ed- et pour l'affichage, il suffit de faire la même chose : */
     
       printf ("%-9s mark\n", "name");
       for (i = 0; i < 5; i++)
       {
          printf ("%-9s %d\n", array[i].name, array[i].mark);
       }
     
    /*
       printf("%s \t \n", array[i].name);
     */
       /* -ed- non standard. On peut s'en passer...
          getch();
        */
       /*
          printf("%d \t", array[j].mark);
        */
       /* -ed- non standard. On peut s'en passer...
          getch();
        */
     
       /* -ed- parce que main () retourne int : */
       return 0;
    }
    Ce qui donne, par exemple :
    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
     
    name
    a
    mark
    1
    name
    zz
    mark
    2
    name
    eee
    mark
    3
    name
    rrrr
    mark
    4
    name
    ttttt
    mark
    5
    name      mark
    a         1
    zz        2
    eee       3
    rrrr      4
    ttttt     5
     
    Press ENTER to continue.

Discussions similaires

  1. [Débutant] Lire des données dans un fichier mixte (texte ET chiffres)
    Par Krillz dans le forum MATLAB
    Réponses: 7
    Dernier message: 03/03/2011, 18h36
  2. Tableau contenant lettres et chiffres
    Par spinosa dans le forum Fortran
    Réponses: 1
    Dernier message: 14/05/2010, 20h16
  3. [Tableaux] Tri tableau avec underscore et chiffres
    Par __fabrice dans le forum Langage
    Réponses: 4
    Dernier message: 18/10/2006, 17h05
  4. verifier si un chiffre est element d'un tableau
    Par thierry_b dans le forum Réseau
    Réponses: 4
    Dernier message: 20/12/2005, 14h31
  5. Réponses: 8
    Dernier message: 17/12/2005, 16h39

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