Vous êtes sur la page 1sur 7

Université des Sciences, des Techniques et des Technologies de Bamako

Faculté des Sciences et Techniques

TD-TP N°1 INF1101 : Algorithmique et Programmation

Exercice 1
a) Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes
?

Variables

Entier A, B, C ;

Début

A← 8;

B←20;

C←A+B;

B←A+B+C;

A←C ;

Fin

b) Ecrire un algorithme permettant d’échanger les valeurs de deux variables A et B.


c) Ecrire un algorithme qui demande un nombre à l’utilisateur, puis calcule et affiche le carré
de ce nombre.
d) Ecrire un algorithme qui demande à un utilisateur la longueur et la largeur d’un rectangle
et qui calcule et affiche la surface et le périmètre de ce rectangle.
e) Écrire un algorithme qui lit un nombre au clavier et qui détermine si le nombre est pair ou
impair.

f) Ecrire un algorithme qui demande à l’utilisateur deux nombres réels. Puis détermine le
maximum entre ces deux nombres.

1
Exercice 2 :
Pour convertir des degrés Fahrenheit en degrés Celsius, on a la formule suivante :
C = 0.55556 × (F − 32) où F est une température en degrés Fahrenheit et C la température
correspondante en degrés Celsius.

a) Écrire un algorithme qui convertit une température entrée au clavier exprimée en degrés
Fahrenheit et affiche une valeur approchée de la même température en degrés Celsius. Les
températures seront exprimées par des nombres réels.
b) Même question qu’au a) pour la conversion inverse : de degrés Celsius en degrés
Fahrenheit.

Exercice 3
Une bille de plomb est lâchée du haut d’un immeuble et tombe en chute libre. Au bout d’un temps
t (exprimé en secondes), la bille est descendue d’une hauteur h (exprimée en mètres) :
1
ℎ = 𝑔 ∗ 𝑡 2 avec g = 9.81 (exprimé en (m. s−2), g : gravité, unité d’accélération)
2

a) Écrire un algorithme qui calcule la hauteur descendue au bout d’un temps t saisi au clavier.
b) Écrire un algorithme qui calcule la durée totale de la chute connaissant la hauteur totale h
de l’immeuble saisi au clavier. (On pourra utiliser la fonction sqrt qui calcule la racine
carrée d’un nombre.)

Exercice 4
a) Ecrire un algorithme permettant de résoudre une équation du second degré.
b) Ecrire un algorithme qui permet d’afficher à l’écran les nombres entre 1, 2, 3,…,n.
L’utilisateur doit donner la valeur de n. Contraintes à prendre en compte lors de la lecture
de n (n doit être compris entre 10 et 100).
c) Écrire un algorithme qui demande un nombre de départ, et qui calcule la somme des entiers
jusqu'à ce nombre. Par exemple si l'on tape 4, l'algorithme doit calculer : 1 + 2 + 3+ 4 =
10.
d) Écrire une fonction qui calcule le nombre de chiffres en base 10 d’un nombre n.
e) Écrire une fonction qui calcule le ième chiffre en base 10 d’un nombre n. Les entiers i et n
sont entrés au clavier. On supposera que les chiffres sont numérotés à l’envers (le chiffre
des unités est le numéro 0, le chiffre des dizaines est le numéro 1...)
f) Écrire une fonction qui renvoie la plus grande puissance de 2 inférieure à la constante
C = 2 426 555 645.
g) Ecrire une fonction qui renvoie la plus grande puissance de 2 inférieure à un nombre passé
en paramètre.

2
Exercice 5
On veut réaliser un petit jeu de devinette, l’ordinateur choisit un nombre entre 0 et 100, et
l’utilisateur devine le nombre en question. Le programme doit orienter l’utilisateur, en
l’informant si la valeur recherchée est plus petite ou plus grande que son choix à chaque
tentative. Le jeu s’arrête si l’utilisateur trouve le nombre. Le programme doit l’informer du
nombre de tentatives effectuées.
1. Ecrire un algorithme permettant de réaliser ce jeu sachant qu’une fonction rand()
prédéfinie génère un nombre entre 0 et 1.

Implémenter cet algorithme en c. On pourrait utiliser les instructions suivantes pour


permettre à l’ordinateur de choisir un nombre au hasard

#include <stdlib.h>
#include <time.h>

int main() {
// Initialisation du générateur de nombres aléatoires
srand(time(NULL));
// Génération d'un nombre aléatoire entre 0 et 100
int nombreSecret = rand() % 101;
}

Exercice 6
On veut écrire un algorithme de machine à voter. On fait voter des utilisateurs tant qu’il y en a
entre un candidat A et un candidat B. À chaque fois, l’algorithme demande s’il doit continuer. À
la fin, l’algorithme doit afficher les pourcentages de voix et le vainqueur. L’algorithme doit être
fiable à 100% et ne doit pas permettre d’erreur de saisie.

Exercice 7
a) Ecrire un algorithme permettant à un utilisateur de saisir un nombre quelconque de valeurs
entières mais la saisie doit s'arrêter dès que leur somme est supérieure à 600.
b) Ecrire un algorithme qui demande un nombre entier de départ, et qui ensuite affiche les dix
nombres suivants.

Exercice 8
a) Ecrire un algorithme qui demande un nombre de départ, et qui calcule sa factorielle.
b) On désire écrire un algorithme qui lit au clavier une valeur représentant une somme d'argent
et qui calcule et affiche le nombre de billets de 10 000, 5000, 2000, 1000 et 500 CFA qu'elle
représente (on suppose que le nombre est multiple de 500).

3
c) Sachant que le premier avril 2004 était un jeudi, écrire un algorithme qui détermine le jour
de la semaine correspondant au 4 mai de la même année. On pourra représenter les jours
de la semaine par des numéros allant de 0 à 6.
d) Écrire un programme qui affiche le chiffre des dizaines d’un nombre saisi au clavier. Même
question pour les centaines.

Exercice 9
Concevoir un algorithme qui affiche pour 𝑛 donné :

12

123

1234

.............

1 2 3 4 5 6 ... n

Exercice 10
On s’intéresse au calcul de la moyenne générale des étudiants dans une unité d’enseignement (UE).
Chaque étudiant possède deux notes de devoir dénommées note_devoir_1 et note_devoir_2 et une
note d’examen de nom note_examen. Le principe de calcul de la moyenne générale d’un étudiant
est le suivant : (i) On effectue d’abord la moyenne (arithmétique) des deux devoirs et on nomme
note_devoir le résultat obtenu. (ii) on calcul ensuite la moyenne générale, dénommée
moyenne_generale en faisant une moyenne pondérée de poids 2 pour note_examen et de poids 1
pour note_devoir. On admet qu’un étudiant a validé l’UE si sa moyenne générale est supérieure
ou égale à 10. On dira qu’il est ajourné sinon. L’appréciation attribuée par le chargé de l’UE à un
étudiant ayant validé l’UE est fonction de la moyenne générale et se présente comme suit : (i)
“Passable” si moyenne_generale < 12, (ii) “Assez-bien” si 12 <=moyenne_generale < 14 (iii)
“Bien” si 14 <=moyenne_generale < 16 (iv) “très-Bien” si 16<=moyenne_generale <18 (v)
“Excellent” si 18<=moyenne_generale < 20 (vi) “Exceptionelle” si moyenne_generale = 20.
Écrire un algorithme permettant de réaliser les actions suivantes :
a) Demander à l’utilisateur de saisir au clavier trois nombres réels (compris entre 0 et 20)
representant les notes d’un étudiant. Ces nombres seront lus et affectés respectivement aux
variables note_devoir_1, note_devoir_2 et note_examen, déclarées au préalable. On fera
en sorte que la demande de saisie se répète tant que l’une au moins des notes saisies sera
hors de l’intervalle précisé ;
b) Calculer la moyenne (variable note_devoir) des deux devoirs de l’étudiant ;
c) Calculer la moyenne générale (variable moyenne_generale) de l’étudiant ;

4
d) Afficher à l’écran, en fonction de la moyenne générale, un message rapportant si l’étudiant
a validé l’UE ou s’il est ajourné. Dans ce dernier cas, on lui proposera de passer la
deuxième session ;
e) Afficher à l’écran, pour un étudiant ayant validé l’UE, un message qui rapporte
l’appréciation attribuée à l’étudiant par le chargé de l’UE ;
Exercice 11
La banque décide d’accorder un prêt à un taux préférentiel aux clients ayant un compte d’épargne
et dont leur intérêt total cumulé atteint la somme de 150.000 FCFA. Un placement initial, dont les
montants plancher et plafond sont fixés respectivement à 200.000 FCFA et 950.000 FCFA, doit
être versé au compte à sa création. On suppose que, après ce placement initial, aucune autre
opération de versement ou de retrait n’est autorisée sur le compte. L’intérêt, dont le taux est de
3.5%, est calculé annuellement par rapport au placement existant et ajouté à celui-ci. Un client
admit au prêt doit décider du montant qu’il souhaite contracter sachant celui-ci ne peut dépasser
dix (10) fois son placement existant. En plus, il doit également choisir le nombre d’années qu’il
lui faudra pour rembourser le prêt, étant donné que celui-ci ne peut dépasser six (6) ans. Le
payement sera alors échelonné (équitablement) sur ces années. En plus, le client doit chaque année
à la banque, jusqu’à l’échéance, un intérêt d’emprunt dont le taux annuel s’élève à 6.5%. Cet intérêt
est calculé par rapport au montant du prêt restant à rembourser. Écrire un programme C qui réalise
les actions suivantes (les identifiants de quelques variables sont donnés en italiques entre
parenthèses, vous pouvez déclarer des variables supplémentaires les besoins) :
a) Saisir au clavier le montant de son placement initial. Ce nombre doit être un multiple de
500 compris entre 200.000 et 950.000 (contraintes à prendre en compte).
b) Déterminer et afficher le nombre d’années (nombre_annees) qu’il lui faut pour bénéficier
d’un prêt.
c) Saisir au clavier le montant du prêt qu’il sollicite. Ce montant ne peut dépasser dix (10)
fois le placement existant du client (contrainte à prendre en compte).
d) Saisir au clavier la durée de son prêt. Ce nombre doit être compris entre 1 et 6 (contrainte
à prendre en compte).
e) Connaitre le montant du prêt (sans intérêt) qu’il doit rembourser chaque année à la banque.
f) Connaitre le montant total (prêt + intérêts) que le client doit chaque année à la banque. On
affichera un tableau d’amortissement du prêt.

Exercice 12
a) Ecrivez un algorithme permettant à un utilisateur de saisir un nombre quelconque de
valeurs, qui devront être stockées dans un tableau. L’utilisateur doit donc commencer par
entrer le nombre de valeurs qu’il compte saisir. Il effectuera ensuite cette saisie. Enfin, une
fois la saisie terminée, le programme affichera le nombre de valeurs négatives et le nombre
de valeurs positives
b) Ecrire l’algorithme d’une fonction qui permet d’inverser un tableau d’entiers.
c) Ecrire une fonction qui supprime l’élément à la position k dans un tableau d’entiers.
5
Exercice 13

a) Ecrire une fonction qui insère un entier dans un tableau d’entiers à une position donnée.
On suppose que soit il reste une position libre à la fin du tableau soit on perd le dernier
élément.
b) Ecrire une fonction qui prend en paramètre deux tableaux et retourne le tableau résultant
de leur concaténation.
c) Ecrire l’algorithme d’une fonction qui permet d’initialiser de façon aléatoire les éléments
d’un tableau d’entiers et un autre algorithme qui permet de rechercher dans le tableau
l’occurrence d’une valeur entière particulière. Si l’élément est trouvé, il renvoie la valeur
vrai, sinon il renvoie la valeur faux.

Exercice 14
(2𝑥 3 +3)(𝑥 2 −1
Soit la fonction mathématique f définie par 𝑓 (𝑥) = √3𝑥 2 +1
).

Écrire une fonction C qui retourne la valeur de f (x) pour un point x passé en paramètre.

Une approximation de la dérivée f’ de la fonction f est donnée en chaque point x, pour h assez petit
(proche de 0), par : 𝑓 ′ (𝑥) = (𝑓 (𝑥 + ℎ) − 𝑓 (𝑥 − ℎ) )/2ℎ. Écrire une fonction C qui calcule
une approximation de la dérivée f’ de f en un point x entré au clavier. On passera la valeur de h en
paramètre de la fonction.

La dérivée seconde de f est la dérivée de la dérivée. Écrire une fonction C qui calcule une
approximation de la dérivée seconde f’’ de f en un point x entré au clavier. On passera la valeur
de h en paramètre de la fonction.

Écrire une fonction C qui détermine le signe de la dérivée seconde de f en fonction de x. On pourra
faire un programme principal qui lit x au clavier et affiche le résultat.

Écrire une fonction C qui donne le choix à l’utilisateur d’afficher la valeur de la fonction f , de sa
dérivée première ou de sa dérivée seconde en un point x lu au clavier.

Exercice 15
2
Soit la fonction 𝑓 (𝑥) = {3𝑥 + 𝑥 + 1 𝑠𝑖 𝑥 ≥ 1
0 𝑠𝑖𝑛𝑜𝑛
a) Écrire une fonction qui prend en paramètre un entier x et calcule f (x).
b) Écrire une fonction qui prend en paramètre un entier n et calcule la somme :
𝑆𝑛 = 𝑓(𝑛) + 𝑓(𝑛 − 1) + 𝑓(𝑛 − 2) + 𝑓(𝑛 − 3) + 𝑓(𝑛 − 4) + ··· On arrêtera la somme
lorsque la valeur f calculée est nulle.

6
c) Écrire une fonction qui prend en paramètre un entier n et calcule la somme :
𝑇𝑛 = 𝑓(𝑛) + 𝑓(𝑛/22) + 𝑓(𝑛/32) + 𝑓(𝑛/42) + 𝑓(𝑛/52) +··· Dans cette somme, les
divisions sont des divisions euclidiennes. On arrêtera la somme lorsque la valeur f calculée
est nulle.
d) Écrire une fonction qui prend en paramètre un entier n et calcule la somme :
𝑈𝑛 = 𝑓(𝑛) + 𝑓(𝑛/2) + 𝑓(𝑛/4) + 𝑓(𝑛/8) + 𝑓(𝑛/16) + ··· Dans cette somme, les
divisions sont des divisions euclidiennes. On arrêtera la somme lorsque la valeur f calculée
est nulle.

Exercice 16
a) Ecrire une fonction rechercheElement(entier [] tab, entier x) qui prend en prend en
paramètre un tableau de n entiers et un entier x. La fonction doit renvoyer la position de x
s’il est dans le tableau, et -1 sinon. Ecrire une version avec la boucle « pour » et une autre
avec la boucle « tant que ».
b) Ecrire une fonction qui détermine si un nombre entier donné en paramètre est premier ou
non.
c) Ecrire une fonction qui prend en paramètre un nombre entier et qui affiche la liste des
nombres premiers inférieurs à ce nombre
d) Ecrire un algorithme qui demande un nombre entier à l’utilisateur et qui détermine si le
nombre est parfait ou non. Un nombre est parfait s’il est égal à la somme de ses diviseurs.
Exemple 6=1+2+3.
e) Ecrire une fonction qui prend en paramètre un nombre entier et qui affiche la liste des
nombres parfaits inférieurs à ce nombre.
f) Les nombres a tels que : (𝑎 + 𝑛 + 𝑛2 ) est premier pour tout 𝑛 tel que 0 ≤ 𝑛 < (𝑎 −
1), sont appelés nombres chanceux. Ecrire une fonction qui détermine si un nombre entier
est chanceux ou non et une autre fonction qui affiche la liste des nombres chanceux compris
entre deux nombres min et max.

Vous aimerez peut-être aussi