1 Exercice 1 : Ecrire un programme qui lit une ligne de texte (ne dépassant p
1 Exercice 1 : Ecrire un programme qui lit une ligne de texte (ne dépassant pas 200 caractères), la mémorise dans une variable TXT et réalise ensuite les traitements suivants : a) Afficher la longueur de la chaîne. b) Déterminer et afficher le nombre de mots contenus dans la chaîne. c) Afficher la chaine après la transformation de ses caractères saisis en majuscules en minuscules. Exercice 2 : Ecrivez une fonction qui retourne le nombre d'occurrences d'un caractère dans une chaine de caractères. Utilisez cette fonction dans la fonction principale main pour retourner l’occurrence de chaque caractère. Exercice 3 : Ecrivez un programme qui lit un verbe du premier groupe au clavier et qui en affiche la conjugaison au présent de l’indicatif de ce verbe. Contrôlez s’il s’agit bien d’un verbe en "er" avant de conjuguer. Utilisez les fonctions gets, strcat et strlen. Exercice 4: Ecrivez un programme qui lit deux chaînes de caractères CH1 et CH2 au clavier et supprime la première occurrence de CH2 dans CH1. Utilisez uniquement des pointeurs, une variable logique TROUVE et la fonction strcpy. Exemples: Alphonse phon ==> Alse totalement t ==> otalement abacab aa ==> abacab Programmation en C Série N°4 (TP/TD) Les chaines de caractères ENSIT A.U 2019/2020 2 Exercice 1 : #include <stdio.h> #include <string.h> #include <ctype.h> int main() { /* Déclarations */ char TXT[200]; /* chaîne donnée */ int I; /* indices courants */ int nmot; /* nombre de mots */ int C; /* compteur du nombre d'occurrence de caractère */ /* Saisie des données */ printf("Entrez une ligne de texte:\n"); gets(TXT); /* a) Compter les caractères */ printf("la longeur de la chaine = %d\n",strlen(TXT)); /* b) Compter le nombre de mots dans la chaine */ nmot=0; for (I=0;I<strlen(TXT);I++) if(isspace(TXT[I])) nmot++; printf("la chaine contient %d mots \n",nmot+1); /* c) Conversion de majuscule en miniscule */ for (I=0; I<strlen(TXT); I++) if (isupper(TXT[I])) TXT[I] =tolower(TXT[I]); puts(TXT); return 0; } Exercice 2: #include <stdio.h> #include <string.h> int compter_occurrences(char car, int taille, char mot[]) { int compteur = 0, indice; for(indice=0; indice < taille; indice++) if(mot[indice] == car) Programmation en C Série N°4 (TP/TD) Correction: les chaines de caractères ENSIT A.U 2019/2020 3 compteur++; return compteur; } int main() { int taille; // taille du mot int i; int nboccur; // nb d'occurrences de la lettre char texte[125]; printf("entrez un mot : "); gets(texte); taille = strlen(texte); for(i = 0; i < taille; i++){ nboccur = compter_occurrences(texte[i], taille, texte); printf("%c apparait %d fois\n", texte[i], nboccur); } return 0; } Exercice 3: #include <stdio.h> #include <string.h> #define N 20 int main (void) { char verbe[N],temp[N]; int l; do{ printf("Il faut entrer un verbe du premier groupe : "); gets(verbe); l=strlen(verbe); } while( verbe[l-1]!='r' || verbe[l-2]!='e') ; strcpy(temp,verbe); temp[l-2] = '\0'; if(temp[0]=='a' || temp[0]=='e' || temp[0]=='i' || temp[0]=='o' || temp[0]=='u' || temp[0]=='y') printf("%s%s\n","j'",strcat(temp,"e")); else printf("%s %s\n","je",strcat(temp,"e")); temp[l-2] = '\0'; printf("%s %s\n","tu",strcat(temp,"es")); temp[l-2] = '\0'; printf("%s %s\n","il",strcat(temp,"e")); temp[l-2] = '\0'; printf("%s %s\n","nous",strcat(temp,"ons")); temp[l-2] = '\0'; printf("%s %s\n","vous",strcat(temp,"ez")); 4 temp[l-2] = '\0'; printf("%s %s\n","ils",strcat(temp,"ent")); printf("\n"); return 0; } Exercice 4: #include <stdio.h> #include <string.h> int main() { /* Déclarations */ char CH1[101], CH2[101]; /* chaînes données */ char *P1, *P2; /* pointeurs d'aide dans CH1 et CH2 */ int TROUVE; /* indicateur logique: vrai, si le caractère */ /* actuel dans CH1 a été trouvé dans CH2. */ /* Saisie des données */ printf("Entrez la chaîne à transformer"); gets(CH1); printf("Entrez la chaîne à supprimer"); gets(CH2); /* Rechercher CH2 dans CH1 : */ /* L'expression P2-CH2 est utilisée pour déterminer l'indice */ /* de P2 dans CH2. On pourrait aussi résoudre le problème à */ /* l'aide d'un troisième pointeur P3 parcourant CH1. */ TROUVE=0; for (P1=CH1 ; *P1 && !TROUVE ; P1++) { for (P2=CH2 ; *P2 == *(P1+(P2-CH2)) ; P2++) ; if (!*P2) TROUVE = 1; } /* A la fin de la boucle, P1 est incrémenté, donc */ P1--; /* Si CH2 se trouve dans CH1, alors P1 indique la position */ /* de la première occurence de CH2 dans CH1 et P2 pointe à */ /* la fin de CH2. (P2-CH2) est alors la longueur de CH2. */ if (TROUVE) strcpy(P1, P1+(P2-CH2)); /* Affichage du résultat */ printf("Chaîne résultat : \"%s\" \n", CH1); return 0; } uploads/s3/ td-4-chaines-caracteres.pdf
Documents similaires
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/r0uLmawl5JYncQo6eYUuZBYldw9AAVX6uXitBHUenwPPQMEwQv4FqMKJSLbp3hFRE9XpeWHmhL6oMaSjAYOpjboF.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/MXeEu5rM5OPECsx33iG00ucTRXSGRfCmahnRiSWCuAAVL61JKOSPuPiX0ypS1dpqrPpTrcJfER9m6OCeMgAsojwa.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/dR9MozX6q5hLBGxlokfaS7QDfuaFGdznwJ6CauLngRjqXyOm0CqPgytzj2h1nCMYsDtEpS8qiy34FJnsKUskhIwW.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/cC7kL8HnpPpSPX3dVVUbzt5Nn0NZtH9qAAR1WqdrSKWdZ8WX2nXdhbXRB3WS94kUbjqA2yzlN7r0sgQpMIiZ5hSP.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/cuROfPJBZrxqHRAj4d5PsPJQ7byBLXJCA6Imk61mLlya98QqgO5X4hz3hwnHx0arnWXEjbrSlpyVamhTKiFZaZKg.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/oPtTeksR3AoTN1DcgTzQ7JVaoXCdyE7fbogOr6RJc9yoUcKrCs1kGmxn3vqh59sKcMmIX0MzZaMuroVKJyhUP5MT.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/VknsKsZATqqdmTvNMGkhI3NX9onqxz1vgPc6MRZv42UTZZz6YqFH9mJg0qr2hjffQ9ceoERDCaLs4Zt0EItHsiZ1.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/k3jCgkNMACdU1JgFqDmHuKHL2GNGKxPwCdJ30fiCqKtQkrBvy3bPxobIrT1OdDKINnmgt0uYhbg7HuZNk9UnRBkq.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/M2FxZhVr5km80xvl81XGBYXyS0uXv3fu6aP8RZIZik9IJEVjEK3BG3fDtx8DjpiQC1NJXXAOLCQ6Ksw5acZPbHE2.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/d5eoM4oBDXZVgxA3eMw6a5Db754LAPGWt0kCitGKfjTFw8iLIjWS4yq1BT1UcLboEmOlOWhQ5ad7mnAnIJMKyFIN.png)
-
23
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mar 30, 2021
- Catégorie Creative Arts / Ar...
- Langue French
- Taille du fichier 0.4788MB