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 :

Fonction et tableau 2 dimensions


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Par défaut Fonction et tableau 2 dimensions
    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:

    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
     
    #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;
    }

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Bonjour,
    nous voudrions bien t'aider, mais quelles sont tes questions?
    Qu'as-tu déjà essayé?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Par défaut
    Citation Envoyé par leternel Voir le message
    Bonjour,
    nous voudrions bien t'aider, mais quelles sont tes questions?
    Qu'as-tu déjà essayé?
    Je suis bloqué à la question 3. J'ai déjà essayé mais je n'arrive pas. Je sais qu'il faut compter colonne par colonne mais je n'arrive pas de le faire

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Dans ce cas, suis les conseils de mon grand-père, qui était le premier professeur d'informatique en université:

    Dans un problème, la question n'est pas de tout faire, mais de savoir comment avancer dans le problème.

    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
    ...
    je lis "pour chaque sport", donc, j'ai une boucle sur les sports
    dedans, je réponds à la question pour un seul sport.

    Résouds la question pour le sport numéro 7.
    puis change 7 par for(i = 0; i<nombre de sport; ++i) {…i…}

  5. #5
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Citation Envoyé par sigmaaaa Voir le message
    il faut compter colonne par colonne mais je n'arrive pas de le faire
    Soit un tableau à heigh lignes et width colonnes. Il est représenté en une dimension par une suite de lignes les unes derrière les autres. Pour se déplacer dans les colonnes, c'est directement le x. pour se déplacer dans les lignes, il faut ajouter pour chaque ligne la largeur de la ligne, donc width. donc pour passer d'une position (x, y) à un offset dans le tableau:

    offset = y* width + x

    l'opération inverse est très facile elle aussi:

    x = offset % width
    y = offset / width

    Tu te demandes peut-être à quoi set le height? A calculer la taille du tableau.

    size = width * height

    A+

    Pfeuh

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 837
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sigmaaaa Voir le message
    Je suis bloqué à la question 3. J'ai déjà essayé mais je n'arrive pas. Je sais qu'il faut compter colonne par colonne mais je n'arrive pas de le faire
    Salut
    C'est pas si compliqué que ça en a l'air...
    Déjà on te parle d'un certain tableau "tab_nb_inscrits" qu'il faut remplir à la fin. Moi, je me dis que si on le remplit au fur et à mesure, ça marche aussi (après tout, le nombre final sera le même...)

    Donc déjà tu crées ton tableau tab_nb_inscrits[P] puisqu'il y a autant de totaux que de sports.

    Ensuite tu pars sur une boucle de i allant de 0 à P pour boucler sur les sports.
    Dans cette boucle, tu fais varier j de 0 à N pour boucler sur les étudiants. Et te suffit d'ajouter la valeur de la case [i, j] (qui vaut 0 ou 1) à la case tab_nb_inscrits[i] qui reprend le total du sport en question.
    Quand i a fini de boucler, ton tableau tab_nb_inscrits est rempli et c'est fini. Tu remarqueras que les 2 points de cette question (afficher les valeurs) se résume à afficher le contenu de ce tableau...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/02/2009, 14h28
  2. Réponses: 1
    Dernier message: 11/02/2008, 16h45
  3. [Tableaux] Fonction PHP et tableau à 2 dimensions
    Par ponteprimo dans le forum Langage
    Réponses: 3
    Dernier message: 06/09/2006, 14h21
  4. Réponses: 1
    Dernier message: 18/11/2005, 11h38
  5. Réponses: 3
    Dernier message: 05/10/2005, 17h26

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