TD1
TD1
TD1
Exercice 1 :
Ecrire correctement en C ce programme qui est correct en C++ :
#include <iostream.h>
const int nb=10;
const int exclus =5;
int main()
{
int valeurs[nb];
int i, nbval=0;
cout<<" donnez nb valeurs :"<<nb<<"\ n";
for(i=0;i<nb;i++) cin>>valeurs[i];
for(i=0;i<nb;i++)
switch(valeurs[i])
{
case exclus –1 :
case exclus :
case exclus +1 : nbval++;
}
cout<<"valeurs sont interdites"<<nbval;
}
Exercice 2 :
Ecrire le programme suivant (correct en C comme en C++), en ne faisant appel qu'aux nouvelles
possibilités d'entrées-sorties de C++, donc en remplaçant les appels à printf et scanf :
#include <stdio.h>
void main()
{
int n;float x;
printf("donnez un entier et un floattant\n");
scanf("%d%f",&n,&x);
printf("le produit de %d par %f n'est :%f ", n,x,n*x);
}
Exercice 3 :
Ecrire une fonction permettant d'échanger les contenus de 2 variables de type int fournies en
argument :
- en transmettant l'adresse des variables concernées (seule méthode utilisables en C),
- en utilisant la transmission par référence.
Dans les deux cas, on écrira un petit programme d'essai (main) de la fonction.
Exercice 4 :
Soit le modèle de structure suivant :
Struct essai
{int n;
float x;
};
1
Ecrire une fonction nommée raz permettant de remettre à zéro les 2 champs d'une structure de
ce type, transmise en argument :
- par adresse
- par référence.
Dans les deux cas, on écrira un petit programme d'essai de la fonction ; il affichera les valeurs
d'une structure de ce type, après appel de ladite fonction.
Exercice 5 :
Ecrire plus simplement en C++ les instructions suivantes, en utilisant les opérateurs new et
delete :
Int *adi;
Double *add;
…
adi= malloc(sizeof(int));
add=malloc(sizeof(double)*100);
Exercice 6 :
Ecrire plus simplement en C++, en utilisant les spécificités de ce langage, les instructions C
suivants :
Double *adtab;
Int nval;
…..
printf("combien de valeurs ?";
scanf("%d",&nbval);
adtab=malloc(sizeof(double)*nbval);
Exercice 7 :
a) Transformer le programme suivant pour que la fonction fct devienne une fonction "en
ligne".
#include <iostream.h>
void main()
{
int fct(char, int);
int n=150, p;
char c='s';
p=fct(c,n);
cout<<"fct(\'"<<c<<"\', "<<n<<") vaut :"<<p;
}
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;
}
b) comment faudrait-il procéder si l'on souhaitait que la fonction fct soit compilée séparément ?