This commit is contained in:
Emmanuel Srivastava
2025-01-20 18:26:48 +01:00
parent 6ec5942df4
commit f932e6813c
3 changed files with 172 additions and 0 deletions

46
DEV.1.1/divers/cm3.1.c Normal file
View File

@@ -0,0 +1,46 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Fonction pour traiter l'image */
void modifier_image_pgm(const char *nom_fichier) {
FILE *fichier;
char ligne[256];
int largeur, hauteur, niveaux, x, y;
fichier = fopen(nom_fichier, "r+");
if (fichier == NULL) {
fprintf(stderr, "Erreur: Impossible d'ouvrir le fichier\n");
exit(EXIT_FAILURE);
}
/* Lire l'en-tête du fichier PGM */
fgets(ligne, sizeof(ligne), fichier); /* Lire le format (P2) */
fgets(ligne, sizeof(ligne), fichier); /* Lire le commentaire */
fscanf(fichier, "%d %d", &largeur, &hauteur);
fscanf(fichier, "%d", &niveaux);
/* Modifier les pixels d'intensité 3 au centre de l'image */
for (y = 0; y < hauteur; y++) {
for (x = 0; x < largeur; x++) {
int pixel;
fscanf(fichier, "%d", &pixel);
if (pixel == 3 && x > 0 && x < largeur - 1 && y > 0 && y < hauteur - 1) {
fseek(fichier, -2, SEEK_CUR);
fprintf(fichier, "5 ");
}
}
}
fclose(fichier);
}
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage: %s fichier.pgm\n", argv[0]);
return EXIT_FAILURE;
}
modifier_image_pgm(argv[1]);
return EXIT_SUCCESS;
}

37
DEV.1.1/divers/cm3.2.c Normal file
View File

@@ -0,0 +1,37 @@
#include <stdio.h>
#include <stdlib.h>
/* Fonction récursive pour trouver le maximum */
int trouver_maximum(int n, int valeurs[]) {
if (n == 1) {
return valeurs[0];
}
int max_suivant = trouver_maximum(n - 1, valeurs + 1);
return (valeurs[0] > max_suivant) ? valeurs[0] : max_suivant;
}
int main(int argc, char *argv[]) {
int i, n;
int *valeurs;
if (argc < 2) {
fprintf(stderr, "Usage: %s nombre1 nombre2 ...\n", argv[0]);
return EXIT_FAILURE;
}
n = argc - 1;
valeurs = (int*)malloc(n * sizeof(int));
if (valeurs == NULL) {
fprintf(stderr, "Erreur d'allocation mémoire\n");
return EXIT_FAILURE;
}
for (i = 0; i < n; i++) {
valeurs[i] = atoi(argv[i + 1]);
}
printf("%d\n", trouver_maximum(n, valeurs));
free(valeurs);
return EXIT_SUCCESS;
}

89
DEV.1.1/divers/cm3.3.c Normal file
View File

@@ -0,0 +1,89 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Structure d'un nœud de la liste chaînée */
typedef struct Node {
int digit;
struct Node *next;
} Node;
/* Fonction pour ajouter un chiffre à la fin de la liste chaînée */
Node* ajouter_chiffre(Node *head, int digit) {
Node *new_node = (Node*)malloc(sizeof(Node));
if (new_node == NULL) {
fprintf(stderr, "Erreur d'allocation memoire\n");
exit(EXIT_FAILURE);
}
new_node->digit = digit;
new_node->next = NULL;
if (head == NULL) {
return new_node;
}
Node *temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = new_node;
return head;
}
/* Fonction pour convertir une chaîne en liste chaînée */
Node* convertir_en_liste(const char *nombre) {
Node *head = NULL;
int i;
for (i = 0; nombre[i] != '\0'; i++) {
head = ajouter_chiffre(head, nombre[i] - '0');
}
return head;
}
/* Fonction pour afficher la liste chaînée */
void afficher_liste(Node *head) {
while (head != NULL) {
printf("%d", head->digit);
head = head->next;
}
}
/* Fonction pour additionner deux listes chaînées */
Node* additionner_listes(Node *l1, Node *l2) {
Node *resultat = NULL;
int retenue = 0;
while (l1 != NULL || l2 != NULL || retenue) {
int somme = retenue;
if (l1 != NULL) {
somme += l1->digit;
l1 = l1->next;
}
if (l2 != NULL) {
somme += l2->digit;
l2 = l2->next;
}
resultat = ajouter_chiffre(resultat, somme % 10);
retenue = somme / 10;
}
return resultat;
}
/* Fonction principale */
int main(int argc, char *argv[]) {
Node *num1;
Node *num2;
Node *somme;
if (argc != 3) {
fprintf(stderr, "Usage: %s nombre1 nombre2\n", argv[0]);
return EXIT_FAILURE;
}
num1 = convertir_en_liste(argv[1]);
num2 = convertir_en_liste(argv[2]);
somme = additionner_listes(num1, num2);
afficher_liste(somme);
printf("\n");
return EXIT_SUCCESS;
}