« Exercices en langage C/Pointeurs » : différence entre les versions
Contenu supprimé Contenu ajouté
m en cours |
mAucun résumé des modifications |
||
Ligne 1 :
{{Exercices en langage C}}
Soit un texte donné par une chaîne de caractères. Le but est de compter le nombre d'occurrences de chaque lettre sans distinction entre minuscules et majuscules.
===Question 1===
# Initialiser le vecteur d'entiers avec un parcours par indice.▼
# Compter les occurrences en utilisant la conversion entre le type char et le type int (la conversion d'un caractère donne son code dans le standard américain).▼
{{Boîte déroulante|titre=Solution|contenu =
# Afficher le résultat sur la sortie standard.▼
<source lang="C">
#include <stdio.h>
const nb_lettres = 26;
int main(void){
char ch[]="ceci est une chaine de test"; //déclaration d'une chaine <=> tableau de caractères.
printf("Chaine en memoire : %s\n",ch);
char *p = ch; //déclaration d'un pointeur sur une chaine de caracteres.
int occ[nb_lettres]; //déclaration d'un tableau de 26 cases correspondant aux lettres de l'alphabet, contenant les occurrences des lettres trouvées dans la chaîne.
</source>
}}
===Question 2===
{{Boîte déroulante|titre=Solution|contenu =
<source lang="C">
int i=0;
for (i=0; i<nb_lettres;++i)
occ[i]=0; //initialisation du tableau des occurrences à 0.
</source>
}}
===Question 3===
▲
{{Boîte déroulante|titre=Solution|contenu =
<source lang="C">
while (*p != '\0'){ //parcours de la chaine. Caractère de fin d'une chaine en C : '\0'.
if (*p >= 'a' && *p <= 'z'){
++occ[*p-'a'];
} else if (*p >= 'A' && *p <= 'Z'){
++occ[*p-'A'];
}
++p; //incrémentation du pointeur <=> passage à la lettre suivante.
}
</source>
}}
===Question 4===
{{Boîte déroulante|titre=Solution|contenu =
<source lang="C">
for (i=0; i<nb_lettres; ++i){
printf("Nombre de %c : %i\n",'a'+i,occ[i]); //le transtypage est automatique : 'a'+i renvoie un entier.
++p;
}
return 0;
}
</source>
}}
[[Catégorie:Exercices en langage C (livre)]]
|