exercices_chaines de caractères

3
T ravaux Diris d e Programmati on Impér at ive Un ivers it é Pari s Nord – Inst it u t Gali e 1 ère  année de Licence Sciences, Technologie et Santé Année universitair e 2006-2007  Correction du TD 9 Exercice 1 Chaînes de caractères 1) En ut ilisa nt l a fo nc ti on getchar()qui permet de lire un caractère saisi au clavier et qui le retourne, écrire une fonction qui lit une chaîne de caractères tapée au clavier et qui l'enregistre dans un tableau de caractères. Le caractère saut de ligne '\n' indiquera la fin de la saisie. void lire_chaine(char tab[MAX]) { int i=0; char c; c=getchar(); while((c!='\n')&&(i<MAX)) { tab[i++]=c; c=getchar();  }  tab[i]='\0'; } 2) Écrire une fonc tion qui c alcule la lon gueur d'une chaîne. int longueur_chaine(const char tab[MAX]) {  int i;  for (i = 0; tab[i] != '\0'; i++);  return i;  } 3) Écrir e un e foncti on supprime_espace qui supprime les espaces et tabulations d'une chaîne de caractères. Cette fonction ne doit pas utiliser de tableau intermédaire. void supprime_espace(char tab[MAX]) {  int i; int j=0; for (i = 0; tab[i] != '\0'; i++)  if (tab[i] != ' ' && tab[i] != '\t') {  tab[j] = tab[i];  j++;  }  tab[j] = '\0'; } 4) Écrire une fonctio n qui in verse une chaîne d e caractères et met le résu ltat dans une autre. Les chaînes sont données en argument.

description

exercices sur le traitement des chaines de caractères en langage C.

Transcript of exercices_chaines de caractères

Page 1: exercices_chaines de caractères

7/15/2019 exercices_chaines de caractères

http://slidepdf.com/reader/full/exerciceschaines-de-caracteres 1/3

Travaux Dirigés de Programmation Impérative Université Paris Nord – Institut Galilée1ère année de Licence Sciences, Technologie et Santé Année universitaire 2006-2007

Correction du TD 9

Exercice 1 Chaînes de caractères

1) En utilisant la fonction getchar()qui permet de lire un caractère saisi au clavier et qui leretourne, écrire une fonction qui lit une chaîne de caractères tapée au clavier et qui l'enregistredans un tableau de caractères. Le caractère saut de ligne '\n' indiquera la fin de la saisie.

void lire_chaine(char tab[MAX])

{

int i=0;

char c;

c=getchar();

while((c!='\n')&&(i<MAX))

{

tab[i++]=c;

c=getchar();

}

tab[i]='\0';

}

2) Écrire une fonction qui calcule la longueur d'une chaîne.int longueur_chaine(const char tab[MAX]){

  int i;for (i = 0; tab[i] != '\0'; i++);return i;

}3) Écrire une fonction supprime_espace qui supprime les espaces et tabulations d'une

chaîne de caractères. Cette fonction ne doit pas utiliser de tableau intermédaire.

void supprime_espace(char tab[MAX]){int i;int j=0;

for (i = 0; tab[i] != '\0'; i++)if (tab[i] != ' ' && tab[i] != '\t'){

tab[j] = tab[i];j++;

}tab[j] = '\0';

}

4) Écrire une fonction qui inverse une chaîne de caractères et met le résultat dans une autre. Leschaînes sont données en argument.

Page 2: exercices_chaines de caractères

7/15/2019 exercices_chaines de caractères

http://slidepdf.com/reader/full/exerciceschaines-de-caracteres 2/3

void inverse_chaine(const char chaine[MAX], char inv[MAX]){int i;int j =longueur_chaine(chaine)-1;

 for(i=0;chaine[i]!='\0',i++){

inv[i]=chaine[longueur_chaine(chaine)--];j--;}

}

5) On appelle palindrome une suite de caractères qui se lit de la même façon dans les deux sens(exemple: ''laval'', ''ressasser '',''engage le jeu que je le gagne ''). Ecrire une fonctionpalindrome qui teste si une chaîne est un palindrome.

  int palindrome(char chaine[MAX]){

int i=0, L, test=0;char temp[MAX];

supprime_espace(chaine);L=longueur_chaine(chaine);inverse_chaine(chaine, temp);

 for (i=0; i<L; i++)if (temp[i]!=chaine[i])test=0;

elsetest=1;

return test;}

6) Écrire un programme en langage C qui demande à l'utilisateur de saisir une chaîne decaractères et affiche un message pour indiquer si la chaîne est un palindrome.

#include<stdio.h>#define MAX 40void lire_chaine(char tab[MAX]);int longueur_chaine(const char tab[MAX]);

void supprime_espace(char tab[MAX]);void inverse_chaine(const char chaine[MAX], char inv[MAX]);int palindrome(char chaine[MAX]);int main (void){char phrase[MAX],par[MAX], rep;int a;

 do{

printf ("Entrez une phrase ou un mot \n" );

lire_chaine(phrase);a=palindrome (phrase);if (a==1)

Page 3: exercices_chaines de caractères

7/15/2019 exercices_chaines de caractères

http://slidepdf.com/reader/full/exerciceschaines-de-caracteres 3/3

printf (" c'est un palindrome \n");if (a==0)

printf ("ce n'est pas un palindrome \n");printf ("Continuer ? o/n \n" );

 do

{ rep=getchar();getchar();

}while ((rep!='o')&&(rep!='n'));

}while (rep=='o');

 return 0;}