Exercice 61
Énoncé
a. Transformer le programme suivant pour que la fonction fct devienne une fonction
en ligne.
#include
using namespace std ;
main()
{
int fct (char, int) ; // déclaration (prototype) de fct
int n = 150, p ;
char c = 's' ;
p = fct ( c , n) ;
cout << "fct (\'" << c << "\', " << n << ") vaut : " << p ;
}
int fct (char c, int n) // définition de fct
{
int res ;
if (c == 'a') res = n + c ;
else if (c == 's') res = n - c ;
else res = n * c ;
return res ;
}
b. Comment faudrait-il procéder si l’on souhaitait que la fonction fct soit compilée
séparément ?
a. Nous devons donc d’abord déclarer (et définir en même temps) la fonction fct
comme une fonction en ligne. Le programme main s’écrit de la même manière, si ce
n’est que la déclaration de fct n’y est plus nécessaire puisqu’elle apparaît
auparavant.
#include
using namespace std ;
inline int fct (char c, int n)
{ int res ;
if (c == 'a') res = n + c ;
else if (c == 's') res = n - c ;
else res = n * c ;
return res ;
}
main ()
{ int n = 150, p ;
char c = 's' ;
p = fct (c, n) ;
cout << "fct (\'" << c << "\', " << n << ") vaut : " << p ;
}
b. Il s’agit en fait d’une question piège. En effet, la fonction fct étant en ligne, elle ne
128
Énoncé
a. Transformer le programme suivant pour que la fonction fct devienne une fonction
en ligne.
#include
using namespace std ;
main()
{
int fct (char, int) ; // déclaration (prototype) de fct
int n = 150, p ;
char c = 's' ;
p = fct ( c , n) ;
cout << "fct (\'" << c << "\', " << n << ") vaut : " << p ;
}
int fct (char c, int n) // définition de fct
{
int res ;
if (c == 'a') res = n + c ;
else if (c == 's') res = n - c ;
else res = n * c ;
return res ;
}
b. Comment faudrait-il procéder si l’on souhaitait que la fonction fct soit compilée
séparément ?
a. Nous devons donc d’abord déclarer (et définir en même temps) la fonction fct
comme une fonction en ligne. Le programme main s’écrit de la même manière, si ce
n’est que la déclaration de fct n’y est plus nécessaire puisqu’elle apparaît
auparavant.
#include
using namespace std ;
inline int fct (char c, int n)
{ int res ;
if (c == 'a') res = n + c ;
else if (c == 's') res = n - c ;
else res = n * c ;
return res ;
}
main ()
{ int n = 150, p ;
char c = 's' ;
p = fct (c, n) ;
cout << "fct (\'" << c << "\', " << n << ") vaut : " << p ;
}
b. Il s’agit en fait d’une question piège. En effet, la fonction fct étant en ligne, elle ne
128
