Chaine de caractére

nour -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Quelqu'un peut m'aider pr faire ce exo :

Exo : écrire 1 programme qui c le nombre2 mots d'une phrase qui est donnée par une constante au début du programme.
1 -on décide que le nombre2 mots est le nombre d'espace +1.
2-reprendre 1 , on décide que plusieurs caractères espace qui se suivent sont équivalents à 1 seul .
3- reprendre 2, on décide qu'un espace en début ou en fin de phrase n'est pas à considérer.

merci d'avance

10 réponses

  1. tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   121
     
    Tu n'arrive même pas à recopier l'énoncé de ton exercice sans faire de fautes ? C'est devenu complètement incompréhensible. Comment veux tu que l'on t'aide dans ces conditions ?
    0
  2. Lord Shoedsackovskaïa Messages postés 167 Date d'inscription   Statut Membre Dernière intervention   13
     
    En quel langage veux-tu que l'on te programmes-ça ?
    Si tu dois faire ce programme pour des cours, je ne vais pas te donner la solution, mais je peux te donner des conseils ;)
    0
  3. nour
     
    dsl voici l'énoncé .

    Exo 2 : écrire 1 programme qui affiche le nombre de mots d'une phrase qui est donnée par une constante au début du programme.
    1 -on décide que le nombre2 mots est le nombre d'espace +1.
    2-reprendre 1 , on décide que plusieurs caractères espace qui se suivent sont équivalents à 1 seul .
    3- reprendre 2, on décide qu'un espace en début ou en fin de phrase n'est pas à considérer.
    0
  4. nour
     
    le language est le c++.
    j'aimrai b1 que vous me donnez des conseils pour que je puisse ecrire mon programme.

    merci d'avance
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   121
     
    Je comprends beaucoup mieux !

    Déjà il te faut faire un peu d'algorithmique pour déterminer l'algorithme de calcul.

    Ensuite il faut voir comment implémenter celà.

    Il va y avoir du comptage de mots, ou de blancs, donc il va y avoir quelque part une boucle de comptage. C++, donc pense tout de suite à une boucle for( ; ; ) { }

    Il va y avoir de la gestion de chaîne de caractères. En C++ tu peux utiliser les chaines basiques char *, mais ce serait mieux d'implémenter une classe "chaine de caractère" capable de faire différentes opérations, par exemple compter des blancs, fusionner des blancs, ...

    Voilà pour te lancer !
    0
  7. nour
     
    je vais éssayer toute seule et on reste en contacte.
    a+++
    merci
    0
  8. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,
    Sinon au lieu d'utiliser char* tu peux utiliser la classe string qui contient déjà pas mal d'opération ;-).

    Cdlt,
    0
    1. tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   121
       
      Bien sûr mais Nour apprendrait plus en écrivant elle même la classe string ! C'est pour cela que je n'avais parlé que de char * qu'elle pourrait intelligemment encapsuler dans une classe idoine !
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Je suis d'accord avec toi. Mais si c'est pour apprendre, autant programmer en C. Puisque faire tout ce qu'il a demandé sans utiliser string, ça sera du C (enfin presque).
      0
    3. tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   121
       
      non si elle réécrit la classe string, le seul point où il y avait quelque chose à apprendre en C++
      0
  9. Lord Shoedsackovskaïa Messages postés 167 Date d'inscription   Statut Membre Dernière intervention   13
     
    Désolé pour cette fois j'ai Code::Blocks qui déconne et je ne suis pas un pro en C++
    0
  10. nour
     
    #include<stdio.h>
    void main ()
    {char ch[15];
    int i,j=0;
    for(i=0;i<=15;i++)
    {
    if(ch[i]=='/0')
    j++}
    for(i=0;i<15;i++)
    {if (ch[i]=='/0')
    while(ch[i]=='/0')
    c tous ce que j'ai pu .
    0
  11. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Tout d'abord, ton code ce n'est pas du C++ mais du C. En C++, on utilise iostream.
    Donc, on va continuer plutôt sur du C.
    Ensuite, ce n'est pas void main(), le prototype de main sans argument mais : int main(void)

    Ensuite, je te conseille dans ce programme de faire 3 fonctions (une fonction par exercice).
    Par exemple :
    #include <stdio.h>
    
    int compte1(const char* chaine) {
        /*je compte le nombre d'espace et j'augmente de 1*/
        int i;
        int res=0;
        for(i=0; chaine[i]!='\0'; i++) {
             ...
        }
        return res+1;
    }
    
    int compte2(const char* chaine) {
        ...
    }
    
    int compte3(const char* chaine) {
        ...
    }
    
    int main(void) {
         const char* chaine = "voici une phrase longue";
    
         printf("1ere méthode : il y a %d mots\n",compte1(chaine));
         printf("1ere méthode : il y a %d mots\n",compte2(chaine));
         printf("1ere méthode : il y a %d mots\n",compte3(chaine));
    
         return 0;
    }
    

    Voilà, je t'ai donné la structure. A toi de remplir ;-)))
    0