Exercice langage C : Procédures


Travail à Faire:

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) ;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include 
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 ; 
}