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 des occurences


Sujet :

C

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut Problème avec des occurences
    Voila tout d'abord bonjour à vous , j'ai un problème avec un programme que j'ai commencé ce matin et que j'aimerais bien finir avant ce soir...

    Voila en fait j'essaye de faire un programme qui permet à l'utilisateur de saisir une chaine de caractères, puis d'afficher (sous forme de tableau) les 26 lettres de l'alphabet et d'indiquer le pourcentage de lettres présentes dans la chaine rentrée par l'utilisateur.. j'ai un problème pour Calculer se pourcentage et ensuite l'afficher.... si quelqu'un aurait la bonté de m'aider ... merci d'avance !

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 98
    Par défaut
    Salut à toi,

    Peux-tu poster ce que tu as déjà codé? Ca nous aiderait à trouver le problème

    A +

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut j'oubliai
    Le souci c'est que je ne sais pas comment faire, j'ai essayer plein de truc mais avec des erreurs pas possibles, donc le debut de mon prog c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char chaine1[127+3];
     
    clrscr();
    gotoxy(10,2);
    puts("Voici le pourcentage des differentes lettres employees :");
    gotoxy(1,5);
    gets(chaine1);

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    Par défaut
    Déjà, ton code est incomplet.
    Ensuite, tu utilises des fonctions non-standard qui bien qu'esthétiques, sont plutôt inutiles. Ça, on peut le pardonner.
    Mais que tu utilises gets() -> classement vertical.

    Commence par remplacer ton appel à gets() par un appel correct à fgets(), puis poste ton code compilable actuel. On va t'aider progressivement à faire ta fonction de comptage d'occurences (tout en minuscules pour commencer).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut Okay
    Merci bien pour ton aide Médinoc voici mon code compilable :
    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
    void main (void)
    {
     
       char chaine1[128];
     
     
       do
       {
          /* Présentation écran */
          clrscr();
          gotoxy(10,2);
          puts("Voici le pourcentage des differentes lettres employees :");
          gotoxy(1,5);
          FF;
          gets(chaine1);
     
          while (ptrscrut!=NULL)/*je commence à essayer de chercher l'occu(pas fini)*/
          {
          printf("%s\n",chaine1);/*pour voir si au moins sa sa marche ^^ */
     
          puts("Un autre traitement?'O' ou 'o' pour oui ou touche qcq pour quitter : ");
       }
       while(toupper(getche()) =='O');
    }

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    Par défaut
    1. main() retourne un int. Toujours.
    2. Tu persistes à utiliser gets(). On a dit fgets().
    3. C'est quoi FF ?
    4. Il manque une accolade fermante.


    Ensuite: Commence par écrire le prototype de ta fonction de comptage. On va supposer qu'elle fait l'affichage en plus, donc elle n'aura rien à retourner. Par contre, elle aura besoin de la chaîne en paramètre.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    1. main() retourne un int. Toujours.
    2. Tu persistes à utiliser gets(). On a dit fgets().
    3. C'est quoi FF ?
    4. Il manque une accolade fermante.

    1. oups
    2. j'ai pas encore changé désoler.
    3. j'ai déclaré un #define FF fflush (stdin)
    4. c'est normal j'ai dit que j'avais pas fini..

    Pour la fonction de comptage j'pensais utiliser un pointeur avec une boucle pour le comptage mais la je vois pas du tout comment faire...

  8. #8
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par Sorus Voir le message
    1. oups
    2. j'ai pas encore changé désoler.
    3. j'ai déclaré un #define FF fflush (stdin)
    4. c'est normal j'ai dit que j'avais pas fini..

    Pour la fonction de comptage j'pensais utiliser un pointeur avec une boucle pour le comptage mais la je vois pas du tout comment faire...
    3 fflush ne peut pas être utilisé avec un flux d'entrée
    4 Donc le code n'était pas compilable contrairement à ce que tu disais !
    5 c'est quoi ce ptrscrut

  9. #9
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut aye
    Ah oui j'ai posté le code pas fini (avec mes "pseudo-tests") sa c'est ce que j'avais écris :
    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
    void main (void)
    {
     
       char chaine1[128];
     
     
       do
       {
       	/* Présentation écran */
       	clrscr();
       	gotoxy(10,2);
       	puts("Voici le pourcentage des differentes lettres employees :");
            gotoxy(1,5);
     
            gets(chaine1);
            printf("%s",chaine1);        
     
           	puts("Un autre traitement?'O' ou 'o' pour oui ou touche qcq pour quitter : ");
       }
       while(toupper(getche()) =='O');
    }

    Voila SA c'est sur sa se compile

    Mais le probleme c'est sa c'est juste que je sais pas comment faire ou plutot quoi utiliser pour calculer le pourcentage de lettres qui reviennent dans ma chaine de caractère (exemple je tape "abc" sa doit m'afficher A:33.33 B:33.33 C:33.33 et toutes les autres lettres :0.00)

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    Par défaut
    Commence par écrire le prototype de ta fonction de comptage. On va supposer qu'elle fait l'affichage en plus, donc elle n'aura rien à retourner. Par contre, elle aura besoin de la chaîne en paramètre.

    On va faire en deux étapes: D'abord compter les lettres, puis transformer ces comptes en pourcentages.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut dsl
    Désolé je crois que j'ai oublié un petit détail qui a son importance, j'aimerais, si possible ne pas utiliser de fonctions dans mon programme.. enfin uniquement le main, si possible bien sur..

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    Par défaut
    Ridicule.
    Les fonctions permettent de mieux comprendre le code et de mieux l'organiser.

    De plus, main() est une fonction aussi, tu sais... Tout comme clrscr(), gotoxy(), puts()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut
    Bon voila j'ai un peu avancé mais le prog ne calcul maleureusement pas le nombre d'occurences et il n'y a que le Y qui s'affiche... avec une valeur = 0.000 meme si je tape YYYYYYYY .... si quelqu'un peut me dire mes erreurs ?

    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
    int main (void)
    {
    	/* Les déclarations */
       char 	chaine[127+3],
       		tabLettres[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
       float tabValeurs[26];
       unsigned int i;
       char* ptrScrut;
       int	posx,posy;
     
     
       do
       {
       	/* Titre */
          clrscr();
          gotoxy(12,2);
          puts("*****    chaines de caracteres       *****");
          gotoxy(12,3);
          puts("*    Auteur : Martins Alexis             *");
          gotoxy(12,4);
          puts("*****        Date : 02/11/07         *****");
     
          /* Saisie de la chaine */
          gotoxy(1,8);
          clreol();
          printf("Saisir votre  chaine (127 caracteres maxi): ");
          gets(chaine);
     
          /* Affichage de la chaine */
          clrscr();
          gotoxy(12,2);
          puts("Voici le pourcentage des differentes lettres employees :");
          gotoxy(2,4);
          printf("Rappel de la chaine : %s",chaine);
     
          /* Recherche des occurences */
          for (i=0;i<27;i++)
          {
     
             tabValeurs[i]=0;
             ptrScrut = strchr(chaine,tabLettres[i]);
             while (ptrScrut!=NULL)
             {
                tabValeurs[i]= tabValeurs[i]++;
                ptrScrut=strchr(ptrScrut+1,tabLettres[i]);
             }
     
     
     
          /* Affichage du nombre d'occurences */
             posx = 20;
             posy = 8;
             gotoxy(posx,posy);
             posy = posy+1;
          	printf("\n%c",tabLettres[i]);
          	printf("\n%f",tabValeurs[i]);
             i++;
     
          }
     
     
          /* Calcul des pourcentages */
     
     
       	puts("\n\nUn autre traitement?'O' ou 'o' ou touche qcq pour quitter : ");
       }
       while(toupper(getche()) =='O');
    }

  14. #14
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut
    Bon voila version corrigée maintenant il m'affiche bien A: 0.00 B: 0.00
    mais c'est tout , .... il me calcul toujours pas les occurences, et ya toujours que A et B pas le reste, je pense avoir un probleme avec ma boucle for et avec mon affichage ..... je reposte mon nouveau code (compilable):

    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
    void main (void)
    {
    	/* Les déclarations */
       char 	chaine[128],
       		tabLettres[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
       float tabValeurs[27];
       unsigned int i;
       char* ptrScrut;
       int	posx,posy;
     
     
       do
       {
       	/* Titre */
          clrscr();
          gotoxy(12,2);
          puts("*****    chaines de caracteres       *****");
          gotoxy(12,3);
          puts("*    Auteur : Martins Alexis             *");
          gotoxy(12,4);
          puts("*****        Date : 02/11/07         *****");
     
          /* Saisie de la chaine */
          gotoxy(1,8);
          clreol();
          printf("Saisir votre  chaine (127 caracteres maxi): ");
          gets(chaine);
     
          /* Affichage de la chaine */
          clrscr();
          gotoxy(12,2);
          puts("Voici le pourcentage des differentes lettres employees :");
          gotoxy(2,4);
          printf("Rappel de la chaine : %s",chaine);
     
          /* Recherche des occurences */
          for (i=0;i<27;i++)
          {
     
             tabValeurs[0]=0;
             ptrScrut = strchr(chaine,tabLettres[0]);
             while (ptrScrut!=NULL)
             {
                tabValeurs[0]= tabValeurs[0]++;
                ptrScrut=strchr(ptrScrut+1,tabLettres[0]);
             }
     
     
     
          /* Affichage du nombre d'occurences */
             posx = 20;
             posy = 8;
             gotoxy(posx,posy);
     
          	printf("\n\t\t%c: %5.2f\t%c: %5.2f\n",tabLettres[0],tabValeurs[0],tabLettres[0+1],tabValeurs[0+1]);
          	tabValeurs[0++];
     
     
          }
     
     
          /* Calcul des pourcentages */
     
     
       	puts("\n\nUn autre traitement?'O' ou 'o' ou touche qcq pour quitter : ");
       }
       while(toupper(getche()) =='O');
    }

Discussions similaires

  1. Problème avec des transaction
    Par Oluha dans le forum ASP
    Réponses: 16
    Dernier message: 01/03/2005, 16h40
  2. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 12h17
  3. Réponses: 5
    Dernier message: 19/08/2004, 12h11
  4. [STRUTS] Problème avec des ActionForm
    Par zarbydigital dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/03/2004, 14h49
  5. Problèmes avec des vues
    Par dady dans le forum MFC
    Réponses: 22
    Dernier message: 09/01/2004, 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