Épreuve d’Entraînement : Structures de Données © & Java (POO)
Bienvenue dans cette épreuve d’entraînement qui couvre les concepts clés du module IGL245. Vous avez 5 exercices à réaliser : 4 en langage C et 1 en langage Java.
Exercice 1 : Les Fichiers (Langage C)
Objectif : Écrire un programme C qui copie le contenu d’un fichier source.txt vers destination.txt caractère par caractère.
Consignes :
- Ouvrir le fichier source en lecture (
r). - Ouvrir le fichier destination en écriture (
w). - Lire chaque caractère jusqu’à
EOFet l’écrire dans la destination. - Fermer les fichiers.
Voir la Solution
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *src, *dest;
char ch;
src = fopen("source.txt", "r");
if (src == NULL) {
printf("Erreur : Impossible d'ouvrir source.txt\n");
return 1;
}
dest = fopen("destination.txt", "w");
if (dest == NULL) {
printf("Erreur : Impossible de créer destination.txt\n");
fclose(src);
return 1;
}
while ((ch = fgetc(src)) != EOF) {
fputc(ch, dest);
}
printf("Copie terminée avec succès.\n");
fclose(src);
fclose(dest);
return 0;
}
Exercice 2 : Listes Linéaires Chaînées (Langage C)
Objectif : Définir la structure d’un nœud et une fonction pour ajouter un élément au début de la liste.
Consignes :
- Définir
struct Node(dataint, nextstruct Node*). - Écrire la fonction
void push(struct Node** head_ref, int new_data).
Voir la Solution
#include <stdio.h>
#include <stdlib.h>
// Définition du nœud
struct Node {
int data;
struct Node* next;
};
// Ajouter au début
void push(struct Node** head_ref, int new_data) {
// 1. Allouer le nœud
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
// 2. Assigner la donnée
new_node->data = new_data;
// 3. Faire pointer le nouveau nœud vers l'ancienne tête
new_node->next = (*head_ref);
// 4. Mettre à jour la tête pour pointer vers le nouveau nœud
(*head_ref) = new_node;
}
Exercice 3 : Les Files (Queues) (Langage C)
Objectif : Implémenter l’opération enqueue (enfiler) pour une file basée sur un tableau.
Structure :
#define MAX 100
typedef struct {
int items[MAX];
int front, rear;
} Queue;
Voir la Solution
#include <stdio.h>
#define MAX 100
typedef struct {
int items[MAX];
int front, rear;
} Queue;
void enqueue(Queue* q, int value) {
if (q->rear == MAX - 1) {
printf("Erreur : File pleine (Overflow)\n");
} else {
if (q->front == -1) // Si c'est le premier élément
q->front = 0;
q->rear++;
q->items[q->rear] = value;
printf("Inséré : %d\n", value);
}
}
Exercice 4 : Les Piles (Stacks) (Langage C)
Objectif : Implémenter l’opération pop (dépiler) pour une pile LIFO.
Structure :
#define MAX 100
typedef struct {
int items[MAX];
int top;
} Stack;
Voir la Solution
#include <stdio.h>
#define MAX 100
typedef struct {
int items[MAX];
int top;
} Stack;
int pop(Stack* s) {
if (s->top == -1) {
printf("Erreur : Pile vide (Underflow)\n");
return -1;
} else {
int popped = s->items[s->top];
s->top--;
return popped;
}
}
Exercice 5 : Introduction Java & POO (Langage Java)
Objectif : Créer une classe Livre représentant un livre dans une bibliothèque.
Consignes :
- Attributs privés :
titre(String),auteur(String),prix(double). - Constructeur pour initialiser les 3 attributs.
- Methode
afficherDetails()qui affiche les infos. - Methode
mainpour tester.
Voir la Solution
public class Livre {
// 1. Attributs privés (Encapsulation)
private String titre;
private String auteur;
private double prix;
// 2. Constructeur
public Livre(String titre, String auteur, double prix) {
this.titre = titre;
this.auteur = auteur;
this.prix = prix;
}
// 3. Méthode d'affichage
public void afficherDetails() {
System.out.println("Livre : " + titre);
System.out.println("Auteur : " + auteur);
System.out.println("Prix : " + prix + " €");
System.out.println("-------------------------");
}
// 4. Main pour tester
public static void main(String[] args) {
Livre l1 = new Livre("Le Petit Prince", "Antoine de Saint-Exupéry", 7.50);
Livre l2 = new Livre("1984", "George Orwell", 10.90);
l1.afficherDetails();
l2.afficherDetails();
}
}
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur Épreuve d'Entraînement : Structures de Données (C) & Java (POO). Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.