Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1419 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [Résolu] Exercice C, structure, type, compilation modulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Exercice C, structure, type, compilation modulaire

n°1961673
Profil sup​primé
Posté le 30-01-2010 à 14:34:56  answer
 

Erreur lors de la compilation dans main.c :  
 
"syntax error before data" ligne 13 et 14 du main.c
 
main.c
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "func.h"
  4. int main()
  5. {
  6.     int nbr_personne = 0;
  7.     data personne[15];
  8.     printf(" * Veuillez saisir le nombre de personne a indexer : " );
  9.     scanf("%d", &nbr_personne);
  10.     data_input(nbr_personne, data personne[]);
  11.     tri_bulle(nbr_personne, data personne[]);
  12. }


 
func.c
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "func.h"
  4. void data_input(int nbr_personne, data personne[])
  5. {
  6.     int i = 0;
  7.     for (i = 0; i < nbr_personne; i++)
  8.     {
  9.         printf(" * Veuillez saisir votre nom : " );
  10.         scanf("%s\n", personne[i].nom);
  11.         printf(" * Veuillez saisir votre prenom : " );
  12.         scanf("%s\n", personne[i].prenom);
  13.         printf(" * Veuillez saisir votre age : " );
  14.         scanf("%d\n", &personne[i].age);
  15.     }
  16. }
  17. void tri_bulle(int nbr_personne, data personne[])
  18. {
  19.     int i = 0;
  20.     int tmp = 0;
  21.     int tri = 0;
  22.     while (tri == 0)
  23.     {
  24.         tri = 1;
  25.         for (i = 0; i < nbr_personne; i++)
  26.         {
  27.             if (personne[i].age > personne[i+1].age)
  28.             {
  29.                 tmp = personne[i+1].age;
  30.                 personne[i+1].age = personne[i].age;
  31.                 personne[i].age = tmp;
  32.                 tri = 0;
  33.             }
  34.         }
  35.     }
  36. }


 
func.h
 

Code :
  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. typedef struct data data;
  4. struct data
  5. {
  6.     char nom[15];
  7.     char prenom[15];
  8.     int age;
  9. }
  10. ;
  11. void data_input(int nbr_personne, data personne[]);
  12. void tri_bulle(int nbr_personne, data personne[]);
  13. #endif // MAIN_H_INCLUDED

Message cité 1 fois
Message édité par Profil supprimé le 31-01-2010 à 01:04:26
mood
Publicité
Posté le 30-01-2010 à 14:34:56  profilanswer
 

n°1961681
fhr
Posté le 30-01-2010 à 15:42:12  profilanswer
 

Tu n'as pas de variable "personne" dans le main, uniquement "individu". Pas regardé le reste.

n°1961687
Profil sup​primé
Posté le 30-01-2010 à 16:45:54  answer
 

J'ai rename en "personne" ça change rien.

n°1961688
Joel F
Real men use unique_ptr
Posté le 30-01-2010 à 16:57:23  profilanswer
 

Code :
  1. typedef struct
  2. {
  3.     char nom[15];
  4.     char prenom[15];
  5.     int age;
  6. } data;
 

ca ira mieux deja

 
Code :
  1. data_input(nbr_personne, personne);

Message cité 1 fois
Message édité par Joel F le 30-01-2010 à 17:30:15
n°1961692
Elmoricq
Modérateur
Posté le 30-01-2010 à 17:11:14  profilanswer
 

Ton passage de paramètres lorsque tu appelles tes fonctions est erroné.
 
Le message d'erreur du compilateur est explicite.

n°1961698
Profil sup​primé
Posté le 30-01-2010 à 18:02:37  answer
 

Joel F a écrit :

Code :
  1. typedef struct
  2. {
  3.     char nom[15];
  4.     char prenom[15];
  5.     int age;
  6. } data;


 
ca ira mieux deja
 

Code :
  1. data_input(nbr_personne, personne);



 
J'ai essayé avec les modifs que vous m'avez indiqué, ça marche toujours pas.
Mais ce que je comprend pas surtout, c'est qu'il s'agit à la base d'un tableau de personne de type data, si j'envois juste personne sans les crochet devant, ça signifie que j'envois une variable unique. Pareil si j'enlève les crochets je dois le faire pour les fonctions data_input et tri_bulle : dans data_input je parcours le tableau de personne de manière à saisir les infos nom, prenom, age pour personne[0] puis les infos pour personne[1] ect. Si j'envois pas personne[] je pourrai pas faire ce type de saisi. Merci de m'éclairer

n°1961700
Joel F
Real men use unique_ptr
Posté le 30-01-2010 à 18:56:22  profilanswer
 

tu as manifestement pas compris le concept de variable et de type.

 

data personne[4] : tableau de 4 data
personne : c'est el tableau
personne[i] c'ets le ieme element de ton tableau.

 

ta ligne:

 

data_input(nbr_personne, data personne[]);

 

ne veut rien dire car tu passe le type et non la variable personne


Message édité par Joel F le 30-01-2010 à 18:57:03
n°1961713
Sve@r
Posté le 30-01-2010 à 23:05:41  profilanswer
 


 
Pour faire suite au message de Joel F, tu seras plus à l'aise si tu différencies un peu mieux les noms de variables de noms de types. Par exemple en mettant un "s_" devant les noms de structures et un "t_" devant les noms de types...

Code :
  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. struct s_data
  4. {
  5.     char nom[15];
  6.     char prenom[15];
  7.     int age;
  8. };
  9. typedef struct s_data t_data;
  10. void data_input(int nbr_personne, t_data[]);
  11. void tri_bulle(int nbr_personne, t_data[]);


 
main.c
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "func.h"
  4. int main()
  5. {
  6.     int nbr_personne = 0;
  7.     t_data personne[15];
  8.     printf(" * Veuillez saisir le nombre de personne a indexer : " );
  9.     scanf("%d", &nbr_personne);
  10.     data_input(nbr_personne, personne);
  11.     tri_bulle(nbr_personne, personne);
  12. }


 
func.c
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "func.h"
  4. void data_input(int nbr_personne, t_data personne[])
  5. {
  6.     ...
  7. }
  8. void tri_bulle(int nbr_personne, t_data personne[])
  9. {
  10.     ...
  11. }


Message édité par Sve@r le 30-01-2010 à 23:09:42

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1961716
Profil sup​primé
Posté le 31-01-2010 à 01:03:31  answer
 

Excellent merci pour les explications !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [Résolu] Exercice C, structure, type, compilation modulaire

 

Sujets relatifs
[annulé/résolu]soucis onMouseOver et onMouseOut sur lien + image[résolu] problème avec getElementById et onload ...
[résolu] eviter blocage navigateur lors de recherche de villerésolu: problème curseur
[resolu] Remplacer un lien par du texte une fois cliqué[Résolu] Python 2.6, MySQLdb et Windows, la combinaison perdante ?
[RESOLU] Soucis avec mysql_fetch_array dans une fonction[RESOLU] Question simple sur la DTD
[C] Lire un fichier . txt[Resolu] Problème de récupération d'un fichier résultat de POST (API)
Plus de sujets relatifs à : [Résolu] Exercice C, structure, type, compilation modulaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR