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 :

Problème avec un tableau de structure


Sujet :

C

  1. #21
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Et bien ça fonctionne à merveille.

    Encore merci de ton aide Thierry

  2. #22
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par pek.plus.ultra59 Voir le message
    J'ai testé et ca fonctionne avec les noms composé.

    Il me reste plus qu'a l'introduire dans mon code. merci
    Non, ça ne fonctionne pas avec les noms composés.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #23
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    en effet je me suis emballé pour rien.

    Me revoilà dans le pétrin.

  4. #24
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par pek.plus.ultra59 Voir le message
    en effet je me suis emballé pour rien.

    Me revoilà dans le pétrin.
    Non, il te faut juste comprendre mon code et l'adapter en conséquence. ca ne fonctionne pas, car je ne compare les deux chaines que tant que ville1[i] et ville2[i] sont des lettres (reconnus comme tels par isalpha()). Il faut modifier la condition pour la comparaison s'arrête uniquement lorsque ville1[i] et ville2[i] contiennent '\0' ou ';'.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #25
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    je pense avoir trouver en mettant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (tab[i].ville[j] == buffer[j] && strchr(buffer, ';') )

    Reste plus qu'a faire quelques testes.

  6. #26
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Erf ça ne fonctionne pas.
    Je cherche toujours

  7. #27
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Je n'ai pas beaucoup de temps maintenant, mais est-ce que le code qui suit fonctionne:

    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
    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
    74
    75
    76
    77
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
     
    int comparer_villes(char const *ville1, char const *ville2)
    {
        int ret = 0;
     
        if (ville1 != NULL && ville2 != NULL)
        {
            size_t i = 0;
     
            while (ville1[i] == ville2[i] &&
                    ville1[i] != 0 && ville1[i] != ';' &&
                    ville2[i] != 0 && ville2[i] != ';')
            {
                i++;
            }
     
            if ((ville1[i] == 0 || ville1[i] == ';') &&
                    (ville2[i] == 0 || ville2[i] == ';'))
            {
                ret = 1;
            }
        }
     
        return ret;
    }
     
    /* -tc- Tests */
     
    #define ARRAY_SIZE(a) ( sizeof (a) / sizeof *(a) )
     
    struct Test
        {
            char v1[32];
            char v2[32];
            int resultat;
        };
     
    int main(void)
    {
        struct Test data[]=
        {
            {"Fribourg", "Fribourg; 20", 1},
            {"Fribourg; 20", "Fribourg", 1},
            {"Fribourgx", "Fribourg; 20", 0},
            {"Fribourg", "Fribourgx; 20", 0},
            {"Fribourgx", "Fribourgx; 20", 1},
            {"Fribourg", "Fribourg", 1},
            {"Granges-Paccot", "Granges-Paccot; 20", 1},
            {"Granges-Paccot", "Granges-Paccotx", 0},
            {"La Conversion", "La Conversion; 20", 1},
            {"L'Isle", "L'Isle; 20", 1},
        };
        size_t i;
        int ret = EXIT_SUCCESS;
     
        for (i = 0; i < ARRAY_SIZE(data); i++)
        {
            int rv;
     
            printf("Test%u: comparaison de \"%s\" et de \"%s\"...   ", i+1, data[i].v1, data[i].v2);
            rv = comparer_villes(data[i].v1, data[i].v2);
            if (rv == data[i].resultat)
            {
                printf("REUSSI\n");
            }
            else
            {
                printf("ECHOUE!\n");
                ret = EXIT_FAILURE;
            }
        }
     
        return 0;
    }
    A première vue, selon les quelques tests, cela semble OK.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  8. #28
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Salut Thierry,

    Excuse moi du retard mais j'ai eu la crève et je n'ai pas eu le temps d'essayer ton code.

    Et bien apparemmment il fonctionne à merveille. Il me reste à faire différent test.
    Encore merci.

    Tu es un

  9. #29
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Bon mon programme est maudit.

    Ton code fonctionne bien a part pour 4 villes.
    BOUSIGNIES SUR ROC
    DIMECHAUX
    RAUCOURT AU BOIS
    RUESNES

    Pourtant lorsque je les copies dans un autre fichier texte (seulement ces 4 là) cela fonctionne. Je ne vois vraiment pas d'où provenir le problème.

    Est ce que je peux te donner mon code pour le tester chez toi?

    merci

  10. #30
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par pek.plus.ultra59 Voir le message
    Bon mon programme est maudit.

    Ton code fonctionne bien a part pour 4 villes.
    BOUSIGNIES SUR ROC
    DIMECHAUX
    RAUCOURT AU BOIS
    RUESNES

    Pourtant lorsque je les copies dans un autre fichier texte (seulement ces 4 là) cela fonctionne. Je ne vois vraiment pas d'où provenir le problème.

    Est ce que je peux te donner mon code pour le tester chez toi?

    merci
    En tous les cas, ici, ils passent les tests:

    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
    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
    74
    75
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
     
    int comparer_villes(char const *ville1, char const *ville2)
    {
        int ret = 0;
     
        if (ville1 != NULL && ville2 != NULL)
        {
            size_t i = 0;
     
            while (ville1[i] == ville2[i] &&
                    ville1[i] != 0 && ville1[i] != ';' &&
                    ville2[i] != 0 && ville2[i] != ';')
            {
                i++;
            }
     
            if ((ville1[i] == 0 || ville1[i] == ';') &&
                    (ville2[i] == 0 || ville2[i] == ';'))
            {
                ret = 1;
            }
        }
     
        return ret;
    }
     
    /* -tc- Tests */
     
    #define ARRAY_SIZE(a) ( sizeof (a) / sizeof *(a) )
     
    struct Test
        {
            char v1[32];
            char v2[32];
            int resultat;
        };
     
    int main(void)
    {
        struct Test data[]=
        {
            {"BOUSIGNIES SUR ROC", "BOUSIGNIES SUR ROC; 20", 1},
            {"BOUSIGNIES SUR ROC", "Bousignie sur Roc; 20", 0},
            {"DIMECHAUX", "DIMECHAUX; 20", 1},
            {"DIMECHAUX", "BOUSIGNIES SUR ROC; 20", 0},
            {"RAUCOURT AU BOIS", "RAUCOURT AU BOIS; 20", 1},
            {"RAUCOURT AU BOIS; 20", "RAUCOURT AU BOIS", 1},
            {"RUESNES", "RUESNES; 20", 1},
        };
        size_t i;
        int ret = EXIT_SUCCESS;
     
        for (i = 0; i < ARRAY_SIZE(data); i++)
        {
            int rv;
     
            printf("Test%u: \"%s\" %s \"%s\"...   ", i+1, data[i].v1,
                    (data[i].resultat) ? "est egal a":"n'est pas egal a", data[i].v2);
            rv = comparer_villes(data[i].v1, data[i].v2);
            if (rv == data[i].resultat)
            {
                printf("REUSSI\n");
            }
            else
            {
                printf("ECHOUE!\n");
                ret = EXIT_FAILURE;
            }
        }
     
        return 0;
    }
    donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Test1: "BOUSIGNIES SUR ROC" est egal a "BOUSIGNIES SUR ROC; 20"...   REUSSI
    Test2: "BOUSIGNIES SUR ROC" n'est pas egal a "Bousignie sur Roc; 20"...   REUSSI
    Test3: "DIMECHAUX" est egal a "DIMECHAUX; 20"...   REUSSI
    Test4: "DIMECHAUX" n'est pas egal a "BOUSIGNIES SUR ROC; 20"...   REUSSI
    Test5: "RAUCOURT AU BOIS" est egal a "RAUCOURT AU BOIS; 20"...   REUSSI
    Test6: "RAUCOURT AU BOIS; 20" est egal a "RAUCOURT AU BOIS"...   REUSSI
    Test7: "RUESNES" est egal a "RUESNES; 20"...   REUSSI

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  11. #31
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Oui c'est bien ce que je te dis. Si je met les 4 nom de ville dans un fichier à part cela fonctionne mais si je met la liste entière il me les laisse à 0.

    C'est Fou

  12. #32
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par pek.plus.ultra59 Voir le message
    Oui c'est bien ce que je te dis. Si je met les 4 nom de ville dans un fichier à part cela fonctionne mais si je met la liste entière il me les laisse à 0.

    C'est Fou
    C'est que le problème est ailleurs. Poste ton code pour que je puisse voir ça plus dans le détails.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  13. #33
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    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
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <ctype.h>
     
     
    #define MY_BUFFER_SIZE 1024
     
    /* définitions des types et variables associées */
     
    typedef struct 
     {
      char    ville[100];
      int     nb;
     } rmi;
     
    rmi tab[160];
     
     
     
     
    //Fonction qui recopie un fichier contenant les noms des villes
     
    int file_copy(char nomfich[],rmi tab[])
    {
    	FILE *fiche = NULL;
     
     
    	char buffer[MY_BUFFER_SIZE];
    	int i = 0;
    	int cpt = 0;
     
     
    	/* ----- Ouverture du fichier ----- */
     
    	fiche = fopen (nomfich, "r");
     
       	if (!fiche)
    	   {
    	      /* Erreur: impossible d'ouvrir le fichier. */
    	      printf("Erreur: impossible d'ouvrir le fichie");
    	      return -1;
    	   }
     
    	while (fgets(buffer,MY_BUFFER_SIZE,fiche) && i<160)
    		{
    		 char *pLF = NULL;
    		 pLF = strchr(buffer, '\n');
     
    		    if (pLF != NULL) *(pLF) = '\0';
     
    		 strcpy(tab[i].ville,buffer);
    		 tab[i].nb = 0;
    		 //printf("%s\n",tab[i].ville);
    		 cpt ++;		 
    	      	 i++;
    	        }
    fclose(fiche);
    return cpt;
    }
     
     
     
     
    //fonction qui affiche le tableau RMI
     
    void affichage_tab(rmi tab[], int cpt)
    {
     int i=0;
     printf("\n____________________________________________________\n");
     printf("|	 Ville			Nombre de RMI 	   |\n");
     printf("|__________________________________________________|\n");
     
     while (i < cpt)
      {
     
       printf("| %-37s",tab[i].ville);
       printf("%-4d        |\n",tab[i].nb);
       i++;
      }
      printf("|__________________________________________________|\n\n");
    }
     
     
     
     
    //fonction qui remplie le tableau celon le fichier de valeur
    int maj_tab(rmi tab[],char nomfich[], int cpt)
    {
     FILE *fiche;
     char buffer[MY_BUFFER_SIZE];
     int i = 0;
     
     fiche = fopen(nomfich,"r");
     
     if (!fiche)
       {
          /* Erreur: impossible d'ouvrir le fichier. */
          printf("Erreur: impossible d'ouvrir le fichie");
          return -1;
       }
     
    /* On parcour le fichier */
     while (fgets(buffer,MY_BUFFER_SIZE,fiche))
     {
     
    	/*On parcour le tableau de structure RMI pour mettre à jours Tab.nb*/
    	for (i; i<cpt; i++)
    	 {
     
        /*On compare les deux villes dans le buffer et le tableau*/
           int ret = 0;
     
            if (tab[i].ville != NULL && buffer != NULL)
             {
                   size_t j = 1;
     
                         while (tab[i].ville[j] == buffer[j] && tab[i].ville[j] != 0 && tab[i].ville[j] != ';' && buffer[j] != 0 && buffer[j] != ';')
                               {
                                       j++;
                               }
     
                         if ((tab[i].ville[j] == 0 || tab[i].ville[j] == ';')&&( buffer[j] == 0 || buffer[j] == ';'))
                         {
                           ret = 1;
                         }
             }
     
    		/* Si on trouve la ville on recherche le caractère ;*/
    		if(ret == 1)
    		 {
    		  /*On supprime le retour à la ligne*/
    		  char *pLZ = NULL;
    		  pLZ = strchr(buffer, '\n');
     
    		    if (pLZ != NULL)
    			{
    			 *pLZ = '\0';
    			}
    		    else
    			{
    			 /*On finit de lire la ligne jusqu'au LF*/
    			 int c;
    			 while ((c=fgetc(fiche)) != '\n' && c != EOF)
    			 {}
    			}
     
      		  char *pLF = NULL;
    		  pLF = strchr(buffer, ';');
    		  int *pINT = NULL;
    		  int convert = 0;
     
    		    /*Si on trouve le ; alors on remplie le champ tab.nb*/
    		    if (pLF != NULL)
    			{ 
    			 /*On converti la chaine de chiffre en entier et on l'enregistre dans le tableau*/
    			 convert = atoi((pLF + 1));
    			 tab[i].nb = tab[i].nb + convert;
    			}
    		}
    	 }
     
    	/*on réinitialise le compteur de la boucle*/
    	i = 0;
     }
    fclose(fiche);
    return 0;
    }
     
     
     
     
     
    //création du fichier en sortie avec toutes les communes complétées
    int fichier_sortie(rmi tab[], int cpt)
    {
    	FILE *dst = NULL;
    	int rec,i;
     
        dst = fopen ("Denombrement_RMI.txt", "w");
        if (dst)
        {
          for(i=0; i<cpt; i++)
          {
             fprintf (dst, "%s;%d\n", tab[i].ville, tab[i].nb);
          }
     
          if (ferror (dst))
          {
            printf("Erreur lors de l'ecriture du fichier dst : %s\n");
          }
     
          fclose (dst);
        }
    }
     
     
     
     
    /*Partie statistique*/
    void affichage_stat(int cpt, rmi tab[])
    {
    	int total_rmi = 0;
    	int i = 0;
     
    	for (i; i<cpt; i++)
    	{
    		if(tab[i].nb > 0) total_rmi += tab[i].nb;
    	}
     
    	printf("Ce mois ci, nous avons %d allocataires percevant le RMI pour %d communes\n\n", total_rmi, cpt);
    }
     
     
     
     
     
    //Menu
     
    int main()
    {
     	char nomfich[20];
    	int cpt,val;
     
    	printf ("Entrer le nom du fichier modele: ");
    	scanf ("%s",&nomfich);
     
    	cpt = file_copy(nomfich,tab);
    	if (cpt > 0) 
    	{
    	 affichage_tab(tab,cpt);
     
    	 printf ("\nEntrer le nom du fichier RMI: ");
    	 scanf ("%s",&nomfich);
     
    	 val = maj_tab(tab, nomfich, cpt);
     
    	 if (val != -1) 
    	  {
    		affichage_tab(tab,cpt);
    		fichier_sortie(tab,cpt);
    	  }
    	 affichage_stat(cpt,tab);
         _getch();
    	}
    }

  14. #34
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    As-tu un exemple de fichier modèle et de fichier RMI?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  15. #35
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Liste RMI
    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
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    AIBES ;0
    AIBES ;9
    AMFROIPRET ;3
    ANICHE ;1
    ANOR ;95
    ANZIN ;1
    ASSEVENT ;0
    ASSEVENT ;48
    AUDIGNIES ;1
    AULNOYE AYMERIES ;0
    AULNOYE AYMERIES ;348
    AVESNELLES ;49
    AVESNES SUR HELPE ;329
    AVESNES SUR HELPE ;1
    AVESNES SUR HELPE ;1
    BACHANT ;64
    BAIVES ;2
    BAPAUME ;1
    BAS LIEU ;3
    BAVAY ;90
    BAVAY ;2
    BEAUDIGNIES ;6
    BEAUFORT ;12
    BEAUREPAIRE SUR SAMBRE ;6
    BEAURIEUX ;2
    BELLIGNIES ;12
    BERELLES ;2
    BERLAIMONT ;89
    BERMERIES ;11
    BERSILLIES ;1
    BETTIGNIES ;4
    BETTRECHIES ;2
    BEUGNIES ;7
    BOULOGNE SUR HELPE ;2
    BOUSIES ;41
    BOUSIGNIES SUR ROC ;4
    BOUSSIERES SUR SAMBRE ;6
    BOUSSOIS ;106
    BRY ;1
    CAEN ;1
    CARTIGNIES ;8
    CERFONTAINE ;7
    CHAMBERY ;1
    CHASSE SUR RHONE ;1
    CHOISIES ;1
    CLAIRFAYTS ;10
    COLLERET ;32
    COMPIEGNE ;1
    CONDOM ;1
    COUSOLRE ;63
    CROIX CALUYAU ;3
    DAMOUSIES ;3
    DIMECHAUX ;1
    DIMONT ;1
    DOMPIERRE SUR HELPE ;17
    DOUCHY LES MINES ;1
    DOURLERS ;10
    DOUZIES ;6
    ECCLES ;1
    ECLAIBES ;4
    ECUELIN ;1
    ELESMES ;3
    ENGLEFONTAINE ;28
    ENGLEFONTAINE ;1
    EPPE SAUVAGE ;7
    ETH ;1
    ETROEUNGT ;28
    FEIGNIES ;174
    FELLERIES ;18
    FERON ;6
    FERRIERE LA GRANDE ;169
    FERRIERE LA PETITE ;20
    FLAUMONT WAUDRECHIES ;1
    FLEURY D AUDE ;1
    FLOURSIES ;4
    FLOYON ;7
    FONTAINE AU BOIS ;1
    FOREST EN CAMBRESIS ;9
    FOURMIES ;0
    FOURMIES ;736
    FRASNOY ;4
    GHISSIGNIES ;1
    GLAGEON ;51
    GOGNIES CHAUSSEE ;7
    GOMMEGNIES ;29
    GRAND FAYT ;6
    GUSSIGNIES ;2
    HARGNIES ;6
    HAUT LIEU ;1
    HAUTMONT ;0
    HAUTMONT ;814
    HECQ ;3
    HELLEMMES LILLE ;1
    HERBIGNIES VILLEREAU ;1
    HESTRUD ;8
    HIRSON ;2
    HON HERGIES ;9
    HOUDAIN LEZ BAVAY ;10
    JENLAIN ;19
    JEUMONT ;0
    JEUMONT ;564
    JOLIMETZ ;5
    LA FLAMENGRIE ;7
    LA LONGUEVILLE ;24
    LANDRECIES ;142
    LAROUILLIES ;2
    LE FAVRIL ;10
    LE PUY EN VELAY ;1
    LE QUESNOY ;0
    LE QUESNOY ;130
    LEVAL ;53
    LEZ FONTAINE ;2
    LIESSIES ;7
    LILLE ;2
    LIMONT FONTAINE ;7
    LOCQUIGNOL ;5
    LOUVIGNIES QUESNOY ;16
    LOUVROIL ;0
    LOUVROIL ;417
    MAIRIEUX ;5
    MARBAIX ;5
    MARESCHES ;10
    MARGNY LES COMPIEGNE ;1
    MAROILLES ;31
    MARPENT ;108
    MAUBEUGE ;0
    MAUBEUGE ;1709
    MECQUIGNIES ;7
    MEILLERIE ;1
    MONCEAU ST WAAST ;8
    MONTPELLIER FACULTES CCT1 ;0
    MOUSTIER EN FAGNE ;2
    NEUF MESNIL ;45
    NEUVELLE LES CROMARY ;1
    NOYELLES SUR SAMBRE ;3
    OBIES ;9
    OBRECHIES ;1
    OHAIN ;17
    ORSINVAL ;4
    PELUSSIN ;1
    PERPIGNAN ;2
    PETIT FAYT ;2
    POIX DU NORD ;38
    PONT ST ESPRIT ;1
    PONT SUR SAMBRE ;56
    POTELLE ;3
    PREUX AU BOIS ;0
    PREUX AU BOIS ;13
    PREUX AU SART ;4
    PRISCHES ;12
    QUIEVELON ;7
    RAINSARS ;2
    RAISMES ;1
    RAMOUSIES ;1
    RAUCOURT AU BOIS ;2
    RECQUIGNIES ;0
    RECQUIGNIES ;84
    REIMS ;1
    RIVESALTES ;1
    ROBERSART ;3
    ROUSIES ;89
    RUESNES ;3
    SAINS DU NORD ;87
    SALESCHES ;2
    SARS POTERIES ;45
    SASSEGNIES ;2
    SEMERIES ;6
    SEMOUSIES ;2
    SEPMERIES ;1
    SOLRE LE CHATEAU ;41
    SOLRINNES ;3
    ST AMAND MONTROND ;1
    ST AUBIN ;3
    ST HILAIRE SUR HELPE ;11
    ST REMY CHAUSSEE ;10
    ST REMY DU NORD ;13
    ST WAAST LA VALLEE ;8
    TAISNIERES EN THIERACHE ;6
    TAISNIERES SUR HON ;13
    TRELON ;0
    TRELON ;72
    VALENCIENNES ;2
    VENDEGIES AU BOIS ;5
    VIEUX MESNIL ;4
    VIEUX RENG ;13
    VILLEREAU ;9
    VILLERS POL ;13
    VILLERS SIRE NICOLE ;15
    WALLERS TRELON ;3
    WARGNIES LE GRAND ;19
    WARGNIES LE PETIT ;5
    WATTIGNIES LA VICTOIRE ;1
    WIGNEHIES ;116
    WILLIES ;7
    Les Villes qui servent à remplir le tableau


    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
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    AIBES 
    AMFROIPRET 
    ANOR 
    ASSEVENT 
    AUDIGNIES 
    AULNOYE AYMERIES 
    AVESNELLES 
    AVESNES SUR HELPE 
    BACHANT 
    BAIVES 
    BAS LIEU 
    BAVAY 
    BEAUDIGNIES 
    BEAUFORT 
    BEAUREPAIRE SUR SAMBRE 
    BEAURIEUX 
    BELLIGNIES 
    BERELLES 
    BERLAIMONT 
    BERMERIES 
    BERSILLIES 
    BETTIGNIES 
    BETTRECHIES 
    BEUGNIES 
    BOULOGNE SUR HELPE 
    BOUSIES 
    BOUSIGNIES SUR ROC 
    BOUSSIERES SUR SAMBRE 
    BOUSSOIS 
    BRY 
    CARTIGNIES 
    CERFONTAINE 
    CHOISIES 
    CLAIRFAYTS 
    COLLERET 
    COUSOLRE 
    CROIX CALUYAU 
    DAMOUSIES 
    DIMECHAUX 
    DIMONT 
    DOMPIERRE SUR HELPE 
    DOURLERS 
    ECCLES 
    ECLAIBES 
    ECUELIN 
    ELESMES 
    ENGLEFONTAINE 
    EPPE SAUVAGE 
    ETH 
    ETROEUNGT 
    FEIGNIES 
    FELLERIES 
    FERON 
    FERRIERE LA GRANDE 
    FERRIERE LA PETITE 
    FLAUMONT WAUDRECHIES 
    FLOURSIES 
    FLOYON 
    FONTAINE AU BOIS 
    FOREST EN CAMBRESIS 
    FOURMIES 
    FRASNOY 
    GHISSIGNIES 
    GLAGEON 
    GOGNIES CHAUSSEE 
    GOMMEGNIES 
    GRAND FAYT 
    GUSSIGNIES 
    HARGNIES 
    HAUT LIEU 
    HAUTMONT 
    HECQ 
    HESTRUD 
    HON HERGIES 
    HOUDAIN LEZ BAVAY 
    JENLAIN 
    JEUMONT 
    JOLIMETZ 
    LA FLAMENGRIE 
    LA LONGUEVILLE 
    LANDRECIES 
    LAROUILLIES 
    LE FAVRIL 
    LE QUESNOY 
    LEVAL 
    LEZ FONTAINE 
    LIESSIES 
    LIMONT FONTAINE 
    LOCQUIGNOL 
    LOUVIGNIES QUESNOY 
    LOUVROIL 
    MAIRIEUX 
    MARBAIX 
    MARESCHES 
    MAROILLES 
    MARPENT 
    MAUBEUGE 
    MECQUIGNIES 
    MONCEAU ST WAAST 
    MOUSTIER EN FAGNE 
    NEUF MESNIL 
    NEUVILLE EN AVESNOIS 
    NOYELLES SUR SAMBRE 
    OBIES 
    OBRECHIES 
    OHAIN 
    ORSINVAL 
    PETIT FAYT 
    POIX DU NORD 
    PONT SUR SAMBRE 
    POTELLE 
    PREUX AU BOIS 
    PREUX AU SART 
    PRISCHES 
    QUIEVELON 
    RAINSARS 
    RAMOUSIES 
    RAUCOURT AU BOIS 
    RECQUIGNIES 
    ROBERSART 
    ROUSIES 
    RUESNES 
    SAINS DU NORD 
    SALESCHES 
    SARS POTERIES 
    SASSEGNIES 
    SEMERIES 
    SEMOUSIES 
    SEPMERIES 
    SOLRE LE CHATEAU 
    SOLRINNES 
    ST AUBIN 
    ST HILAIRE SUR HELPE 
    ST REMY CHAUSSEE 
    ST REMY DU NORD 
    ST WAAST LA VALLEE 
    TAISNIERES EN THIERACHE 
    TAISNIERES SUR HON 
    TRELON 
    VENDEGIES AU BOIS 
    VIEUX MESNIL 
    VIEUX RENG 
    VILLEREAU 
    VILLERS POL 
    VILLERS SIRE NICOLE 
    WALLERS TRELON 
    WARGNIES LE GRAND 
    WARGNIES LE PETIT 
    WATTIGNIES LA VICTOIRE 
    WIGNEHIES 
    WILLIES

  16. #36
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Ceci fonctionne correctement:

    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
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <ctype.h>
     
    #define MY_BUFFER_SIZE 1024
    #define NB_COMMUNES_MAX 160
     
    /* définitions des types et variables associées */
     
    typedef struct
    {
        char    ville[100];
        int     nb;
    }
    rmi;
     
    /* -tc- Pourquoi tab est-il une variable locale. Je le passe dans main()
    rmi tab[160];
    */
     
    /* -tc- Elimine le caractere de fin de ligne saisi par fgets() et fait le menage
       sur le flux entrant en cas de saisie tronquee. */
    void fclean(char *buffer, FILE *fp)
    {
        if (buffer != NULL && fp != NULL)
        {
            char *pc = strchr(buffer, '\n');
     
            if (pc != NULL)
            {
                *pc = 0;
            }
            else
            {
            }
        }
    }
     
    /* -tc- Elimine les caracteres d'espacement en queue de chaine. */
    char * str_rstrip(char *s)
    {
        if (s != NULL)
        {
            size_t len = strlen(s);
            size_t i = len - 1;
     
            while (i > 0 && isspace(s[i]))
            {
                i--;
            }
            s[i + 1] = 0;
     
            if (isspace(s[i]))
            {
                s[i] = 0;
            }
        }
     
        return s;
    }
     
    /* Fonction qui recopie un fichier contenant les noms des villes */
    int file_copy(char nomfich[], rmi tab[], int taille)
    {
        FILE *fiche = NULL;
        char buffer[MY_BUFFER_SIZE] = "";
        int i = 0;
        int cpt = 0;
     
        /* ----- Ouverture du fichier ----- */
        fiche = fopen (nomfich, "r");
        /* -tc- C'est un question de gout personnel, mais je prefere un test explicite
           tel que fichier == NULL a !fiche. */
        if (!fiche)
        {
            /* Erreur: impossible d'ouvrir le fichier. */
            fprintf(stderr, "Erreur: impossible d'ouvrir le fichie\n");
            /* -tc- En general, je ne recommande poas l'emploi de return sauvages,
               mais c'est un style */
            return -1;
        }
     
        while (fgets(buffer, MY_BUFFER_SIZE, fiche) && i < taille)
        {
            fclean(buffer, fiche);
     
            /* -tc- Attention a securiser la copie pour eviter les debordements. Pour
               ce faire, j'utilise strncat().
            strcpy(tab[i].ville, buffer);
            */
            tab[i].ville[0] = 0;
            strncat(tab[i].ville, buffer, sizeof tab[i].ville - 1);
            tab[i].nb = 0;
            cpt++;
            i++;
        }
        fclose(fiche);
        return cpt;
    }
     
    /* fonction qui affiche le tableau RMI */
    void affichage_tab(rmi tab[], int cpt)
    {
        int i = 0;
     
        printf("____________________________________________________\n");
        printf("|	 Ville			Nombre de RMI 	               |\n");
        printf("|__________________________________________________|\n");
     
        while (i < cpt)
        {
            printf("| %-37s", tab[i].ville);
            printf("%-4d        |\n", tab[i].nb);
            i++;
        }
        printf("|__________________________________________________|\n\n");
    }
     
    /* Fonction qui remplie le tableau celon le fichier de valeur */
    int maj_tab(char nomfich[], rmi tab[], int cpt)
    {
        FILE *fiche = NULL;
        char buffer[MY_BUFFER_SIZE];
        int i = 0;
     
        fiche = fopen(nomfich, "r");
        if (!fiche)
        {
            /* Erreur: impossible d'ouvrir le fichier. */
            fprintf(stderr, "Erreur: impossible d'ouvrir le fichien\n");
            return -1;
        }
     
        /* On parcour le fichier */
        while (fgets(buffer, MY_BUFFER_SIZE, fiche))
        {
            char *ville = NULL;
            char *nombre = NULL;
            int nb;
            char *pend = NULL;
     
            fclean(buffer, fiche);
     
            /* -tc- On recupere le nom de la ville */
            ville = strtok(buffer, ";");
            str_rstrip(ville);
            /* -tc- On recupere le nombre */
            nombre = strtok(NULL, "");
            nb = strtol(nombre, &pend, 0);
            if (*pend != 0)
            {
                /* Erreur de format du fichier RMI */
                fprintf(stderr, "Erreur de format du fichier RMI\n");
                return -1;
            }
     
     
            /* On parcour le tableau de structure RMI pour mettre a jour Tab.nb */
            for (i = 0; i < cpt; i++)
            {
                if (strcmp(tab[i].ville, ville) == 0)
                {
                    tab[i].nb = nb;
                }
            }
        }
        fclose(fiche);
     
        return 0;
    }
     
     
     
     
     
    /* creation du fichier en sortie avec toutes les communes completees */
    void fichier_sortie(rmi tab[], int cpt)
    {
        FILE *dst = NULL;
        int i;
     
        dst = fopen ("Denombrement_RMI.txt", "w");
        if (dst)
        {
            for (i = 0; i < cpt; i++)
            {
                fprintf (dst, "%s;%d\n", tab[i].ville, tab[i].nb);
            }
     
            if (ferror (dst))
            {
                fprintf(stderr, "Erreur lors de l'ecriture du fichier dst\n");
            }
     
            fclose (dst);
        }
    }
     
     
     
     
    /* Partie statistique */
    void affichage_stat(int cpt, rmi tab[])
    {
        int total_rmi = 0;
        int i = 0;
     
        for (i = 0; i < cpt; i++)
        {
            if (tab[i].nb > 0)
            {
                total_rmi += tab[i].nb;
            }
        }
     
        printf("Ce mois ci, nous avons %d allocataires percevant le RMI pour %d communes\n", total_rmi, cpt);
    }
     
    int main(void)
    {
        char nomfich[20] = "";
        int cpt;
        int val;
        rmi tab[NB_COMMUNES_MAX] = {{"", 0}};
     
        printf ("Entrer le nom du fichier modele: ");
        /* -tc- On force l'affichage de l'invide en vidant le tampon du flux de
           sortie standard */
        fflush(stdout);
        /* -tc- le spécificateur de format %s de scanf() attend qu'on lui passe un
           argument de type pointeur sur char. &nomfich n'est pas de type pointeur
           sur char (char *) mais pointeur sur tableau de 20 char. Ces type sont
           incompatibles et le compilateur gueule... avec raison! Pour des raisons
           de securite et de robustesse du code, je pense que scanf() n'est pas la
           fonction la plus adaptee pour saisir du texte a partir de stdin. La
           grande majorite du temps, il existe une meilleure solution: fgets().
        scanf ("%s", nomfich);
        */
        fgets(nomfich, sizeof nomfich, stdin);
        fclean(nomfich, stdin);
     
        cpt = file_copy(nomfich, tab, NB_COMMUNES_MAX);
        if (cpt > 0)
        {
            affichage_tab(tab, cpt);
     
            printf ("Entrer le nom du fichier RMI: ");
            /* -tc- On force l'affichage de l'invide en vidant le tampon du flux de
           sortie standard */
            fflush(stdout);
            fgets(nomfich, sizeof nomfich, stdin);
            fclean(nomfich, stdin);
     
            val = maj_tab(nomfich, tab, cpt);
     
            if (val != -1)
            {
                affichage_tab(tab, cpt);
                fichier_sortie(tab, cpt);
            }
            affichage_stat(cpt, tab);
            /* -tc- Cette fonction n'appartient pas à la bibliothèque standard
            _getch();
            */
        }
     
        return 0;
    }
    Du point de vue de la performance, tu aurais avantage à remplacer ton tableau tab par un tableau trié (de manière à pouvoir effectuer une recherche dicotomique) ou par une table de hachage.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  17. #37
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Je te remercie.

    Je viens de tester ton code mais ca me retourne un fichier qu'avec des 0 pour le nombre des rmi.

    le probleme ne viendrais pas de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nombre = strtok(NULL, "");
    ?

  18. #38
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par pek.plus.ultra59 Voir le message
    Je te remercie.

    Je viens de tester ton code mais ca me retourne un fichier qu'avec des 0 pour le nombre des rmi.

    le probleme ne viendrais pas de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nombre = strtok(NULL, "");
    ?
    Chez moi je n'ai pas de problème. D'abord, il te retourne le tableau avec des 0 partout. Ensuite, le programme te demande de saisir le nom du fichier RMI, puis afficher le contenu de tab mis à jour. Enfin, le programme enregiste le contenu de tab dans le fichier Denombrement_RMI.txt. Voici le fichier Denombrement_RMI.txt que j'obtient:

    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
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    AIBES;9
    AMFROIPRET;3
    ANOR;95
    ASSEVENT;48
    AUDIGNIES;1
    AULNOYE AYMERIES;348
    AVESNELLES;49
    AVESNES SUR HELPE;1
    BACHANT;64
    BAIVES;2
    BAS LIEU;3
    BAVAY;2
    BEAUDIGNIES;6
    BEAUFORT;12
    BEAUREPAIRE SUR SAMBRE;6
    BEAURIEUX;2
    BELLIGNIES;12
    BERELLES;2
    BERLAIMONT;89
    BERMERIES;11
    BERSILLIES;1
    BETTIGNIES;4
    BETTRECHIES;2
    BEUGNIES;7
    BOULOGNE SUR HELPE;2
    BOUSIES;41
    BOUSIGNIES SUR ROC;4
    BOUSSIERES SUR SAMBRE;6
    BOUSSOIS;106
    BRY;1
    CARTIGNIES;8
    CERFONTAINE;7
    CHOISIES;1
    CLAIRFAYTS;10
    COLLERET;32
    COUSOLRE;63
    CROIX CALUYAU;3
    DAMOUSIES;3
    DIMECHAUX;1
    DIMONT;1
    DOMPIERRE SUR HELPE;17
    DOURLERS;10
    ECCLES;1
    ECLAIBES;4
    ECUELIN;1
    ELESMES;3
    ENGLEFONTAINE;1
    EPPE SAUVAGE;7
    ETH;1
    ETROEUNGT;28
    FEIGNIES;174
    FELLERIES;18
    FERON;6
    FERRIERE LA GRANDE;169
    FERRIERE LA PETITE;20
    FLAUMONT WAUDRECHIES;1
    FLOURSIES;4
    FLOYON;7
    FONTAINE AU BOIS;1
    FOREST EN CAMBRESIS;9
    FOURMIES;736
    FRASNOY;4
    GHISSIGNIES;1
    GLAGEON;51
    GOGNIES CHAUSSEE;7
    GOMMEGNIES;29
    GRAND FAYT;6
    GUSSIGNIES;2
    HARGNIES;6
    HAUT LIEU;1
    HAUTMONT;814
    HECQ;3
    HESTRUD;8
    HON HERGIES;9
    HOUDAIN LEZ BAVAY;10
    JENLAIN;19
    JEUMONT;564
    JOLIMETZ;5
    LA FLAMENGRIE;7
    LA LONGUEVILLE;24
    LANDRECIES;142
    LAROUILLIES;2
    LE FAVRIL;10
    LE QUESNOY;130
    LEVAL;53
    LEZ FONTAINE;2
    LIESSIES;7
    LIMONT FONTAINE;7
    LOCQUIGNOL;5
    LOUVIGNIES QUESNOY;16
    LOUVROIL;417
    MAIRIEUX;5
    MARBAIX;5
    MARESCHES;10
    MAROILLES;31
    MARPENT;108
    MAUBEUGE;1709
    MECQUIGNIES;7
    MONCEAU ST WAAST;8
    MOUSTIER EN FAGNE;2
    NEUF MESNIL;45
    NEUVILLE EN AVESNOIS;0
    NOYELLES SUR SAMBRE;3
    OBIES;9
    OBRECHIES;1
    OHAIN;17
    ORSINVAL;4
    PETIT FAYT;2
    POIX DU NORD;38
    PONT SUR SAMBRE;56
    POTELLE;3
    PREUX AU BOIS;13
    PREUX AU SART;4
    PRISCHES;12
    QUIEVELON;7
    RAINSARS;2
    RAMOUSIES;1
    RAUCOURT AU BOIS;2
    RECQUIGNIES;84
    ROBERSART;3
    ROUSIES;89
    RUESNES;3
    SAINS DU NORD;87
    SALESCHES;2
    SARS POTERIES;45
    SASSEGNIES;2
    SEMERIES;6
    SEMOUSIES;2
    SEPMERIES;1
    SOLRE LE CHATEAU;41
    SOLRINNES;3
    ST AUBIN;3
    ST HILAIRE SUR HELPE;11
    ST REMY CHAUSSEE;10
    ST REMY DU NORD;13
    ST WAAST LA VALLEE;8
    TAISNIERES EN THIERACHE;6
    TAISNIERES SUR HON;13
    TRELON;72
    VENDEGIES AU BOIS;5
    VIEUX MESNIL;4
    VIEUX RENG;13
    VILLEREAU;9
    VILLERS POL;13
    VILLERS SIRE NICOLE;15
    WALLERS TRELON;3
    WARGNIES LE GRAND;19
    WARGNIES LE PETIT;5
    WATTIGNIES LA VICTOIRE;1
    WILLIES;7
    WIGNEHIES;116
    Ca me semble OK.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  19. #39
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    En effet tes résultats me semble correcte.

    Tu utilises quel compilateur? J'utilise dev c++.

  20. #40
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par pek.plus.ultra59 Voir le message
    En effet tes résultats me semble correcte.

    Tu utilises quel compilateur? J'utilise dev c++.
    gcc (N.B. Dev-C++ n'est pas un compilateur mais un environnement de développement intégré. Il y a donc de grandes chances que tu utilises Mingw, qui est un port Windows de gcc)

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Problème avec un tableau de structure
    Par Sofute dans le forum C
    Réponses: 10
    Dernier message: 16/10/2007, 15h29
  2. Problème avec redimensionnement tableau
    Par PoZZyX dans le forum Réseau
    Réponses: 18
    Dernier message: 20/04/2006, 15h46
  3. Problème avec un tableau et saut de ligne
    Par ero-sennin dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/03/2006, 18h48
  4. Problème avec un tableau de tableau
    Par SubZero2 dans le forum Langage
    Réponses: 4
    Dernier message: 07/12/2005, 15h25
  5. problème avec un tableau dans un insert ...
    Par vbcasimir dans le forum Langage
    Réponses: 3
    Dernier message: 02/11/2005, 14h31

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