Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

demande d'aide en langage C



  1. #1
    yann85

    demande d'aide en langage C


    ------

    bonjour,

    J'ai 1 petit programme en C. Il y a 2 parties à faire : compter le nombre de caractères et le nombre d’occurrences de la lettre 'a' dans la phrase.
    J'ai réussi à compter le nombre de caractère. Par contre, pour la lettre 'a', je n'arrive pas. Vous pouvez m'aide et corriger mon programme. Merci
    Voici mon programme en C

    PS: j'ai écrit mon programme en utilisant les fonctions et les procédures.


    Code:
    void saisie(char t[100]){
        gets(t);
    }
    
    void affiche(char t[100]){
        printf("%s\n",t);
    }
    
    int caractere(char t[100]){
        int i=0;
        while(t[i]!='\0'){
            i++;
        }
        return i;
    }
    
    int nbr_a (char t[100]){
        int i=0;
        while(t[i]!='\0'){
            if(t[i]=='a')
            i++;
        }
        return i;
    }
    
    int main (){
        char phrase[100];
        printf("tapez 1 phrase\n");
        saisie(phrase);
        affiche(phrase);
        printf("le nombre de caractere:%i\n", caractere(phrase));
        printf("le nombre de 'a':%i\n", nbr_a(phrase));
    }

    -----
    Dernière modification par JPL ; 13/09/2011 à 00h12. Motif: Changement de balise : utilise Code

  2. Publicité
  3. #2
    photon57

    Re : demande d'aide en langage C

    Citation Envoyé par yann85 Voir le message
    bonjour,

    J'ai 1 petit programme en C. Il y a 2 parties à faire : compter le nombre de caractères et le nombre d’occurrences de la lettre 'a' dans la phrase.
    J'ai réussi à compter le nombre de caractère. Par contre, pour la lettre 'a', je n'arrive pas. Vous pouvez m'aide et corriger mon programme. Merci
    Voici mon programme en C

    PS: j'ai écrit mon programme en utilisant les fonctions et les procédures.
    Dans la partie

    int nbr_a (char t[100]){
    int i=0;
    while(t[i]!='\0'){
    if(t[i]=='a')
    i++;
    }
    return i;
    }

    Tu incrémentes ton pointeur que lorsque tu trouves un ´a´ alors qu'il faut l'incrémenter tout le temps. Il te faut un compteur indépendant pour renvoyer le nombre de ´a´.

  4. #3
    whoami

    Re : demande d'aide en langage C

    Bonjour,

    C'est typiquement le genre de problème qu'on résout avec les bases, c'est à dire : papier + crayon.

    Tu considères une chaîne de caractères, et tu exécutes ton programme à la main, en notant pas à pas l'évolution des variables, et paf, tu trouves d'où vient ton problème.

    SAUF que cette démarche devrait être faite AVANT d'écrire le code, ça s'appelle trouver un algorithme satisfaisant au problème.

  5. #4
    yann85

    Re : demande d'aide en langage C

    Citation Envoyé par photon57 Voir le message
    Dans la partie

    int nbr_a (char t[100]){
    int i=0;
    while(t[i]!='\0'){
    if(t[i]=='a')
    i++;
    }
    return i;
    }

    Tu incrémentes ton pointeur que lorsque tu trouves un ´a´ alors qu'il faut l'incrémenter tout le temps. Il te faut un compteur indépendant pour renvoyer le nombre de ´a´.
    vous pouvez m'expliquer en montrant le code pour la partie du nombre de 'a'. svp. car je ne comprends pas trop ce que vous dites. (je suis débutant en langage C)

  6. #5
    yann85

    Re : demande d'aide en langage C

    Citation Envoyé par whoami Voir le message
    Bonjour,

    C'est typiquement le genre de problème qu'on résout avec les bases, c'est à dire : papier + crayon.

    Tu considères une chaîne de caractères, et tu exécutes ton programme à la main, en notant pas à pas l'évolution des variables, et paf, tu trouves d'où vient ton problème.

    SAUF que cette démarche devrait être faite AVANT d'écrire le code, ça s'appelle trouver un algorithme satisfaisant au problème.
    merci de votre réponse mais le code, comment ça s'écrit ?

  7. A voir en vidéo sur Futura
  8. #6
    photon57

    Re : demande d'aide en langage C

    Citation Envoyé par yann85 Voir le message
    vous pouvez m'expliquer en montrant le code pour la partie du nombre de 'a'. svp. car je ne comprends pas trop ce que vous dites. (je suis débutant en langage C)
    Comme le fait remarquer à juste titre whoami, il faut avant tout avoir une idée claire en Français tout d'abord. Car le probl`eme n'est pas dans la syntaxe du C mais dans la compréhension du problème et comment le traduire en algo :

    prenons la phrase un ananas est un fruit.

    Si tu devais le faire à la main tu ferais sans doute :

    0. je prends un post-it sur lequel je vais noter le nombre de a, je vérifie que le post-it est vierge
    1. je mets au début de la phrase
    2. u, ce n'est pas un 'a', je passe à la lettre suivante
    3. n, ce n'est pas un 'a', je passe à la lettre suivante
    4. , ce n'est pas un 'a', je passe à la lettre suivante
    5. a, c'est un 'a' je rajoute une barre sur mon post-it, je passe à la lettre suivante
    6. ......
    24. ., c'est la fin de la phrase, je m'arrête
    25. Je compte le nombre de traits sur le post-it.

    On peut remarquer que les étapes 2 à 24. sont très répétitifs seule la lettre change et l'action suivant la valeur de la lettre. On pourrait écrire à la place

    2. Tant que je ne suis pas à la fin de la phrase je fais
    2.1. Si ;a lettre est un 'a' je rajoute une barre sur mon post-it
    2.2. Je passe à la lettre suivante

    Ton algo sera donc :

    Tient peux-tu me donner l'algorithme ?

  9. Publicité
  10. #7
    whoami

    Re : demande d'aide en langage C

    Bonjour,
    Citation Envoyé par yann85 Voir le message
    merci de votre réponse mais le code, comment ça s'écrit ?
    C'est ce que tu as fait en écrivant ton programme.

  11. #8
    yann85

    Re : demande d'aide en langage C

    Citation Envoyé par photon57 Voir le message
    Comme le fait remarquer à juste titre whoami, il faut avant tout avoir une idée claire en Français tout d'abord. Car le probl`eme n'est pas dans la syntaxe du C mais dans la compréhension du problème et comment le traduire en algo :

    prenons la phrase un ananas est un fruit.

    Si tu devais le faire à la main tu ferais sans doute :

    0. je prends un post-it sur lequel je vais noter le nombre de a, je vérifie que le post-it est vierge
    1. je mets au début de la phrase
    2. u, ce n'est pas un 'a', je passe à la lettre suivante
    3. n, ce n'est pas un 'a', je passe à la lettre suivante
    4. , ce n'est pas un 'a', je passe à la lettre suivante
    5. a, c'est un 'a' je rajoute une barre sur mon post-it, je passe à la lettre suivante
    6. ......
    24. ., c'est la fin de la phrase, je m'arrête
    25. Je compte le nombre de traits sur le post-it.

    On peut remarquer que les étapes 2 à 24. sont très répétitifs seule la lettre change et l'action suivant la valeur de la lettre. On pourrait écrire à la place

    2. Tant que je ne suis pas à la fin de la phrase je fais
    2.1. Si ;a lettre est un 'a' je rajoute une barre sur mon post-it
    2.2. Je passe à la lettre suivante

    Ton algo sera donc :

    Tient peux-tu me donner l'algorithme ?
    voila, mon nouveau programme, mais il ne marche pas
    Code:
    int nbr_a (char t[100]){
        int i=0;
        int nb =0;
        while(t[i]!='\0'){
            if(t[i]=='a')
            nb++;
        }
        return nb;
    }

  12. #9
    photon57

    Re : demande d'aide en langage C

    Citation Envoyé par yann85 Voir le message
    voila, mon nouveau programme, mais il ne marche pas
    Code:
    int nbr_a (char t[100]){
        int i=0;
        int nb =0;
        while(t[i]!='\0'){
            if(t[i]=='a')
            nb++;
        }
        return nb;
    }
    Toujours comme le proposait whoami, tu pourrais essayer de tracer ton programme à défaut d'écrire un algo :

    avec la chaîne "truc"



    Si tu ne passes pas par la phase «j'écris ce que je, je le traduis en algo, j'écris comment je vais le programmer» tu vas avoir beaucvoup de mal à produire quoi que ce soit.

  13. #10
    yann85

    Re : demande d'aide en langage C

    Citation Envoyé par photon57 Voir le message
    Toujours comme le proposait whoami, tu pourrais essayer de tracer ton programme à défaut d'écrire un algo :

    avec la chaîne "truc"



    Si tu ne passes pas par la phase «j'écris ce que je, je le traduis en algo, j'écris comment je vais le programmer» tu vas avoir beaucvoup de mal à produire quoi que ce soit.

    Code:
    int main (){
    
    	char phrase[100];
    	printf("tapez 1 phrase:\n");
    	gets (phrase);
    	int i=0,nbre_car=0, nombre_a=0;
    
    	while (phrase[i]!='\0'){
            nbre_car++;
    	i++;
    	}
    	printf("le nbre de caractere est %i\n",nbre_car);
    
            i=0;
            while (phrase[i]!='\0'){
            if(phrase[i] == 'a'){
            nombre_a++;
            }
            i++;
        }
       	printf("le nbre de 'a' est %i\n",nombre_a);
    }

    j'ai écrit mon programme comme ci-dessus. Il marche sans problème, mais j'ai du mal avec les fonctions et les procédures.
    Dernière modification par yann85 ; 13/09/2011 à 16h00.

  14. #11
    photon57

    Re : demande d'aide en langage C

    Bon, en fait quel est ton niveau, est-ce un exercice à faire dans un contexte scolaire ?

    Je peux te conseiller la lecture de pages du genre : http://fr.wikibooks.org/wiki/Program...roc%C3%A9dures

  15. #12
    Chanur

    Re : demande d'aide en langage C

    Bonjour,
    Citation Envoyé par yann85 Voir le message
    j'ai écrit mon programme comme ci-dessus. Il marche sans problème, mais j'ai du mal avec les fonctions et les procédures.
    C'est plutôt parce que dans la dernière version tu as ajouté l'incrémentation i++ qui manquait.
    utilise "for" plutôt que "while" quand tu as une initialisation et une incrémentation (ce qui est fréquent), tu auras moins de risque de faire ce genre d'oubli, et tu allègera ton code.

  16. Publicité
  17. #13
    yann85

    Re : demande d'aide en langage C

    je suis 1 vrai débutant en informatique. oui, il est 1 exercice à faire.

  18. #14
    whoami

    Re : demande d'aide en langage C

    Bonjour,
    Citation Envoyé par yann85 Voir le message
    je suis 1 vrai débutant en informatique. oui, il est 1 exercice à faire.
    On le savait, c'est un exercice tellement standard ...

    Comme tu confirmes, tu as donc eu les cours nécessaires pour faire le programme.

  19. #15
    photon57

    Re : demande d'aide en langage C

    Je suppose que l'exercice est de modifier le programme donné (et qui fonctionne) en créant des procédures ou des fonctions ...

  20. #16
    yann85

    Re : demande d'aide en langage C

    voila. dernier essai. il marche mtn


    Code:
    int nbr_a (char t[100]){
        int i=0;
        int nb=0;
        while(t[i]!='\0'){
            if(t[i]=='a')
            nb++;
            i++;
        }
    return nb;
    }

  21. #17
    Chanur

    Re : demande d'aide en langage C

    En fait ta dernière version a quand même un problème : tu parcours le tableau t tant que tu ne trouve pas un caractère nul.
    Mais que se passe-t-il s'il n'y en a pas ? Si les 100 caractères sont différents de 0 (ou '\0', c'est pareil pour un char) ?

  22. #18
    whoami

    Re : demande d'aide en langage C

    Bonjour,
    Citation Envoyé par Chanur Voir le message
    En fait ta dernière version a quand même un problème : tu parcours le tableau t tant que tu ne trouve pas un caractère nul.
    Mais que se passe-t-il s'il n'y en a pas ? Si les 100 caractères sont différents de 0 (ou '\0', c'est pareil pour un char) ?
    C'est vrai, mais on peut partir du principe qu'on traite une chaîne standard du C, et qui donc se termine par \0.

    Il n'empêche que pour un programme plus élaboré, ce contrôle serait nécessaire.

    Mais yann85 est un débutant, il faut bien apprendre les bases avant de se préoccuper de ce genre de détail, que de toute manière il finira par découvrir en tombant dans les problèmes classiques par lesquels nous sommes tous plus ou moins passés.

  23. Publicité

Sur le même thème :

Discussions similaires

  1. Besoin d'aide sur le choix d'un langage de programmation
    Par 4lexO dans le forum Programmation et langages, Algorithmique
    Réponses: 23
    Dernier message: 05/09/2011, 18h15
  2. Demande d'aide
    Par mimita91 dans le forum Chimie
    Réponses: 1
    Dernier message: 28/07/2011, 23h44
  3. [langage c]Demande aide écriture fonction
    Par celine2 dans le forum Programmation et langages, Algorithmique
    Réponses: 12
    Dernier message: 27/04/2011, 09h49
  4. Demande d'aide
    Par linkcapitaine dans le forum Paléontologie
    Réponses: 4
    Dernier message: 31/07/2009, 22h24
  5. langage ladder, besoin d'aide
    Par drtom dans le forum Électronique
    Réponses: 2
    Dernier message: 30/11/2008, 15h33