0% ont trouvé ce document utile (0 vote)
23 vues6 pages

TDs - INF 111

Ce document présente une série d'exercices pour un cours d'introduction à l'algorithmique à l'Université de Yaoundé I. Les exercices couvrent divers concepts algorithmiques, tels que la conception d'algorithmes, le calcul de la monnaie, les diviseurs, les nombres premiers, les structures de données comme les piles et les files, ainsi que des algorithmes de tri et de recherche. Chaque exercice demande aux étudiants d'écrire des algorithmes ou des fonctions pour résoudre des problèmes spécifiques.

Transféré par

nganews4
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues6 pages

TDs - INF 111

Ce document présente une série d'exercices pour un cours d'introduction à l'algorithmique à l'Université de Yaoundé I. Les exercices couvrent divers concepts algorithmiques, tels que la conception d'algorithmes, le calcul de la monnaie, les diviseurs, les nombres premiers, les structures de données comme les piles et les files, ainsi que des algorithmes de tri et de recherche. Chaque exercice demande aux étudiants d'écrire des algorithmes ou des fonctions pour résoudre des problèmes spécifiques.

Transféré par

nganews4
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROUN

Paix-Travail-Patrie Peace-Work-Fatherland
***** *****
UNIVERSITE DE YAOUNDE I THE UNIVERSITY OF YAOUNDE I
Sapientia –Collativa- Cognitio Sapientia –Collativa- Cognitio
***** *****
FACULTE DES SCIENCES FACULTY OF SCIENCE
DEPARTEMENT D’INFORMATIQUE DEPARTMENT OF COMPUTER
SCIENCE

TRAVAUX DIRIGES D’INTRODUCTION A L’ALGORITHMIQUE (INF 111)


Dr. NDOM / Professeur ATSA 2025-2026

Exercice 1

Give all the steps for the design and implementation of an algorithm.

Exercice 2
Un marchand de monnaie ou monnayeur reçoit de son client un billet en FCFA, et doit lui
rendre la monnaie en utilisant les pièces suivantes : 25, 50, 100 et 200. Ecrire un algorithme
permettant de résoudre ce problème.
Exercice 3
L’assurance Z vous paye une prestation de garantie si la somme de vos intérêts dépasse
200.000. L’intérêt est de 3.5% par an.
Ecrire un algorithme qui lit le montant de la prime payée par l'assuré à la compagnie
d'assurance, détermine et affiche le nombre d’années nécessaires pour bénéficier de cette
prestation.
Exercice 4
Que fait l’algorithme suivant ?
Algorithme mystèreBoucle2
# c’est à vous de trouver ce que fait cet algorithme…
variables a, b, c : entiers naturels
début
# lecture des données
Entrer ( a, b )
# initialisation et calculs
c 1
tantque ( b ≠ 0 )
faire si ( ( b mod 2 ) = 1 )
alors c c * a
fin_si
a a*a
b b div 2
fin_tantque

1/6
REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROUN
Paix-Travail-Patrie Peace-Work-Fatherland
***** *****
UNIVERSITE DE YAOUNDE I THE UNIVERSITY OF YAOUNDE I
Sapientia –Collativa- Cognitio Sapientia –Collativa- Cognitio
***** *****
FACULTE DES SCIENCES FACULTY OF SCIENCE
DEPARTEMENT D’INFORMATIQUE DEPARTMENT OF COMPUTER
SCIENCE

TRAVAUX DIRIGES D’INTRODUCTION A L’ALGORITHMIQUE (INF 111)


Dr. NDOM / Professeur ATSA 2025-2026

# affichage résultat
Afficher ( c )

Exercice 5 Durée d’un vol d’avion


Écrire un algorithme permettant de calculer la durée d’un vol d’avion, connaissant l’horaire
de départ (heures et minutes) et l’horaire d’arrivée (heures et minutes), sans convertir les
horaires en minutes. On suppose que le vol dure moins de 24 heures.
Exercice 6 Diviseurs d’un entier et nombre premier
1. Écrire un algorithme permettant d’afficher les diviseurs d’un entier naturel par ordre
croissant.
2. Écrire un algorithme permettant de déterminer si un entier naturel entré au clavier
est premier.
3. Deux nombres premiers sont jumeaux si leur différence vaut 2 (par exemple, 5 et 7
sont deux nombres premiers jumeaux). Écrire un algorithme permettant d’afficher
tous les couples de nombres premiers jumeaux inférieurs à 1000.
Nota Bene : dans la suite lorsqu’on parle d’algorithme, il s’agit d’écrire une procédure ou une fonction

Exercice 7

Ecrire deux fonctions iterative et récursive permettant de calculer factorielle d’un nombre
entier positif.

Exercice 8 Calcul du nième nombre de Fibonnacci


Écrire un algorithme permettant de calculer le nombre de Fibonacci F(n) : F(0) = 0, F(1) = 1,
et F(n) = F(n-1) + F(n-2).

Exercice 9
Considérons les algorithmes ci-dessous :
a) Quel sera le contenu des variables a, b et éventuellement c après leur exécution

2/6
REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROUN
Paix-Travail-Patrie Peace-Work-Fatherland
***** *****
UNIVERSITE DE YAOUNDE I THE UNIVERSITY OF YAOUNDE I
Sapientia –Collativa- Cognitio Sapientia –Collativa- Cognitio
***** *****
FACULTE DES SCIENCES FACULTY OF SCIENCE
DEPARTEMENT D’INFORMATIQUE DEPARTMENT OF COMPUTER
SCIENCE

TRAVAUX DIRIGES D’INTRODUCTION A L’ALGORITHMIQUE (INF 111)


Dr. NDOM / Professeur ATSA 2025-2026

Exercice 9
Écrire une fonction qui prend un tableau d’entiers en paramètre et détermine le plus grand

élément de celui-ci.

Exercice 10
Ecrivez un algorithme qui inverse l’ordre des éléments d’un tableau d’entier de taille N après
les avoir triés. Les premiers seront les derniers et vice-versa.

Exercice 11
Ecrivez un algorithme qui tri (tri fusion) dans l’ordre des éléments d’un tableau d’entier de
taille N.

Exercice 12
Écrire un algorithme qui calcule une valeur approchée de racine de x à 10^-2 près en utilisant
la méthode par recherche dichotomique.

Exercice 13 Structure de donnée Pile


1. Soit (y, q) = Depiler(Empiler(x,PileVide)). Montrer que EstVide(q) = VRAI et y = x.
On suppose que l’on dispose d’une implantation du TDA Pile(elem) avec l’interface
suivante :
typedef ... pile;
pile empty();
int is_empty(const pile);
push(pile &, elem);
elem pop(pile &);
2. Montrer que les états de la variable p après les deux suites d’instructions suivantes
sont identiques :

3/6
REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROUN
Paix-Travail-Patrie Peace-Work-Fatherland
***** *****
UNIVERSITE DE YAOUNDE I THE UNIVERSITY OF YAOUNDE I
Sapientia –Collativa- Cognitio Sapientia –Collativa- Cognitio
***** *****
FACULTE DES SCIENCES FACULTY OF SCIENCE
DEPARTEMENT D’INFORMATIQUE DEPARTMENT OF COMPUTER
SCIENCE

TRAVAUX DIRIGES D’INTRODUCTION A L’ALGORITHMIQUE (INF 111)


Dr. NDOM / Professeur ATSA 2025-2026

// déclaration des types


elem x,y,z,t;
pile p;
// séquence d’instructions 1
push(&p, x);
push(&p, y);
// séquence d’instructions 2
push(&p, y);
push(&p, x);
z = pop(&p);
t = pop(&p);
push(&p, z);
push(&p, t);
Exercice 14 Implantation de Pile(T) et File(T)
1. Implanter le TDA Pile(elem) avec la structure de donnée suivante :
#define MAXPILE ...
struct pile_s {
int size;
elem values[MAXPILE];
};
2. Implanter le TDA Pile(elem) avec la structure de donnée suivante :
#define MAXFILE ...
struct pile_s {

4/6
REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROUN
Paix-Travail-Patrie Peace-Work-Fatherland
***** *****
UNIVERSITE DE YAOUNDE I THE UNIVERSITY OF YAOUNDE I
Sapientia –Collativa- Cognitio Sapientia –Collativa- Cognitio
***** *****
FACULTE DES SCIENCES FACULTY OF SCIENCE
DEPARTEMENT D’INFORMATIQUE DEPARTMENT OF COMPUTER
SCIENCE

TRAVAUX DIRIGES D’INTRODUCTION A L’ALGORITHMIQUE (INF 111)


Dr. NDOM / Professeur ATSA 2025-2026

int head, tail;


elem values[MAXFILE];
};

Exercice 15 Pile avec taille


1. Étendre la spécification Pile(T) pour ajouter une fonction Hauteur.
2. Quels sont les axiomes vérifiés par Hauteur ?

Exercice 16 Tableau
1. Ecrire la spécification Tableau (T) et ajouter la fonction taille
2. Quels sont les axiomes vérifiés par taille ?
Exercice 17
Soit l’algorithme ci-dessous en langage C. Faites un « dry run » pour tester ce programme,
puis donner son principe.
#include <stdio.h>
#include <stdlib.h>
#define MAX_NODES 100
// Structure d'un nœud de la liste d'adjacence
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct Graph {
int num_nodes;

5/6
REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROUN
Paix-Travail-Patrie Peace-Work-Fatherland
***** *****
UNIVERSITE DE YAOUNDE I THE UNIVERSITY OF YAOUNDE I
Sapientia –Collativa- Cognitio Sapientia –Collativa- Cognitio
***** *****
FACULTE DES SCIENCES FACULTY OF SCIENCE
DEPARTEMENT D’INFORMATIQUE DEPARTMENT OF COMPUTER
SCIENCE

TRAVAUX DIRIGES D’INTRODUCTION A L’ALGORITHMIQUE (INF 111)


Dr. NDOM / Professeur ATSA 2025-2026

Node* adj_list[MAX_NODES];
int visited[MAX_NODES];
// Tableau pour suivre les nœuds visités
} Graph;
void DFS(Graph* graph, int start_node) {
graph->visited[start_node] = 1;
printf("Nœud visité : %d\n", start_node);
Node* current = graph->adj_list[start_node];
while (current != NULL) {
int neighbor = current->data;
// Si le voisin n'a pas été visité, appeler DFS récursivement
if (graph->visited[neighbor] == 0) {
DFS(graph, neighbor);
}
current = current->next;
}
}

6/6

Vous aimerez peut-être aussi