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

chaîne de caractère



  1. #1
    dalida1111

    chaîne de caractère


    ------

    salut
    j'ai besoin d un peu d aide svplé pour faire un exo des chaines de caractères

    faut ecrire un programme qui permet de :

    I) saisir deux chaines de caractéres ch1 et ch2 et vérifie si ch2 est miroir de ch1
    exemple :ch1 ='bonjour' ch12='roujonb' exécution : ch2 est miroir de ch1

    II-1)compter le nombre de mots,le nombre de chaque voyelles et des consonnes de la chaine ch1 , séparer les consonnes et les voyelles
    exemple : bonjour exécution : bnj oou consonnes : 4 voyelles: nbr de 'o' :2 nbr de 'u' :1

    II-2)supprimer les redondances de ch1


    I)
     Cliquez pour afficher




    II-1)
     Cliquez pour afficher


    II-2) ?
    **comment séparer les voyelles et les consonnes svplé ?!
    **concernant le nombre de consonnes dans mon code , lorsque j ecris par exemple ' malade ' ca donne 5 consonnes , pourriez vous me trouver l erreur svplé?
    **comment puis je supprimer les redondances svplé??

    merci d avance de m avoir aidée

    -----
    Dernière modification par dalida1111 ; 22/12/2011 à 01h02.

  2. Publicité
  3. #2
    photon57

    Re : chaine de caractére

    Hello,

    OK tu abordes les chaînes de caractères (pour raccourcir on les nomme généralement des strings le terme anglais). Contrairement à la plupart des langages qui ont suivi C, C ne propose pas un type de donnée particulier (comme int ou float ou char) pour les strings.
    Un string est simplement un tableau de caractères (donc les éléments sont de type char) et la fin du string est un caractère dont la valeur est 0. Je te rappelle que le type char est un type entier codé sur un octet. En déclarant
    char car;
    Tu peux aussi bien écrire car=65 que car='a' ; les deux auront le même résultat car le caractère 'a' a pour code ascii 65.
    Qui dit tableau en dit forcément pointeur (et c'est une notion délicate à apprivoiser). Quand tu écris dans ton programme
    char str[10]
    str est un pointeur qui pointe vers le premier caractère du string qui pourra contenir 9 caractères, le dernier étant le caractère nul.

    Le standard C définit ce qu'on appelle la bibliothèque standard, c'est une base commune à tous les compilateurs C. Cette bibliothèque standard définit une multitude de fonctions dédiées aux string dont le nom commence par str. Tu as par exemple utilisé strlen pour déterminer la longueur d'un string. Il y en a beaucoup d'autres. Toutes les déclarations sont contenues dans le header string.h

    Plusieurs remarques :
    * str1==str2 est une comparaisons généralement fausse si tu désires t'assurer que deux string ont le même contenu. En effet str1 et str2 étant des pointeurs, tu ne fais que vérifier qu'ils pointent vers la même région en mémoire. Par exemple :

    Code:
    char str1[]="Bonjour";
    char str2[]="Bonjour";
    
    if (str1==str2)
       printf("Les strings sont égales\n");
    else
       printf("Les strings ne sont pas égales\n");
    affichera que les strings ne sont pas égales car même si elles ont même contenu, les pointeurs eux concernent des string différents.

    Donc règle 1 : pour comparer deux strings tu utiliseras strcmp
    facile à retenir : string compare
    strcmp(str1,str2) te renverra :
    une valeur positive si str1>str2 dans l'ordre lexicographique,
    0 si str1 et str2 ont même contenu,
    une valeur négative si str1<str2 dans l'ordre lexicographique

    piège : écrire if (strcmp(str1,str2)) revient à écrire une conditionnelle qui teste si les deux strings ne sont pas égales
    tester l'égalité est if (strcmp(str1,str2)==0)

    Je ne peux que te recommander la lecture d'un tuto comme : http://nicolasj.developpez.com/articles/libc/string/



  4. #3
    photon57

    Re : chaine de caractére

    Pour la seconde partie :

    si j'ai une phrase écrite devant moi et que je désire compter le nombre de consonnes, voyelles et de mots comment pourrais-je faire ?

    Pour chaque caractère de la phrase, si je le retrouve dans "aeiouy" c'est qu'il s'agit d'une voyelle, si je le retrouve dans "bcdfghjklmnpqrstvwxz" c'est qu'il s'agit d'une consonne, si je tombe sur une espace alors c'est qu'un mot vient de se terminer.

    on peut éventuellement penser à «si ce n'est ni une voyelle ni une espace alors c'est une consonne»

    c'est un tout petit peu plus complexe que ça en fait ; il y a quelques pièges comme :
    comment traiter une suite d'espaces
    que faire des espaces en début et fin de string
    que faire des majucules et lettres accentuées ?

    Je te propose déjà de partir du principe que la phrase à traiter sera simple (que des minuscules, une espace unique séparera chaque mot), on pourra ensuite étoffer le programme au fur et à mesure de nos découvertes.

  5. #4
    dalida1111

    Re : chaine de caractére

    Merci bien pour cette réponse bien détaillée
    C'est toujours un plaisir d'apprendre de nouvelles choses, malgré qu'il me faut encore beaucoup de choses à découvrir et à connaitre en C surtout les string..

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

    Re : chaine de caractére

    Et écrire des fonctions ...

  8. #6
    dalida1111

    Re : chaine de caractére

    Bonsoir
    pour calculer la longueur d 'une chaine de caractère on utilise strlen( ) ,
    mais lorsque j 'utilise seulement strlen (MACHAINE) ca me donne le nombre de caractères et d espaces
    donc ,est ce qu il faut tjr calculer le nombre d espaces , puis faire la soustraction?! il n y a pas d autres méthodes?

     Cliquez pour afficher


    Merci
    Dernière modification par JPL ; 24/12/2011 à 22h55. Motif: Ajout de la balise Code

  9. Publicité
  10. #7
    photon57

    Re : chaine de caractére

    Hello,

    tu as fait des erreurs grossières dans ton code, je les ai mises en gras :

     Cliquez pour afficher


    Tu comprends pourquoi ?

  11. #8
    dalida1111

    Re : chaine de caractére

    oui oui ,
    j'ai pas fait attention
    char ch[20];
    int l;
    ...

    mais à part mes fautes , faut à chaque fois calculer le nombre d espaces et de tabulations puis on fait la soustraction
    car strlen () nous calcule les caracteres + les espaces et les tabulations!!
    merci

  12. #9
    dalida1111

    Re : chaine de caractére

    stplé comment puis je remplacer une chaine de caractères par une autre chaine , par exemple si je veux séparer les voyelles et les consonnes de la chaine
    CH1 et mettre les voyelles dans CH2 et les consonnes dans CH3 !depuis hier j ai pas pu trouver la solution ):
    merci

  13. #10
    photon57

    Re : chaine de caractére

    Hello,

    il faut que tu comprennes déjà comment fonctionnent les strings. Ce sont des tableaux de caractères terminés par le caractère nul, celui dont la valeur est 0. En C, quand on parle de tableaux forcément on parle de pointeurs et tôt ou tard on rencontre la fonction malloc qui alloue de la mémoire pour les tableaux.
    Ensuite pour les string, il va falloir que tu te familiarise avec les fonctions que tu trouves dans string.h pour les manipuler.
    Et là il faut commencer par un tutoriel simple comme http://www.siteduzero.com/tutoriel-3-14023-les-chaines-de-caracteres.html



  14. #11
    dalida1111

    Re : chaine de caractére

    Merci beaucoup

  15. #12
    danyvio

    Re : chaine de caractére

    Citation Envoyé par dalida1111 Voir le message
    I) saisir deux chaines de caractéres ch1 et ch2 et vérifie si ch2 est miroir de ch1
    exemple :ch1 ='bonjour' ch12='roujonb' exécution : ch2 est miroir de ch1

    :
    "roujonb" n'est pas miroir de "bonjour" (lis bien de droite à gauche)
    C'était juste pour montrer que je lis attentivement les demandes, ne te fâche pas, il n'y a pas d'offense
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  16. Publicité
  17. #13
    dalida1111

    Re : chaine de caractére

    Citation Envoyé par danyvio Voir le message
    "roujonb" n'est pas miroir de "bonjour" (lis bien de droite à gauche)
    C'était juste pour montrer que je lis attentivement les demandes, ne te fâche pas, il n'y a pas d'offense
    Merci.......au contraire ça me fait plaisir de lire vos remarques

  18. #14
    dalida1111

    Re : chaine de caractére

    salut
    j'ai ecris une fonction qui separe les voyelles et les consonnes
    mais lorsque je tape par exemple maman ca donne aa m
    pourriez vous me dire ou est l erreur ?

    mon code:

     Cliquez pour afficher

    Mercii

  19. #15
    defender19

    Re : chaîne de caractère

    essaye ça pour voir :

    Code:
    void separer( char ch[])
    {
         
          char chv[20],chc[20];
          int p=0,j=0,k=0;
         
          for(p=0;ch[p]!='\0';p++){
            if(ch[p]=='a' || ch[p]=='e'|| ch[p]=='i'||ch[p]=='o'|| ch[p]=='u'||ch[p]=='y'){
                        chv[j]=ch[p];
                        j++;
            }
            else{// thériquement si c'est pas des voyelles et que tu rentres que des lettres, le reste est forcément des consonnes
                chc[k]=ch[p];
                k++;
            } // pas oublier les accolades car deux instructions dans le else
          }
          chv[j]='\0';
          chc[k]='\0';
          
        printf("%s   %s ",chv,chc);
      }
    mais comme toujours, si tu indentes ton code, tu vois mieux les blocs et tu oublies pas d'accolades.

  20. #16
    dalida1111

    Re : chaîne de caractère

    c bon merci

Discussions similaires

  1. Python, remplacement d'une chaine de caractère
    Par berguem40 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 12/09/2011, 16h24
  2. Lire chaine de caractère
    Par celine2 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 31/01/2011, 21h06
  3. copie de chaine et changements de caractere en C
    Par gdm dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 19/10/2009, 08h08
  4. Chaine de caractère C++
    Par lui dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 06/03/2008, 20h29
  5. Fonction retournant une chaine de caractère
    Par youril dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/09/2007, 21h28