Exercice 01 : 3PTS
#include <stdio.h>
#include <math.h>
#define e 2
// 1)-- Fonction : puissance 1pt
int puissance(int a, int b) {
if (b == 0)
return 1;
else
return a * puissance(a, b - 1);
}
// 2)-- Fonction : terme 2pts
void terme(int n) {
float u0 = 0.5, u1 = u0;
for (int i = 0; i <= n; i++) {
printf("U(%d) = %f\n", i, u1);
u1 = puissance(e, floor(u0)) / (i + 2);
u0 = u1;
}
}
Exercice 02 : 2+5 PTS
1) Occurrence :
#include <stdio.h>
main()
{
/* Déclarations */
char CH[101]; /* chaîne donnée */
char *PCH; /* pointeur d'aide dans CH */
int ABC[26]; /* compteurs des différents caractères */
int *PABC; /* pointeur d'aide dans ABC */
/* Saisie des données */
printf("Entrez une ligne de texte (max.100 caractères) :\n");
gets(CH);
/* Initialiser le tableau ABC */
for (PABC=ABC; PABC='A' && *PCH<='Z')
(*(ABC+(*PCH-'A')))++; /* Attention aux parenthèses! */
if (*PCH>='a' && *PCH<='z')
(*(ABC+(*PCH-'a')))++;
}
/* Affichage des résultats */
/* (PABC-ABC) est le numéro de la lettre de l'alphabet. */
printf("La chaîne \"%s\" contient :\n", CH);
for (PABC=ABC; PABC
2) La fonction de tri implémentée dans cet exercice est un tri par sélection. Voici comment il fonctionne :
#include <stdio.h>
#define N 100
void tri() {
int taille;
// Saisie de la dimension du tableau
printf("Entrez la taille du tableau : ");
scanf("%d", &taille);
int tableau[taille];
// Saisie des éléments du tableau
for (int i = 0; i < taille; i++) {
printf("Entrez l'élément %d : ", i + 1);
scanf("%d", &tableau[i]);
}
// Affichage du tableau initial
printf("Tableau initial : ");
for (int i = 0; i < taille; i++) {
printf("%d ", tableau[i]);
}
printf("\n");
// Tri du tableau par sélection
for (int i = 0; i < taille - 1; i++) {
int indiceMin = i;
for (int j = i + 1; j < taille; j++) {
if (tableau[j] < tableau[indiceMin]) {
indiceMin = j;
}
}
// Échange des éléments
int temp = tableau[i];
tableau[i] = tableau[indiceMin];
tableau[indiceMin] = temp;
}
// Affichage du tableau trié
printf("Tableau trié : ");
for (int i = 0; i < taille; i++) {
printf("%d ", tableau[i]);
}
printf("\n");
}
Exercice 03 : Manipulation des Chaînes de Caractères
#include <stdio.h>
#include <string.h>
#define LANGMAX 100
typedef char *mot;
typedef mot *langage;
// 1)-- Fonction pour afficher les mots d'un langage
void afficher(langage i) {
int j = 0;
while (i[j] != NULL) {
printf("%s\n", i[j]);
j++;
}
}
// 2)-- Fonction pour verifier si un mot appartient a un langage
int appartient(mot m, langage l) {
int i = 0;
while (l[i] != NULL) {
if (strcmp(m, l[i]) == 0) {
return 1; // le mot est trouve dans le langage
}
i++;
}
return 0; // le mot n'est pas trouve dans le langage
}
// 3)-- Fonction pour vérifier si deux langages sont disjoints
int disjoints(langage l1, langage l2) {
int i = 0;
while (l1[i] != NULL) {
if (appartient(l1[i], l2)) {
return 0; // les langages ne sont pas disjoints
}
i++;
}
return 1; // les langages sont disjoints
}
// 4)-- Fonction pour ajouter un mot à un langage
int ajouter(mot m, langage l) {
if (m == NULL) {
return -1; // ne peut pas ajouter un mot NULL
}
int i = 0;
while (l[i] != NULL && i < LANGMAX) {
i++;
}
if (i < LANGMAX) {
l[i] = m;
l[i + 1] = NULL;
return i; // indice où le mot est ajouté
}
return -1; // le langage est plein, impossible d'ajouter plus de mots
}
// 5)-- Fonction pour enlever un mot d'un langage
void enlever(mot m, langage l) {
int i = 0;
while (l[i] != NULL) {
if (strcmp(m, l[i]) == 0) {
while (l[i] != NULL) {
l[i] = l[i + 1];
i++;
}
return; // mot enlevé avec succès
}
i++;
}
}
int main() {
// Création des langages
mot langage1[LANGMAX + 1]; // +1 pour le terminateur NULL
mot langage2[LANGMAX + 1];
// Initialisation des langages
langage1[0] = "algorithme";
langage1[1] = "chat";
langage1[2] = "Programmation C";
langage1[3] = NULL;
langage2[0] = "chat";
langage2[1] = "chien";
langage2[2] = "lapin";
langage2[3] = NULL;
printf("Bienvenue sur mon Application de Test créée par Mr joelYk:\n");
// Test de la fonction afficher
printf("Termes en informatique :\n");
afficher(langage1);
printf("\nAnimaux domestiques :\n");
afficher(langage2);
// Test de la fonction disjoints
printf("\nLes termes en informatique et les animaux domestiques sont-ils disjoints ? %d\n", disjoints(langage1, langage2));
// Test de la fonction ajouter
printf("\nAjout de 'java' aux termes en informatique à l'indice : %d\n", ajouter("java", langage1));
printf("Ajout de 'chien' aux animaux domestiques à l'indice : %d\n", ajouter("chien", langage2)); // Devrait échouer
// Test de la fonction enlever
printf("\nRetrait de 'chat' des termes en informatique\n");
enlever("programmation", langage1);
printf("Termes en informatique après le retrait :\n");
afficher(langage1);
return 0;
}
Test du Code :