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 :

Comptage d'éléments d'un type précis dans un tableau


Sujet :

C

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 73
    Points : 60
    Points
    60
    Par défaut Comptage d'éléments d'un type précis dans un tableau
    Bonjour à tous

    J'ai un petit soucis de programmation.


    Par exemple le code suivant :
    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
     
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <math.h>
     
    # define LIG 3// nombre de lignes
    # define COL 3 // nombre de colonnes
     
    struct cellule
    {
        char pion;
        int indcase;// -1(n'appartient à personne) 0(joueur1) 1(joueur2)
        int occupe;// 0 1
     
    };
    typedef struct cellule sCellule ;
     
    int main ()
     
    {
        sCellule monTableau[LIG][COL] =
        {
            {{'X',-1,1},{'1',0,1},{'2',1,1}}
        }; 
    }
    Par exemple :
    Je souhaite compter le nombre fois que '1' est présent dans mon tableau à un enregistrement donné.

    Via Un enregistrement de type :

    Quelqu'un aurait une piste à me proposer s'il vous plait?

    Je vous remercie d'avance.

    Tiviia

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Koe,

    Comment ferais-tu à la main ?

    Voilà, tu as ta solution.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    Merci pour la réponse.

    Mais point vue codage en C..

    Comment faire?

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Comment ferais-tu à la main ? (Montre-nous ton algo )

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Tiviia Voir le message
    Mais point vue codage en C..

    Comment faire?
    Ben avec du if, du while, du for, bref avec tous les outils qu'on t'a appris à utiliser et écrits correctement (les virgules s'il faut des virgules, les points-virgules s'il faut des points-virgules, les parenthèses s'il faut des parenthèses) bref de façon à ce que ton compilo puisse reconnaitre les instructions et les éléments qui la composent...
    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]

  6. #6
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour
    Comment ferais -tu à la main et quel est ton l'algorithme ?
    Pourquoi utilises-tu une structure elle sert et représente quoi concrètement ?
    De plus, je vois une matrice donc une carte (?). En résumé, ont à une structure qui contient des informations sur le pion qui peut être la couleur, la taille etc. (en n'en sait rien), l'indice qui est sans doute la position du pion dans une carte et pour finir, une variable qui définit l'état d'une case libre ou occuper.
    En écrivant un programme simple et vulgaire du type ci-dessous, t'éviterait de mal structure ton idée de départ quand penses-tu ?

    Code C : 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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    #include <stdio.h>
    #include <stdlib.h>
     
    #define COL	10
    #define LIG	10
     
     
    typedef enum{
    	FREE,
    	NOIR,
    	BLANC
    }PION;
     
     
    int main( void ){
     
    	unsigned int i = 0;
    	unsigned int j = 0;
     
    	unsigned int icpt_free = 0;
    	unsigned int icpt_noir = 0;
    	unsigned int icpt_blanc = 0;
    	unsigned int iMap[COL][LIG];
     
    	/*	Initialisation de la carte */
    	for( i = 0; i < COL; i++ ){
    		for( j = 0; j < LIG; j++ ){
    			iMap[i][j] = FREE;
    		}
    	}
     
    	/*	Ajout des pions noir	*/
    	for( i = 0; i < COL; i+=2 ){
    		for( j = 0; j < LIG; j+=2 ){
    			iMap[i][j] = NOIR;
    		}
    	}
     
    	/*	Ajout des pions blanc */
    	for( i = 0; i < COL; i+=3 ){
    		for( j = 0; j < LIG; j+=3 ){
    			iMap[i][j] = BLANC;
    		}
    	}
     
    	/*	Conpteur des pions blanc, noir & case libre	*/
    	for( i = 0; i < COL; i++ ){
    		for( j = 0; j < LIG; j++ ){
    			if( iMap[i][j] == NOIR )
    				icpt_noir+=1;
    			else if( iMap[i][j] == BLANC )
    				icpt_blanc+=1;
    			else
    				icpt_free+=1;
    		}
    	}
     
    	/*	Affichage des pions sur la carte */
    	for( i = 0; i < COL; i++ ){
    		for( j = 0; j < LIG; j++ ){
    			printf("\t%d", iMap[i][j] );
    		}
    		printf("\n");
    	}
     
    	/*	Résultat du comptage des pion et cellule libre */
    	printf("\nNombre de case libre\t(%3d)\n", icpt_free );
    	printf("\nNombre de pion noir\t(%3d)\n", icpt_noir );
    	printf("\nNombre de pion blanc\t(%3d)\n", icpt_blanc );
     
    	return ( EXIT_SUCCESS );
    }
    Afin d'aboutir à une approche de ton idée de départ (2éme exemple):
    Code C : 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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    typedef enum{
    	FREE,
    	NOIR,
    	BLANC
    }PION;
     
    typedef struct s_data{
    	unsigned int **pIMap;
    	unsigned int icpt_free;
    	unsigned int icpt_noir;
    	unsigned int icpt_blanc;
    }ts_Data;
     
    int main( void ){
     
    	unsigned int i = 0;
    	unsigned int j = 0;
     
    	ts_Data data;
    	data.icpt_free = 0;
    	data.icpt_noir = 0;
    	data.icpt_blanc = 0;
    	data.pIMap = NULL;
     
    	/* ! Controle de l'allocation à faire */
    	data.pIMap = (unsigned int**)calloc(COL, sizeof(unsigned int*));
    	for( i = 0; i < COL; i++ ){
    		data.pIMap[i] = (unsigned int*)calloc(LIG, sizeof(unsigned int) );
    	}
     
    	/*	Ajout des pions noir	*/
    	for( i = 0; i < COL; i+=2 ){
    		for( j = 0; j < LIG; j+=2 ){
    			data.pIMap[i][j] = NOIR;
    		}
    	}
     
    	/*	Ajout des pions blanc	*/
    	for( i = 0; i < COL; i+=3 ){
    		for( j = 0; j < LIG; j+=3 ){
    			data.pIMap[i][j] = BLANC;
    		}
    	}
     
    	/*	Conpteur des pions blanc, noir & case libre	*/
    	for( i = 0; i < COL; i++ ){
    		for( j = 0; j < LIG; j++ ){
    			if( data.pIMap[i][j] == NOIR )
    				data.icpt_noir+=1;
    			else if( data.pIMap[i][j] == BLANC )
    				data.icpt_blanc+=1;
    			else
    				data.icpt_free+=1;
    		}
    	}
     
    	/*	Affichage des pions sur la carte */
    	for( i = 0; i < COL; i++ ){
    		for( j = 0; j < LIG; j++ ){
    			printf("%d\t", data.pIMap[i][j] );
    		}
    		printf("\n");
    	}
     
    	/*	Résultat du comptage des pion et cellule libre */
    	printf("\nNombre de case libre\t(%3d)\n", data.icpt_free );
    	printf("\nNombre de pion noir\t(%3d)\n", data.icpt_noir );
    	printf("\nNombre de pion blanc\t(%3d)\n", data.icpt_blanc );
     
    	return ( EXIT_SUCCESS );
    }
    à bientôt
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

Discussions similaires

  1. Réponses: 17
    Dernier message: 18/01/2013, 00h47
  2. [VBA-E03&07]Amelioration fonction de comptage de fichier de type précis
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/09/2008, 16h35
  3. Réponses: 3
    Dernier message: 01/09/2008, 13h46
  4. Comptage d'élèments dans une chaine
    Par wabo67 dans le forum Excel
    Réponses: 2
    Dernier message: 09/11/2007, 12h32
  5. Comptage d'élèments dans une chaine
    Par zephirsoul dans le forum Excel
    Réponses: 3
    Dernier message: 05/11/2007, 16h44

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