Pages

jeudi 27 février 2014

Exercices corrigés en Langage C : TP5

Exercices corrigés en Langage C :



Exercice 1 : 

Réécrire la fonction longueur (strln dans string.h) qui calcul la longueur d’une chaîne de caractères.
Prototype : int longueur(char *)

Correction exercice 1 :

int longueur(char *chaine) 

int i=0 ; 

 while(chaine[i] != ‘\0’) 
i++ ; 
return i ; 


Exercice 2 : 

En utilisant la précédence lexicographique écrire une fonction qui convertie les chaînes de
caractères minuscules en chaînes de caractères majuscules.
Prototype : void majuscule(char *)

Correction exercice 2 :

#include<stdio.h> 
void majuscule(char *) ; 
main() 

 char chaine[] = "Ceci est une chaine !" ; 
  majuscule(chaine) ; 

 printf("%s\n",chaine) ; 

void majuscule(char *chaine) 


 int i=0; 

 while(chaine[i] != '\0') 

if ((chaine[i] >= 'a') && (chaine[i] <= 'z')) 
chaine[i] += (int)'A' - (int)'a' ; 
i++ ; 



Exercice 3 :

Ecrire un programme qui lit deux chaînes de caractères, et qui indique leur précédence
lexicographique dans le code de caractères de la machine (ici: code ASCII). On écrira pour cela la
fonction precedence qui récupère les deux chaînes en paramètre et qui retourne 1 si la première
chaîne précède la deuxième, 2 si la deuxième précède la première, 0 si elle sont égale.
Prototype : int precedence(char *,char *)

Correction exercice 3 :

#include <stdio.h> 
int precedence(char *,char *) ; 
main() 


 /* Déclarations */ 
char CH1[50], CH2[50]; /* chaînes à comparer */ 
int r ; 

/* Saisie des données */

 printf("Entrez la première chaîne à comparer : "); 
gets(CH1); 
printf("Entrez la deuxième chaîne à comparer : "); 
gets(CH2); 
r = precedence (CH1,CH2) ; 
if(r==0) 
printf("\"%s\" est égal à \"%s\"\n", CH1, CH2); 
else if (r == 1) 
printf("\"%s\" précède \"%s\"\n", CH1, CH2); 
else 
printf("\"%s\" précède \"%s\"\n", CH2, CH1); 

int precedence (char *CH1,char *CH2) 

int I; /* indice courant */ 
int r ; 

for (I=0; (CH1[I]==CH2[I]) && CH1[I] && CH2[I]; I++) ; 

if (CH1[I]==CH2[I]) 

r = 0 ; 
else if (CH1[I]<CH2[I]) 
r = 1 ; 
else 
r = 2 ; 
return r; 


Exercice 4 : 

Ecrire une procédure qui lit une chaîne de caractères et l'interprète comme un entier positif dans la
base décimale. On écrira 2 fonctions :
La fonction chaine2entier qui récupère une chaîne de caractère et retourne un entier.
Prototype : int chaine2entier(char *)
La fonction estentier qui récupère un caractère et retourne 0 s’il ne correspond pas à un chiffre 1
s’il correspond à un chiffre.
Prototype : int estentier(char) ;

Correction exercice 4 :

#include<stdio.h> 
int estentier(char) ; 
int chaine2entier(char *) ; 

 main() 

 /* Déclarations */ 
char CH[100]; /* chaîne numérique à convertir */ 
long N; /* résultat numérique */ 

printf("Entrez un nombre entier et positif : "); 
gets(CH); 
printf("%s\n",CH) ; 

N = chaine2entier(CH) ; 
if(N<0) 
printf("%s ne représente pas correctement un entier positif.\n", CH); 
else 
printf("La chaine %s a pour valeur %d\n" ,CH,N) ; 

 int chaine2entier(char *CH) 

int I; 
int N = 0 ; 
int OK = 1; 

for (I=0; OK && CH[I]; I++) 
if (estentier(CH[I])) 
N = N*10 + (CH[I]-'0'); 
else 
OK=0; 
if (OK) 
return N ; 
else 
return -1 ; 


int estentier(char c) 

if ((c>='0')&&(c<='9')) 
return 1 ; 
else 
return 0 ; 




Aucun commentaire:

Enregistrer un commentaire

Partenaires

Computers Blogs
Ajoutez votre site

Contactez-nous

Nom

E-mail *

Message *

Tous droits resérvés-www.exercices-corriges.com Seo Blogger Templates