les tableaux d'enregistrement en c - C - Programmation
Marsh Posté le 02-04-2013 à 09:48:39
parce que tu n'as pas de fonction main?
essaye de rajouter
Code :
|
Pense aussi à déclarer la structure personne, sinon ça compilera pas
Marsh Posté le 02-04-2013 à 09:59:49
merci pour votre attention bien sure j'ai déja déclaré la structure personne et j'ai essaié votre solution mais ça compile pas il s'arrete la scanf("%d",&*tab_personne[i].cin);
Marsh Posté le 02-04-2013 à 11:36:13
tab_personne est bien un tableau de pointeurs sur des personnes? parce que c'est ce que vous déclarez avec personne * tab_personne[]
A+,
Marsh Posté le 02-04-2013 à 12:04:47
tab_personne[] est tableau d'enregistrement
voilà le code source
typedef struct {
int cin;
char prenom[30];
char nom[30];
} personne;
Marsh Posté le 02-04-2013 à 12:30:22
Bonjour,
Passer un pointeur sur le tableau me semble suspect.... Fait voir comment tu appelles ta fonction....
sinon:
Code :
|
Marsh Posté le 02-04-2013 à 16:30:18
Citation : tab_personne[] est tableau d'enregistrement |
La déclaration du paramètre était donc fausse.
Il fallait faire
void saisir_personne(personne tab_personne[], int nbper)
ou bien la déclaration équivalente, mais moins explicite
void saisir_personne (personne *tab_personne, int nbper)
Note en passant: déclarer
personne *tab_personne[]
c'est déclarer la même chose que personne *(tab_personne[]), c'est a dire que tab_personne est un tableau de (personne *), ie de pointeurs sur personne
A ne pas confondre avec
personne (*tab_personne)[] qui déclare que tab_personne est un pointeur sur (personne []), ie sur un tableau de personne
L'interprétation de personne *tab_personne[] en personne *(tab_personne[]) vient des règles de précédence du C, ou [] l'emporte.
Ce sont aussi les règles de précédence du C qui permettent d'interpréter scanf("%d",&tab_personne[i].cin); comme scanf("%d",&(tab_personne[i].cin)); par exemple.
http://www.difranco.net/compsci/C_ [...] _Table.htm
A+,
Marsh Posté le 20-04-2013 à 06:29:22
svp comment fait la recherche dans cette tableau pour chercher si un cin se trouve ou non
Marsh Posté le 28-04-2013 à 17:26:02
bonjour
je veux ajouter des fonctions à mon programme mais ça ne marche pas pourtant y a pas des erreurs de compilation , voila le code source
int test (personne tab_personne[],int cin)
{
int i,j;
for (j=1;j<i;j++)
{
if ( tab_personne[i].cin==tab_personne[j].cin)
return (0);
else return (1);
}
}
// en fait c'est une fonction qui permet de tester si un cin existe déja
merci d'avance
Marsh Posté le 28-04-2013 à 18:51:38
Bonjour !
Vous ne testez que la première valeur du tableau, si cela ne correspond pas, vous retournez 0 sans tester les suivantes. Du coup, la fonction ne renvoie pas souvent le bon résultat.
Vous devez rester dans la boucle tant que vous n'avez pas trouvé l'identifiant recherché, et ne renvoyer 0 qu'après avoir testé toutes les valeurs.
Bonne continuation !
Edit : J'ai lu vraiment trop vite le code et n'ai pas remarqué qu'il est vraiment douteux (pour être gentil) : vous déclarez i sans l'initialiser et l'utilisez aussitôt comme indice de tableau, mais vous n'utilisez pas du tout le "cin" passé en paramètre ... J'espère qu'il s'agit d'un copier/coller raté !
Marsh Posté le 02-04-2013 à 09:28:00
bonjour,
je suis débutante en programmation c ils m'ont demandé de réaliser un mini projet alors voilà le code source d'une procedure je sais pas pourquoi ça n'éxécute pas ? mercii d'avance
void saisir_personne (personne * tab_personne[],int nbper)
{int i;
for (i=0;i<nbper;i++)
{
do
{
printf ("entrez le cin" );
scanf("%d",&*tab_personne[i].cin);
}
while (((tab_personne[i].cin )<0)||((tab_personne[i].cin )<999999999));
do
{
printf ("entrez le prenom numéro %d",i+1);
scanf("%s",*tab_personne[i].prenom);
}
while ( strlen(tab_personne[i].prenom)<1);
do
{
printf ("entrez le nom numéro %d",i+1);
scanf("%s",*tab_personne[i].nom);
}
while ( strlen(tab_personne[i].nom)<1);
}
}