Une programmation du club sport sportif
sigmaaaa
Messages postés
7
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,
J'ai une exercice à l'école. Je suis bloqué à partir de la question 3. Vous pouvez m'aider, s'il vous plaît??
Le sujet:
On s'intéresse à la gestion des inscriptions à un club sportif. On va créer un tableau tab_insc[N][P] avec N: le numéro d'étudiant, et P: le numéro de sport. Après on va remplir par hasard le tableau avec deux numéros: 1 et 0 (1 càd l'étudiant est inscrite au sport et 0 sinon).
Question 1: Ecrivez la fonction: void remplir_tab(int tab_insc[N][P]) pour afficher le tableau.
Question 2: Ecrivez la fonction: int nb_sports(int p, int tab_insc[N][P]) qui renvoie le nombre de sports auxquels l'étudiant numéro p est inscrite.
Question 3: Ecrivez la fonction: void compter_inscrits(int tab_insc[N][P],int tab_nb_inscrits[P]) qui utilise les données contenues dans le tableau tab_insc et qui, pour chaque sport:
- compte le nombre d'inscrits,
- affiche le résultat: le numéro du sport et le nombre d'inscrits,
- affecte cette valeur à l'élément correspondant du tableau tab_nb_inscrits
...
J'ai fait les codes jusqu'à question 2 et elles fonctionnent bien, comme ça:
J'ai une exercice à l'école. Je suis bloqué à partir de la question 3. Vous pouvez m'aider, s'il vous plaît??
Le sujet:
On s'intéresse à la gestion des inscriptions à un club sportif. On va créer un tableau tab_insc[N][P] avec N: le numéro d'étudiant, et P: le numéro de sport. Après on va remplir par hasard le tableau avec deux numéros: 1 et 0 (1 càd l'étudiant est inscrite au sport et 0 sinon).
Question 1: Ecrivez la fonction: void remplir_tab(int tab_insc[N][P]) pour afficher le tableau.
Question 2: Ecrivez la fonction: int nb_sports(int p, int tab_insc[N][P]) qui renvoie le nombre de sports auxquels l'étudiant numéro p est inscrite.
Question 3: Ecrivez la fonction: void compter_inscrits(int tab_insc[N][P],int tab_nb_inscrits[P]) qui utilise les données contenues dans le tableau tab_insc et qui, pour chaque sport:
- compte le nombre d'inscrits,
- affiche le résultat: le numéro du sport et le nombre d'inscrits,
- affecte cette valeur à l'élément correspondant du tableau tab_nb_inscrits
...
J'ai fait les codes jusqu'à question 2 et elles fonctionnent bien, comme ça:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define P 5
#define N 10
void remplir_tab(int tab_insc[N][P])
{
int i,j;
srand(time(0));
printf ("Le Tableau est:\n");
for(i=0;i<N;i++)
{
for(j=0;j<P;j++)
{
tab_insc[i][j]=rand()%2;
printf ("%d ",tab_insc[i][j]);
}
printf ("\n");
}
}
void nb_sports(int p,int tab_insc[N][P])
{
int j,s=0;
for (j=0;j<P;j++)
{
if (tab_insc[p-1][j]==1)
{
s++;
}
}
printf ("Le nombre de sports que vous avez choisi est: %d\n",s);
}
int main(void)
{
int p,tab_insc[N][P];
remplir_tab(tab_insc);
printf ("Veillez donner le numéro d'étudiant:\n");
scanf ("%d",&p);
nb_sports(p,tab_insc);
return 0;
}
A voir également:
- Une programmation du club sport sportif
- Java sport - Télécharger - Jeux vidéo
- Mobile club - Accueil - Guide téléphones
- Application de programmation - Guide
- Pro direct sport avis ✓ - Forum Consommation & Internet
- Sport event 365 avis ✓ - Forum Consommation & Internet
1 réponse
Bonjour,
Question 1/
srand(time(0)); ne le met pas dans cette fonction mais dans le main().
Question 2/
void nb_sports(int p,int tab_insc[N][P])
Ta fonction doit être de type int nb_sports(...); et non void nb_sports(...). Et plutôt qu'afficher le résultat dans la fonction, tu dois renvoyer le résultat (return); et déporter l'affichage dans le main().
if (tab_insc[p-1][j]==1)
D'ailleurs plutôt que faire if(...), t'avais juste à faire une somme de toute ligne (puisque 0 est un élément neutre pour l'addition). C'est plus performant (bien que négligeable).
Plutôt que p-1, j'aurais mis p tout court. Puisque dans le tableau tab_insc[N][P] N représente le numéro de l'étudiant (et non N+1)
Question 3/
Ecrivez la fonction: void compter_inscrits(int tab_insc[N][P],int tab_nb_inscrits[P]) qui utilise les données contenues dans le tableau tab_insc et qui, pour chaque sport:
C'est quoi qui te pose problème précisément ?
- compte le nombre d'inscrits,
Tu dois calculer le nombre de personnes inscrits au sport i. Une simple boucle for suffit.
- affiche le résultat: le numéro du sport et le nombre d'inscrits,
Il suffit d'afficher la précédente valeur calculée.
- affecte cette valeur à l'élément correspondant du tableau tab_nb_inscrits
Il suffit de stocker cette valeur dans tab_nb_insc[i].
J'ai juste préciser comment calculer tab_nb_insc[i]. Il faudra faire une autre boucle for pour remplir toutes les valeurs du tableau.
Cdlt,
Question 1/
srand(time(0)); ne le met pas dans cette fonction mais dans le main().
Question 2/
void nb_sports(int p,int tab_insc[N][P])
Ta fonction doit être de type int nb_sports(...); et non void nb_sports(...). Et plutôt qu'afficher le résultat dans la fonction, tu dois renvoyer le résultat (return); et déporter l'affichage dans le main().
if (tab_insc[p-1][j]==1)
D'ailleurs plutôt que faire if(...), t'avais juste à faire une somme de toute ligne (puisque 0 est un élément neutre pour l'addition). C'est plus performant (bien que négligeable).
Plutôt que p-1, j'aurais mis p tout court. Puisque dans le tableau tab_insc[N][P] N représente le numéro de l'étudiant (et non N+1)
Question 3/
Ecrivez la fonction: void compter_inscrits(int tab_insc[N][P],int tab_nb_inscrits[P]) qui utilise les données contenues dans le tableau tab_insc et qui, pour chaque sport:
C'est quoi qui te pose problème précisément ?
- compte le nombre d'inscrits,
Tu dois calculer le nombre de personnes inscrits au sport i. Une simple boucle for suffit.
- affiche le résultat: le numéro du sport et le nombre d'inscrits,
Il suffit d'afficher la précédente valeur calculée.
- affecte cette valeur à l'élément correspondant du tableau tab_nb_inscrits
Il suffit de stocker cette valeur dans tab_nb_insc[i].
J'ai juste préciser comment calculer tab_nb_insc[i]. Il faudra faire une autre boucle for pour remplir toutes les valeurs du tableau.
Cdlt,