Vous êtes sur la page 1sur 5

#include <stdio.

h> /* Copier CH2 dans


main() SUJ et déplacer */
{ /* I derrière la
/* Déclarations */ copie de CH2. */
char SUJ[100]; /* chaîne à for (K=0; CH2[K];
transformer */ K++,I++)
char CH1[100]; /* chaîne à SUJ[I]=CH2[K];
rechercher */ /* Recopier FIN dans
char CH2[100]; /* chaîne de SUJ */
remplacement */ for (K=0; FIN[K];
char FIN[100]; /* chaîne de K++)
sauvegarde pour */ SUJ[I+K]=FIN[K];
/* la fin de /* Terminer la
SUJ. */ chaîne SUJ */
int I; /* indice courant SUJ[I+K]='\0';
dans SUJ */ I--; /* réajustement
int J; /* indice courant de l'indice I */
dans CH1 et CH2 */ }
int K; /* indice d'aide }
pour les copies */
/* Affichage du résultat */
printf("Chaîne résultat :
/* Saisie des données */ \"%s\"\n", SUJ);
printf("Introduisez la chaîne return 0;
à rechercher CH1 : "); }
gets(CH1);
printf("Introduisez la chaîne Exercice 8.22
à remplacer CH2 : ");
gets(CH2); #include <stdio.h>
printf("Introduisez la chaîne main()
à transformer SUJ : "); {
gets(SUJ); /* Déclarations */
char SUJ[100]; /* chaîne à
/* Recherche de CH1 dans SUJ transformer */
*/ char CH1[100]; /* chaîne à
for (I=0; SUJ[I]; I++) rechercher */
if (SUJ[I]==CH1[0]) char CH2[100]; /* chaîne de
{ remplacement */
for (J=1; CH1[J] && char FIN[100]; /* chaîne de
(CH1[J]==SUJ[I+J]); J++) sauvegarde pour */
; /* la fin de
if (CH1[J]=='\0') /* SUJ. */
TROUVE ! */ int I; /* indice courant
{ dans SUJ */
/* Maintenant I int J; /* indice courant
indique la position de CH1 */ dans CH1 et CH2 */
/* dans SUJ et J int K; /* indice d'aide
indique la longueur de CH1 */ pour les copies */
/* Sauvegarder la int TROUVE; /* indicateur
fin de SUJ dans FIN */ logique qui précise */
for (K=0; /* si la chaîne
SUJ[K+I+J]; K++) OBJ a été trouvée */
FIN[K]=SUJ[K+I+J]; /* Saisie des données */
FIN[K]='\0';
printf("Introduisez la chaîne printf("Chaîne résultat :
à rechercher CH1 : "); \"%s\"\n", SUJ);
gets(CH1); return 0;
printf("Introduisez la chaîne }
à remplacer CH2 : ");
gets(CH2); Exercice 8.21
printf("Introduisez la chaîne
à transformer SUJ : "); #include <stdio.h>
gets(SUJ); main()
{
/* Recherche de CH1 dans SUJ /* Déclarations */
*/ char SUJ[100]; /* chaîne à
TROUVE=0; transformer */
for (I=0; SUJ[I] && !TROUVE; char OBJ[100]; /* chaîne à
I++) supprimer dans SUJ */
if (SUJ[I]==CH1[0]) int I; /* indice
{ courant dans SUJ */
for (J=1; CH1[J] && int J; /* indice
(CH1[J]==SUJ[I+J]); J++) courant dans OBJ */
; int TROUVE; /* indicateur
if (CH1[J]=='\0') logique qui précise */
TROUVE=1; /* si la chaîne
} OBJ a été trouvée */

/* Saisie des données */


/* Si CH1 a été trouvée dans printf("Introduisez la chaîne
SUJ alors sauvegarder la fin */ à supprimer : ");
/* de SUJ dans FIN, copier gets(OBJ);
ensuite CH2 et FIN dans SUJ. printf("Introduisez la chaîne
*/ à transformer : ");
if (TROUVE) gets(SUJ);
{ /* Recherche de OBJ dans SUJ
I--; */
/* Maintenant I indique TROUVE=0;
la position de CH1 */ for (I=0; SUJ[I] && !TROUVE;
/* dans SUJ et J indique I++)
la longueur de CH1 */ /* Si la première lettre
/* Sauvegarder la fin de est identique, */
SUJ dans FIN */ if (SUJ[I]==OBJ[0])
for (K=0; SUJ[K+I+J]; K++) {
FIN[K]=SUJ[K+I+J]; /* alors comparer le
FIN[K]='\0'; reste de la chaîne */
/* Copier CH2 dans SUJ */ for (J=1; OBJ[J] &&
for (K=0; CH2[K]; K++,I++) (OBJ[J]==SUJ[I+J]); J++)
SUJ[I]=CH2[K]; ;
/* Recopier FIN dans SUJ if (OBJ[J]=='\0')
*/ TROUVE=1;
for (K=0; FIN[K]; K++,I++) }
SUJ[I]=FIN[K]; /* Si la position de départ de
/* Terminer la chaîne SUJ OBJ dans SUJ a été trouvée */
*/ /* alors déplacer le reste de
SUJ[I]='\0'; SUJ à cette position. */
} if (TROUVE)
{
/* Affichage du résultat */ I--;
/* Maintenant I indique /* Positions devant le point
la position de OBJ */ décimal */
/* dans SUJ et J indique for ( ; isdigit(CH[I]); I++)
la longueur de OBJ */ N = N*10.0 + (CH[I]-'0');
for (; SUJ[I+J]; I++) /* Traitement du point décimal
SUJ[I]=SUJ[I+J]; */
SUJ[I]='\0'; if (CH[I]=='.')
} I++;
/* Affichage du résultat */ else if (CH[I])
printf("Chaîne résultat : OK=0;
\"%s\"\n", SUJ);
return 0; /* Traitement et comptage des
} décimales */
for (DEC=0; isdigit(CH[I]);
Exercice 8.19 I++, DEC++)
N = N*10.0 + (CH[I]-'0');
#include <stdio.h> if (CH[I]) OK=0;
#include <math.h> /* Calcul de la valeur à
#include <ctype.h> partir du signe et */
main() /* du nombre de décimales. */
{ N = SIG*N/pow(10,DEC);
/* Déclarations */ /* Affichage de la chaîne
char CH[100]; /* chaîne convertie */
numérique à convertir */ if (OK)
double N; /* résultat printf("Valeur numérique :
numérique */ %f\n", N);
int I; /* indice courant else
*/ printf("\a\"%s\" n'est pas
int SIG; /* signe de la une valeur "
valeur rationnelle */ "rationnelle
int DEC; /* nombre de correcte.\n", CH);
décimales */ return 0;
int OK; /* indicateur }
logique précisant si la */
/* chaîne a été Exercice 8.17
convertie avec succès */
#include <stdio.h>
/* Saisie de la chaîne */ #include <ctype.h>
printf("Entrez un nombre main()
rationnel : "); {
gets(CH); /* Déclarations */
char CH[100]; /* chaîne
/* Conversion de la chaîne : numérique à convertir */
*/ long N; /* résultat numérique
/* Initialisation des */
variables */ int I; /* indice courant */
OK=1; int OK; /* indicateur logique
N=0.0; précisant si la */
I=0; /* chaîne a été
SIG=1; convertie avec succès */
/* Traitement du signe */
if (CH[I]=='-') SIG=-1; /* Saisie de la chaîne */
if (CH[I]=='-' || CH[I]=='+') printf("Entrez un nombre
I++; entier et positif : ");
gets(CH);
/* Conversion de la chaîne */ Exercice 8.15
OK=1;
N=0; #include <stdio.h>
for (I=0; OK && CH[I]; I++) main()
if (isdigit(CH[I])) {
N = N*10 + (CH[I]-'0'); /* Déclarations */
else char CH1[50], CH2[50]; /*
OK=0; chaînes à comparer */
int I; /*
/* Affichage de la chaîne indice courant */
convertie */
if (OK) /* Saisie des données */
printf("Valeur numérique : printf("Entrez la première
%ld\n", N); chaîne à comparer : ");
else gets(CH1);
printf("\a\"%s\" ne printf("Entrez la deuxième
représente pas correctement " chaîne à comparer : ");
"un entier et gets(CH2);
positif.\n", CH);
return 0; /* Chercher la première
} position où */
/* CH1 et CH2 se distinguent.
Exercice 8.16 */
for (I=0; (CH1[I]==CH2[I]) &&
#include <stdio.h> CH1[I] && CH2[I]; I++)
main() ;
{ /* Comparer le premier élément
/* Déclarations */ qui */
char CH[100]; /* chaîne à /* distingue CH1 et CH2. */
convertir */ if (CH1[I]==CH2[I])
int I; /* indice printf("\"%s\" est égal à
courant */ \"%s\"\n", CH1, CH2);
else if (CH1[I]<CH2[I])
/* Saisie de la chaîne */ printf("\"%s\" précède
printf("Entrez la chaîne à \"%s\"\n", CH1, CH2);
convertir : "); else
gets(CH); printf("\"%s\" précède
/* Conversion de la chaîne */ \"%s\"\n", CH2, CH1);
for (I=0; CH[I]; I++) return 0;
{ }
if (CH[I]>='A' &&
CH[I]<='Z') Exercice 8.14
CH[I] = CH[I]-
'A'+'a'; #include <stdio.h>
else if (CH[I]>='a' && #include <string.h>
CH[I]<='z') main()
CH[I] = CH[I]- {
'a'+'A'; /* Déclarations */
} /* Sujets et terminaisons */
/* Affichage de la chaîne char SUJ[6][5] =
convertie */ {"je","tu","il","nous","vous","
printf("Chaîne convertie : ils"};
%s\n", CH); char TERM[6][5] =
return 0; {"e","es","e","ons","ez","ent"}
} ;
char VERB[20]; /* chaîne
contenant le verbe */
int L; /* longueur de
la chaîne */
int I; /* indice
courant */

/* Saisie des données */


printf("Verbe : ");
scanf("%s", VERB);

/* Contrôler s'il s'agit d'un


verbe en 'er' */
L=strlen(VERB);
if ((VERB[L-2] != 'e') ||
(VERB[L-1] != 'r'))
printf("\"%s\" n'est pas un
verbe du premier
groupe.\n",VERB);
else
{
/* Couper la terminaison
'er'. */
VERB[L-2]='\0';
/* Conjuguer ... */
for (I=0; I<6; I++)
printf("%s
%s%s\n",SUJ[I], VERB, TERM[I]);
}
return 0;
}

Vous aimerez peut-être aussi