Solution - ProfdInfo.com

Collège Lionel Groulx
Département d'informatique
420-118LG : Algorithmique
Enseignant : Rachid Kadouche
Examen Final (Solution)
Hiver 2014
Exercice 1 :
Écrire un programme qui permet de saisir un entier qui représente le rang d'un mois (1 pour le
mois janvier, 2 pour février, ..., 12 pour décembre) et d'afficher le nombre de jours du mois saisi.
Notez que :
•
Janvier, mars, mai, juillet, août, octobre, décembre ont 31 jours.
•
Avril, juin, septembre, novembre ont 30 jours.
•
Février a 28 jours (on ne considère pas les années bissextiles)
Si le rang est égal à 0, afficher le message "A la prochaine"
Si le rang est invalide, afficher le message "Rang invalide !"
Le programme doit répéter cette opération tan que la valeur entrée est différente de 0
Ecrire le programme en utilisant la boucle de répétition do while puis avec la boucle while
Avec DoWhile:
main()
{
/*Déclaration des variables*/
int rang;
/*Début du programme*/
do
{
printf("Donnez-moi le rang ");
scanf("%d",&rang);
if(rang==1 || rang ==3 ||rang ==5 ||rang ==7 ||rang ==8 ||rang ==10 ||rang ==12 )
/*Mois :
Janvier, mars, mai, juillet, août, octobre, décembre*/
{
printf("Le nombre de jour est 31\n");
}
else if (rang ==4 || rang ==6|| rang ==9|| rang ==11) /*Mois: Avril, juin,
septembre, novembre */
{
printf("Le nombre de jour est 30\n");
}
else if (rang==2)/*Mois de février*/
{
printf("Le nombre de jour est 28\n");
}
else if (rang==0) /*Condition de sortie*/
{
printf("A la prochiane\n");
}else {
printf("Rang invalide !\n");
}
}while (rang!=0);
/*Fin du programme*/
getchar();getchar();
}
Avec While:
main()
{
/*Déclaration des variables*/
int rang;
/*Début du programme*/
printf("Donnez-moi le rang ");
scanf("%d",&rang);
if(rang==1 || rang ==3 ||rang ==5 ||rang ==7 ||rang ==8 ||rang ==10 ||rang ==12 )
/*Mois :
Janvier, mars, mai, juillet, août, octobre, décembre*/
{
printf("Le nombre de jour est 31\n");
}
else if (rang ==4 || rang ==6|| rang ==9|| rang ==11) /*Mois: Avril, juin,
septembre, novembre */
{
printf("Le nombre de jour est 30\n");
}
else if (rang==2)/*Mois de février*/
{
printf("Le nombre de jour est 28\n");
}
else if (rang==0) /*Condition de sortie*/
{
printf("A la prochiane\n");
}else {
printf("Rang invalide !\n");
}
while (rang!=0)
{
printf("Donnez-moi le rang ");
scanf("%d",&rang);
if(rang==1 || rang ==3 ||rang ==5 ||rang ==7 ||rang ==8 ||rang ==10 ||rang ==12 )
/*Mois :
Janvier, mars, mai, juillet, août, octobre, décembre*/
{
printf("Le nombre de jour est 31\n");
}
else if (rang ==4 || rang ==6|| rang ==9|| rang ==11) /*Mois: Avril, juin,
septembre, novembre */
{
printf("Le nombre de jour est 30\n");
}
else if (rang==2)/*Mois de février*/
{
printf("Le nombre de jour est 28\n");
}
else if (rang==0) /*Condition de sortie*/
{
printf("A la prochiane\n");
}else {
printf("Rang invalide !\n");
}
}
/*Fin du programme*/
getchar();getchar();
}
Exercice 2 :
Écrire un programme permettant de saisir un caractère représentant le code d'une figure :
'C' pour un cercle
'R' pour un rectangle
'K' pour un carré
‘
Dans le cas d'un cercle, le programme demandera d’entrer un rayon. Il effectue les calculs suivants
et affiche les résultats à l'écran :
Le périmètre (2*PI * rayon) et
L’aire
(PI * rayon * rayon)
Dans le cas d'un rectangle, le programme demandera d’entrer la longueur et la largeur. Il effectue
les calculs suivants et affiche les résultats à l'écran :
Le périmètre (2 * (longueur + largeur))
L’aire
(longueur * largeur)
Dans le cas d'un carré, le programme demandera d’entrer le côté. Il effectue les calculs suivants et
affiche les résultats à l'écran :
Le périmètre (4 *côté)
L’aire
(côté * côté)
Si le code saisi est égal à ‘Q’, afficher le message "A la prochaine"
Si le code saisi est invalide, afficher le message "Code invalide !"
Le programme doit répéter cette opération tan que la valeur entrée est différente de ‘Q’.
Ecrire le programme en utilisant la boucle de répétition do while
main()
{
/*Déclaration des variables*/
char code;
float rayon,longueur,largeur,cote,perimetre,aire,pi=3.14;
/*Début du programme*/
do
{
printf("Donnez-moi le code de la figure: ");
scanf(" %c",&code);
if(code=='C') /*Cercle */
{
printf("Donnez-moi le rayon: ");
scanf("%f",&rayon);
perimetre=2*pi*rayon;
aire=rayon*rayon*pi;
printf("Le perimetre du cercle est %.2f \n",perimetre);
printf("L aire du cercle est %.2f \n\n",aire);
}
else if (code=='R') /*Rectangle */
{
printf("Donnez-moi la longueur: ");
scanf("%f",&longueur);
printf("Donnez-moi la largeur: ");
scanf("%f",&largeur);
perimetre=2*(longueur+largeur);
aire=longueur*largeur;
printf("Le perimetre du rectangle est %.2f \n",perimetre);
printf("L aire du rectangle est %.2f \n\n",aire);
}
else if (code=='K') /*Carré*/
{
printf("Donnez-moi le cote: ");
scanf("%f",&cote);
perimetre=4*cote;
aire=cote*cote;
printf("Le perimetre du carre est %.2f
\n",perimetre);
printf("L aire du carre est %.2f \n\n",aire);
}
else if (code=='Q') /*Condition de sortie*/
{
printf("A la prochiane\n");
}else {
printf("Code invalide !\n\n");
}
}while (code!='Q');
/*Fin du programme*/
getchar();getchar();
}
Exercice 3 :
En utilisant la boucle for, écrire un programme qui permet de calculer et afficher la somme
suivante :
s = 1 + 2 + 3 + 4 + 5 + 6 + 7 + ... + 49
main()
{
/*Déclaration des variables*/
int cpt,somme=0;/*initialiser somme à 0*/
/*Début du programme*/
for(cpt=1;cpt<=49;cpt=cpt+1)
{
somme=somme+cpt;
}
printf("La somme de 1 a 49 est %d",somme);
/*Fin du programme*/
getchar();getchar();
}
Exercice 4 :
En utilisant la boucle for, écrivez un programme qui demande à l'usager d'entrer un entier positif.
Votre programme doit ensuite afficher tous les nombre positifs inférieurs à ce nombre, triés en
ordre croissant. Chaque nombre doit être affiché dans une ligne à part. Par exemple, si l'usager
entre 5, le programme doit afficher :
1
2
3
4
main()
{
/*Déclaration des variables*/
int nombre,cpt;
/*Début du programme*/
printf("Donnez-moi un nombre positif: ");
scanf("%d",&nombre);
for(cpt=1;cpt<nombre;cpt=cpt+1)
{
printf("%d\n",cpt);
}
/*Fin du programme*/
getchar();getchar();
}