Structure tableau dynamique
saidinfo
Messages postés
17
Statut
Membre
-
saidinfo Messages postés 17 Statut Membre -
saidinfo Messages postés 17 Statut Membre -
Bonjour,svp j'ai vraiment troublé j'arrive pas a trouve le problème.Sinon,voici le programme :
Chaque équipe est caractérisé par : Le nom de l'équipe , la date de création du club . et un tableau de joueurs de taille 22.
Chaque joueur est caractérisé par: Son nom, son age , Salaire , nbr_but_marque , nbr_blessure , nbr_carte_jaune , nbr_carte_rouge , poste .
Déclarer un tableau de équipe .
NB que on ne sait jamais combien d'équipe l'utilisateur vas entrer .Alors, voici le programme:
svp aider moi si vous savez dejà !!
EDIT: Ajout de la coloration syntaxique.
Chaque équipe est caractérisé par : Le nom de l'équipe , la date de création du club . et un tableau de joueurs de taille 22.
Chaque joueur est caractérisé par: Son nom, son age , Salaire , nbr_but_marque , nbr_blessure , nbr_carte_jaune , nbr_carte_rouge , poste .
Déclarer un tableau de équipe .
NB que on ne sait jamais combien d'équipe l'utilisateur vas entrer .Alors, voici le programme:
#include <stdio.h>
#include <stdlib.h>
typedef struct{char nom_equipe[20];int date_creation;}equipe;
typedef struct{ equipe eq;char nom[10];int salaire,age,nbr_but,nbr_blessure,nbr_jaune,nbr_rouge;}joueurs;
joueurs *p[n];
void lit(joueurs *p,n){
int i,j;
p=malloc(sizeof(equipe));
int n;printf("Entrer le nombre de l'equipe:\n");scanf("%d",&n);
for(i=0;i<n;i++){
printf("Entrer le nom de l'equipe n°%d:\n",i+1);
scanf("%s",p[i]->eq.nom_equipe);
printf("Entrer la de creation:\n");
scanf("%d",&p[i].eq.date_creation);
for(j=0;j<5;j++)
{
printf("\tEntrer le nom de la joueurs n°%d\n",j+1);
scanf("%s",p[j].nom);
printf("\tEntrer age:\n");
scanf("%d",&p[j].age);
printf("\tEntrer le salaire:\n");
scanf("%d",&p[j].salaire);
printf("\tEntrer le nombre de but:\n");
scanf("%d",&p[j].nbr_but);
printf("\tEntrer de blessure:\n");
scanf("%d",&p[j].nbr_blessure);
printf("\tEntrer le nombre de les cartes Jaune:\n");
scanf("%d",&p[j].nbr_jaune);
printf("\tEntrer le nombre des cartes rouge:\n");
scanf("%d",&p[j].nbr_rouge);
}
}
free(p);
}
int main()
{
joueurs *p[n];
lit(&p,n);
return 0;
}
svp aider moi si vous savez dejà !!
EDIT: Ajout de la coloration syntaxique.
A voir également:
- Structure tableau dynamique
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Tableau ascii - Guide
- Trier un tableau excel - Guide
1 réponse
Bonjour,
joueurs *p[n];
Combien vaut n ? Comment est-il défini ? Tu ne peux pas mettre une variable. Il vaut donc mieux mettre : #define N 5
(oui j'ai mis N en majuscule, convention pour signaler qu'il s'agit d'une constante).
Les variables globales sont à proscrire (sauf cas particulier). D'autant que tu as déjà défini cette variable dans le main(). Donc à enlever tout simplement.
void lit(joueurs *p,n){
Tu as oublié de mettre : int n
La variable p n'est pas de même type que celui de la fonction (tableau de pointeur vs pointeur...). Il faut choisir.
int n;printf("Ent
Pourquoi remettre int n; ? Il est déjà en argument...
scanf("%d",&n);
Pourquoi redéfinir n ?
Si tu veux choisir la taille, il vaut mieux le faire à la déclaration de la variable joueur (dans le main()).
Note : vaut mieux le mettre à la ligne pour plus de lisibilité.
Pourquoi faire un free() à la fin ? Tu ne veux pas récupérer le contenu à l'extérieur de la fonction() ?
Je te laisse corriger ton code en fonction de ces remarques. N'hésite pas aussi à dire ce que tu souhaites que ton programme fasse, car il y a plein de points à revoir.
Note : attention à l'indentation (notamment au niveau des for())...
Cdlt,
joueurs *p[n];
Combien vaut n ? Comment est-il défini ? Tu ne peux pas mettre une variable. Il vaut donc mieux mettre : #define N 5
(oui j'ai mis N en majuscule, convention pour signaler qu'il s'agit d'une constante).
Les variables globales sont à proscrire (sauf cas particulier). D'autant que tu as déjà défini cette variable dans le main(). Donc à enlever tout simplement.
void lit(joueurs *p,n){
Tu as oublié de mettre : int n
La variable p n'est pas de même type que celui de la fonction (tableau de pointeur vs pointeur...). Il faut choisir.
int n;printf("Ent
Pourquoi remettre int n; ? Il est déjà en argument...
scanf("%d",&n);
Pourquoi redéfinir n ?
Si tu veux choisir la taille, il vaut mieux le faire à la déclaration de la variable joueur (dans le main()).
Note : vaut mieux le mettre à la ligne pour plus de lisibilité.
Pourquoi faire un free() à la fin ? Tu ne veux pas récupérer le contenu à l'extérieur de la fonction() ?
Je te laisse corriger ton code en fonction de ces remarques. N'hésite pas aussi à dire ce que tu souhaites que ton programme fasse, car il y a plein de points à revoir.
Note : attention à l'indentation (notamment au niveau des for())...
Cdlt,
voici le programme mais il reste une seul problème consacrer a la ligne 34 .
#include <stdio.h> #include <stdlib.h> typedef struct{char nom_equipe[20];int date_creation;}equipe; typedef struct{ equipe eq;char nom[10];int salaire,age,nbr_but,nbr_blessure,nbr_jaune,nbr_rouge;}joueurs; joueurs *p; void lit(){ int i,j,n; printf("\t\t\t\tEntrer le nombre d'equipe"); scanf("%d",&n); p=(joueurs*) malloc(sizeof(joueurs)*n); for(i=0;i<n;i++){ printf("Entrer le nom de l'equipe n°%d:\n",i+1); scanf("%s",(p+i)->eq.nom_equipe); printf("Entrer la de creation:\n"); scanf("%d",&(p+1)->eq.date_creation); for(j=0;j<5;j++) { printf("\tEntrer le nom de la joueurs n°%d:\t",j+1); scanf("%s",(p+i)->nom); printf("\tEntrer age:\n"); scanf("%d",&(p+i)->age); printf("\tEntrer le salaire:\n"); scanf("%d",&(p+i)->salaire); printf("\tEntrer le nombre de but:\n"); scanf("%d",&(p+i)->nbr_but); printf("\tEntrer de blessure:\n"); scanf("%d",&(p+i)->nbr_blessure); printf("\tEntrer le nombre de les cartes Jaune:\n"); scanf("%d",&(p+i)->nbr_jaune); printf("\tEntrer le nombre des cartes rouge:\n"); scanf("%d",&(p+i)->nbr_rouge); } } affiche(&p,n); } void affiche(joueurs *p,int n){ int i; for(i=0;i<n;i++) { if((p+i)->nbr_but < (p+i)->nbr_but) (p+0)->nbr_but=(p+i)->nbr_but; } printf("L'equipe qui a marqué le plus grande de but est%s\n",(p+0)->eq.nom_equipe); } int main() { joueurs *p; lit(&p); return 0; }est-que tu peut m'aidez svp !!