diff --git "a/Corrig\303\251_TD1/TD1.pdf" "b/Corrig\303\251/TD1/TD1.pdf" similarity index 100% rename from "Corrig\303\251_TD1/TD1.pdf" rename to "Corrig\303\251/TD1/TD1.pdf" diff --git "a/Corrig\303\251_TD1/exo0.c" "b/Corrig\303\251/TD1/exo0.c" similarity index 96% rename from "Corrig\303\251_TD1/exo0.c" rename to "Corrig\303\251/TD1/exo0.c" index ff8f48b..b342d7f 100644 --- "a/Corrig\303\251_TD1/exo0.c" +++ "b/Corrig\303\251/TD1/exo0.c" @@ -1,20 +1,20 @@ -#include - -int main(const int argc, char *argv[] ){ - //argc : nombre d’arguments, argv : le tableau contenant la valeur des arguments - int a = 1 ; - printf(" le chiffre est %d \n ", a); - - char clavier[100]; - printf(" Saisissez le texte : "); - scanf("%s", clavier); - printf("vous avez saisie : %s \n", clavier); - - printf("\nMainenant, on va lister tous les arguments (argv)\n"); - int i; - for (i = 0; i < argc; i++){ - printf("%s \n", argv[i]); - } - - return 0; -} +#include + +int main(const int argc, char *argv[] ){ + //argc : nombre d’arguments, argv : le tableau contenant la valeur des arguments + int a = 1 ; + printf(" le chiffre est %d \n ", a); + + char clavier[100]; + printf(" Saisissez le texte : "); + scanf("%s", clavier); + printf("vous avez saisie : %s \n", clavier); + + printf("\nMainenant, on va lister tous les arguments (argv)\n"); + int i; + for (i = 0; i < argc; i++){ + printf("%s \n", argv[i]); + } + + return 0; +} diff --git "a/Corrig\303\251_TD1/exo1.c" "b/Corrig\303\251/TD1/exo1.c" similarity index 95% rename from "Corrig\303\251_TD1/exo1.c" rename to "Corrig\303\251/TD1/exo1.c" index 22c2e67..4bfb7f7 100644 --- "a/Corrig\303\251_TD1/exo1.c" +++ "b/Corrig\303\251/TD1/exo1.c" @@ -1,29 +1,29 @@ -#include -#include - -void plus(const int *a, const int *b, int *c) { - *c = *a + *b; -} - -void moins(const int *a, const int *b, int *c) { - *c = *a - *b; -} - -void fois(const int *a, const int *b, int *c) { - *c = *a * *b; -} - -int main(const int argc, char const *argv[]) { - int x = 50; - int y = 20; - int z = 0; - - plus(&x, &y, &z); - printf("plus \t: x=%d y=%d z=%d\n", x, y, z); - moins(&x, &y, &z); - printf("moins \t: x=%d y=%d z=%d\n", x, y, z); - fois(&x, &y, &z); - printf("fois \t: x=%d y=%d z=%d\n", x, y, z); - - return 0; -} +#include +#include + +void plus(const int *a, const int *b, int *c) { + *c = *a + *b; +} + +void moins(const int *a, const int *b, int *c) { + *c = *a - *b; +} + +void fois(const int *a, const int *b, int *c) { + *c = *a * *b; +} + +int main(const int argc, char const *argv[]) { + int x = 50; + int y = 20; + int z = 0; + + plus(&x, &y, &z); + printf("plus \t: x=%d y=%d z=%d\n", x, y, z); + moins(&x, &y, &z); + printf("moins \t: x=%d y=%d z=%d\n", x, y, z); + fois(&x, &y, &z); + printf("fois \t: x=%d y=%d z=%d\n", x, y, z); + + return 0; +} diff --git "a/Corrig\303\251_TD1/exo2.c" "b/Corrig\303\251/TD1/exo2.c" similarity index 93% rename from "Corrig\303\251_TD1/exo2.c" rename to "Corrig\303\251/TD1/exo2.c" index 97e8e77..1064c1e 100644 --- "a/Corrig\303\251_TD1/exo2.c" +++ "b/Corrig\303\251/TD1/exo2.c" @@ -1,45 +1,45 @@ -#include -#include - -typedef struct { - int x; - int y; - int z; -} Coordonnees; - -void affichage(Coordonnees *c) { - printf("x=%d y=%d z=%d\n", c->x, c->y, c->z); -} - -void initialise(Coordonnees *c) { - c->x = 10; - c->y = 5; - c->z = 2; -} - -void addition(Coordonnees *c) { - c->z = c->x + c->y; -} - -void multiplication(Coordonnees *c) { - c->z = c->x * c->y; -} - - -int main(const int argc, char *argv[]) { - Coordonnees ici; - - printf("initialisation\n"); - initialise(&ici); - affichage(&ici); - - printf("addition\n"); - addition(&ici); - affichage(&ici); - - printf("multiplication\n"); - multiplication(&ici); - affichage(&ici); - - return 0; -} +#include +#include + +typedef struct { + int x; + int y; + int z; +} Coordonnees; + +void affichage(Coordonnees *c) { + printf("x=%d y=%d z=%d\n", c->x, c->y, c->z); +} + +void initialise(Coordonnees *c) { + c->x = 10; + c->y = 5; + c->z = 2; +} + +void addition(Coordonnees *c) { + c->z = c->x + c->y; +} + +void multiplication(Coordonnees *c) { + c->z = c->x * c->y; +} + + +int main(const int argc, char *argv[]) { + Coordonnees ici; + + printf("initialisation\n"); + initialise(&ici); + affichage(&ici); + + printf("addition\n"); + addition(&ici); + affichage(&ici); + + printf("multiplication\n"); + multiplication(&ici); + affichage(&ici); + + return 0; +} diff --git "a/Corrig\303\251_TD1/exo3.c" "b/Corrig\303\251/TD1/exo3.c" similarity index 94% rename from "Corrig\303\251_TD1/exo3.c" rename to "Corrig\303\251/TD1/exo3.c" index 138d9c2..47a5ce2 100644 --- "a/Corrig\303\251_TD1/exo3.c" +++ "b/Corrig\303\251/TD1/exo3.c" @@ -1,57 +1,57 @@ -#include -#include - -typedef struct { - int x; - int y; - int z; -} Coordonnees; - -void affichage(Coordonnees *c) { - printf("x=%d y=%d z=%d\n", c->x, c->y, c->z); -} - -void initialise(Coordonnees *c) { - c->x = 10; - c->y = 5; - c->z = 2; -} - -void addition(Coordonnees *c) { - c->z = c->x + c->y; -} - -void multiplication(Coordonnees *c) { - c->z = c->x * c->y; -} - -void initialiseEtAffichage(Coordonnees *c) { - initialise(c); - affichage(c); -} - -void additionEtAffichage(Coordonnees *c) { - addition(c); - affichage(c); -} - -void multiplicationEtAffichage(Coordonnees *c) { - multiplication(c); - affichage(c); -} - - -int main(const int argc, char *argv[]) { - Coordonnees ici; - - printf("initialisation\n"); - initialiseEtAffichage(&ici); - - printf("addition\n"); - additionEtAffichage(&ici); - - printf("multiplication\n"); - multiplicationEtAffichage(&ici); - - return 0; -} +#include +#include + +typedef struct { + int x; + int y; + int z; +} Coordonnees; + +void affichage(Coordonnees *c) { + printf("x=%d y=%d z=%d\n", c->x, c->y, c->z); +} + +void initialise(Coordonnees *c) { + c->x = 10; + c->y = 5; + c->z = 2; +} + +void addition(Coordonnees *c) { + c->z = c->x + c->y; +} + +void multiplication(Coordonnees *c) { + c->z = c->x * c->y; +} + +void initialiseEtAffichage(Coordonnees *c) { + initialise(c); + affichage(c); +} + +void additionEtAffichage(Coordonnees *c) { + addition(c); + affichage(c); +} + +void multiplicationEtAffichage(Coordonnees *c) { + multiplication(c); + affichage(c); +} + + +int main(const int argc, char *argv[]) { + Coordonnees ici; + + printf("initialisation\n"); + initialiseEtAffichage(&ici); + + printf("addition\n"); + additionEtAffichage(&ici); + + printf("multiplication\n"); + multiplicationEtAffichage(&ici); + + return 0; +} diff --git "a/Corrig\303\251_TD1/exo4.c" "b/Corrig\303\251/TD1/exo4.c" similarity index 95% rename from "Corrig\303\251_TD1/exo4.c" rename to "Corrig\303\251/TD1/exo4.c" index eb6ca9b..a555d5e 100644 --- "a/Corrig\303\251_TD1/exo4.c" +++ "b/Corrig\303\251/TD1/exo4.c" @@ -1,75 +1,75 @@ -#include -#include -#include - -#define NB_MIN 1 -#define NB_MAX 100 -#define TAILLE_MIN 1 -#define TAILLE_MAX 1000 - -int randomNumber() { - return (rand() % (NB_MAX - NB_MIN)) + NB_MIN; -} - -int saisirTailleTableau() { - int taille = 0; - printf("Saisir la taille du tableau (1 -> 1000) :\n"); - scanf("%d", &taille); - - return taille; -} - -void verifierTailleTableau(const int taille) { - if (taille < TAILLE_MIN) { - printf("Nombre trop petit. Fin du programe\n"); - exit(1); - } - - if (taille > TAILLE_MAX) { - printf("Nombre trop grand. Fin du programe\n"); - exit(1); - } -} - -int *construireTableau(const int taille) { - int *tab = (int*) malloc(taille * sizeof(int)); - - if (tab == NULL) { - printf("Allocation échouée\n"); - exit(1); - } - - for (int i = 0; i < taille; ++i) { - tab[i] = randomNumber(); - } - - return tab; -} - -void afficherTableau(int *tab, const int taille) { - printf("Affichage\n"); - - for (int i = 0; i < taille; ++i) { - printf("[%d] = %d\n", i, tab[i]); - } -} - -void detruireTableau(int *tab) { - free(tab); - tab = NULL; -} - - -int main(const int argc, const char *argv[]) { - srand(time(NULL)); - - int tailleTableau = saisirTailleTableau(); - verifierTailleTableau(tailleTableau); - - printf("Construction d'un tableau de taille %d\n", tailleTableau); - int *tableau = construireTableau(tailleTableau); - afficherTableau(tableau, tailleTableau); - detruireTableau(tableau); - - return 0; -} +#include +#include +#include + +#define NB_MIN 1 +#define NB_MAX 100 +#define TAILLE_MIN 1 +#define TAILLE_MAX 1000 + +int randomNumber() { + return (rand() % (NB_MAX - NB_MIN)) + NB_MIN; +} + +int saisirTailleTableau() { + int taille = 0; + printf("Saisir la taille du tableau (1 -> 1000) :\n"); + scanf("%d", &taille); + + return taille; +} + +void verifierTailleTableau(const int taille) { + if (taille < TAILLE_MIN) { + printf("Nombre trop petit. Fin du programe\n"); + exit(1); + } + + if (taille > TAILLE_MAX) { + printf("Nombre trop grand. Fin du programe\n"); + exit(1); + } +} + +int *construireTableau(const int taille) { + int *tab = (int*) malloc(taille * sizeof(int)); + + if (tab == NULL) { + printf("Allocation échouée\n"); + exit(1); + } + + for (int i = 0; i < taille; ++i) { + tab[i] = randomNumber(); + } + + return tab; +} + +void afficherTableau(int *tab, const int taille) { + printf("Affichage\n"); + + for (int i = 0; i < taille; ++i) { + printf("[%d] = %d\n", i, tab[i]); + } +} + +void detruireTableau(int *tab) { + free(tab); + tab = NULL; +} + + +int main(const int argc, const char *argv[]) { + srand(time(NULL)); + + int tailleTableau = saisirTailleTableau(); + verifierTailleTableau(tailleTableau); + + printf("Construction d'un tableau de taille %d\n", tailleTableau); + int *tableau = construireTableau(tailleTableau); + afficherTableau(tableau, tailleTableau); + detruireTableau(tableau); + + return 0; +} diff --git "a/Corrig\303\251_TD1/exo5.c" "b/Corrig\303\251/TD1/exo5.c" similarity index 96% rename from "Corrig\303\251_TD1/exo5.c" rename to "Corrig\303\251/TD1/exo5.c" index d2a7af5..7da5a75 100644 --- "a/Corrig\303\251_TD1/exo5.c" +++ "b/Corrig\303\251/TD1/exo5.c" @@ -1,104 +1,104 @@ -#include -#include -#include -#include - -#define NB_MIN 0 -#define NB_MAX 100 -#define TAILLE_MIN 1 -#define TAILLE_MAX 1000 - -int randomNumber() { - return (rand() % (NB_MAX - NB_MIN)) + NB_MIN; -} - -int *constructionTableau(const int taille) { - int *tableau = (int *) malloc(taille * sizeof(int)); - - if (tableau == NULL) { - printf("Allocation echouée\n"); - exit(1); - } - - for (int i = 0; i < taille; i++) { - tableau[i] = randomNumber(); - } - - return tableau; -} - -void destructionTableau(int *chiffres) { - free(chiffres); - chiffres = NULL; -} - -void afficherTableau(int *chiffres, const int taille) { - printf("Affichage\n"); - - for (int i = 0; i < taille; i++) { - printf("[%d] : %d\n", i, chiffres[i]); - } -} - -int saisirTailleTableau() { - int taille = 0; - printf("Saisir la taille du tableau (1 -> 1000) :\n"); - scanf("%d", &taille); - - return taille; -} - -void verifierValiditeSaisie(const int nombre) { - if (nombre > TAILLE_MAX) { - printf("Nombre trop grand. Fin du programme\n"); - exit(1); - } - - if (nombre < TAILLE_MIN) { - printf("Nombre trop petit. Fin du programme\n"); - exit(1); - } -} - -void modifierTailleTableau(int *chiffres, const int nouvelleTaille, const int ancienneTaille) { - int *nouveau = realloc(chiffres, nouvelleTaille * sizeof(int)); - - if (nouveau == NULL) { - printf("La réallocation a échouée!\n"); - free(nouveau); - - exit(1); - } - - // si la nouvelle taille est plus grande, on génère des nombres pour les nouvelles cases - if (nouvelleTaille > ancienneTaille) { - for (int i = ancienneTaille; i < nouvelleTaille; i++) { - nouveau[i] = randomNumber(); - } - } - - chiffres = nouveau; -} - - -int main(const int argc, char *argv[]) { - srand(time(NULL)); //initialise le générateur aléatoire - - int tailleTableau = saisirTailleTableau(); - verifierValiditeSaisie(tailleTableau); - - printf("Construction d'un tableau de taille %d\n", tailleTableau); - int *tableau = constructionTableau(tailleTableau); - afficherTableau(tableau, tailleTableau); - - int nouvelleTailleTableau = saisirTailleTableau(); - verifierValiditeSaisie(nouvelleTailleTableau); - - printf("Nouvelle taille du tableau %d\n", nouvelleTailleTableau); - modifierTailleTableau(tableau, nouvelleTailleTableau, tailleTableau); - - afficherTableau(tableau, nouvelleTailleTableau); - destructionTableau(tableau); - - return 0; -} +#include +#include +#include +#include + +#define NB_MIN 0 +#define NB_MAX 100 +#define TAILLE_MIN 1 +#define TAILLE_MAX 1000 + +int randomNumber() { + return (rand() % (NB_MAX - NB_MIN)) + NB_MIN; +} + +int *constructionTableau(const int taille) { + int *tableau = (int *) malloc(taille * sizeof(int)); + + if (tableau == NULL) { + printf("Allocation echouée\n"); + exit(1); + } + + for (int i = 0; i < taille; i++) { + tableau[i] = randomNumber(); + } + + return tableau; +} + +void destructionTableau(int *chiffres) { + free(chiffres); + chiffres = NULL; +} + +void afficherTableau(int *chiffres, const int taille) { + printf("Affichage\n"); + + for (int i = 0; i < taille; i++) { + printf("[%d] : %d\n", i, chiffres[i]); + } +} + +int saisirTailleTableau() { + int taille = 0; + printf("Saisir la taille du tableau (1 -> 1000) :\n"); + scanf("%d", &taille); + + return taille; +} + +void verifierValiditeSaisie(const int nombre) { + if (nombre > TAILLE_MAX) { + printf("Nombre trop grand. Fin du programme\n"); + exit(1); + } + + if (nombre < TAILLE_MIN) { + printf("Nombre trop petit. Fin du programme\n"); + exit(1); + } +} + +void modifierTailleTableau(int *chiffres, const int nouvelleTaille, const int ancienneTaille) { + int *nouveau = realloc(chiffres, nouvelleTaille * sizeof(int)); + + if (nouveau == NULL) { + printf("La réallocation a échouée!\n"); + free(nouveau); + + exit(1); + } + + // si la nouvelle taille est plus grande, on génère des nombres pour les nouvelles cases + if (nouvelleTaille > ancienneTaille) { + for (int i = ancienneTaille; i < nouvelleTaille; i++) { + nouveau[i] = randomNumber(); + } + } + + chiffres = nouveau; +} + + +int main(const int argc, char *argv[]) { + srand(time(NULL)); //initialise le générateur aléatoire + + int tailleTableau = saisirTailleTableau(); + verifierValiditeSaisie(tailleTableau); + + printf("Construction d'un tableau de taille %d\n", tailleTableau); + int *tableau = constructionTableau(tailleTableau); + afficherTableau(tableau, tailleTableau); + + int nouvelleTailleTableau = saisirTailleTableau(); + verifierValiditeSaisie(nouvelleTailleTableau); + + printf("Nouvelle taille du tableau %d\n", nouvelleTailleTableau); + modifierTailleTableau(tableau, nouvelleTailleTableau, tailleTableau); + + afficherTableau(tableau, nouvelleTailleTableau); + destructionTableau(tableau); + + return 0; +} diff --git "a/Corrig\303\251_TD1/exo6.c" "b/Corrig\303\251/TD1/exo6.c" similarity index 95% rename from "Corrig\303\251_TD1/exo6.c" rename to "Corrig\303\251/TD1/exo6.c" index 2951c25..fe37f59 100644 --- "a/Corrig\303\251_TD1/exo6.c" +++ "b/Corrig\303\251/TD1/exo6.c" @@ -1,106 +1,106 @@ -#include -#include -#include -#include - -#define NB_MIN 0 -#define NB_MAX 100 -#define MIN_LIGNE 2 -#define MAX_LIGNE 10 - -int randomNumber() { - return (rand() % (NB_MAX - NB_MIN)) + NB_MIN; -} - -int saisirNombreLignes() { - int nb = 0; - printf("Saisir le nombre de lignes (%d -> %d) :\n", MIN_LIGNE, MAX_LIGNE); - scanf("%d", &nb); - - return nb; -} - -int saisirNombreColonnes() { - int nb = 0; - printf("Saisir le nombre de colonnes (%d -> %d) :\n", MIN_LIGNE, MAX_LIGNE); - scanf("%d", &nb); - - return nb; -} - -int *constructionTableau(const int taille) { - int *tableau = (int *) malloc(taille * sizeof(int)); - - if (tableau == NULL) { - printf("Allocation echouée\n"); - } - - for (int i = 0; i < taille; i++) { - tableau[i] = randomNumber(); - } - - return tableau; -} - -void affichageMatrice(int **matrice, const int nbLignes, const int nbColonnes) { - for (int i = 0; i < nbLignes; i++) { - for (int j = 0; j < nbColonnes; j++) { - printf("%d\t", matrice[i][j]); - } - printf("\n"); - } -} - -int **constructionMatrice(const int nbLignes, const int nbColonnes) { - int **matrice = (int **) malloc(nbLignes * sizeof(int *)); - - if (matrice == NULL) { - printf("L'allocation a échouée!\n"); - } - - for (int i = 0; i < nbLignes; i++) { - matrice[i] = constructionTableau(nbColonnes); - } - - return matrice; -} - -void destructionMatrice(int **matrice, const int nbLignes) { - for (int i = 0; i < nbLignes; i++) { - free(matrice[i]); - } - - free(matrice); - matrice = NULL; -} - -void verifierValiditeSaisie(const int nombre) { - if (nombre > MAX_LIGNE) { - printf("Nombre trop grand. Fin du programme\n"); - exit(1); - } - - if (nombre < MIN_LIGNE) { - printf("Nombre trop petit. Fin du programme\n"); - exit(1); - } -} - - -int main(const int argc, char *argv[]) { - srand(time(NULL)); //initialise le générateur aléatoire - - int nbLignes = saisirNombreLignes(); - verifierValiditeSaisie(nbLignes); - - int nbColonnes = saisirNombreColonnes(); - verifierValiditeSaisie(nbColonnes); - - printf("Construction d'une matrice %dx%d\n", nbLignes, nbColonnes); - int **matrice = constructionMatrice(nbLignes, nbColonnes); - - affichageMatrice(matrice, nbLignes, nbColonnes); - destructionMatrice(matrice, nbLignes); - - return 0; -} +#include +#include +#include +#include + +#define NB_MIN 0 +#define NB_MAX 100 +#define MIN_LIGNE 2 +#define MAX_LIGNE 10 + +int randomNumber() { + return (rand() % (NB_MAX - NB_MIN)) + NB_MIN; +} + +int saisirNombreLignes() { + int nb = 0; + printf("Saisir le nombre de lignes (%d -> %d) :\n", MIN_LIGNE, MAX_LIGNE); + scanf("%d", &nb); + + return nb; +} + +int saisirNombreColonnes() { + int nb = 0; + printf("Saisir le nombre de colonnes (%d -> %d) :\n", MIN_LIGNE, MAX_LIGNE); + scanf("%d", &nb); + + return nb; +} + +int *constructionTableau(const int taille) { + int *tableau = (int *) malloc(taille * sizeof(int)); + + if (tableau == NULL) { + printf("Allocation echouée\n"); + } + + for (int i = 0; i < taille; i++) { + tableau[i] = randomNumber(); + } + + return tableau; +} + +void affichageMatrice(int **matrice, const int nbLignes, const int nbColonnes) { + for (int i = 0; i < nbLignes; i++) { + for (int j = 0; j < nbColonnes; j++) { + printf("%d\t", matrice[i][j]); + } + printf("\n"); + } +} + +int **constructionMatrice(const int nbLignes, const int nbColonnes) { + int **matrice = (int **) malloc(nbLignes * sizeof(int *)); + + if (matrice == NULL) { + printf("L'allocation a échouée!\n"); + } + + for (int i = 0; i < nbLignes; i++) { + matrice[i] = constructionTableau(nbColonnes); + } + + return matrice; +} + +void destructionMatrice(int **matrice, const int nbLignes) { + for (int i = 0; i < nbLignes; i++) { + free(matrice[i]); + } + + free(matrice); + matrice = NULL; +} + +void verifierValiditeSaisie(const int nombre) { + if (nombre > MAX_LIGNE) { + printf("Nombre trop grand. Fin du programme\n"); + exit(1); + } + + if (nombre < MIN_LIGNE) { + printf("Nombre trop petit. Fin du programme\n"); + exit(1); + } +} + + +int main(const int argc, char *argv[]) { + srand(time(NULL)); //initialise le générateur aléatoire + + int nbLignes = saisirNombreLignes(); + verifierValiditeSaisie(nbLignes); + + int nbColonnes = saisirNombreColonnes(); + verifierValiditeSaisie(nbColonnes); + + printf("Construction d'une matrice %dx%d\n", nbLignes, nbColonnes); + int **matrice = constructionMatrice(nbLignes, nbColonnes); + + affichageMatrice(matrice, nbLignes, nbColonnes); + destructionMatrice(matrice, nbLignes); + + return 0; +} diff --git "a/Corrig\303\251_TD1/exo7.c" "b/Corrig\303\251/TD1/exo7.c" similarity index 96% rename from "Corrig\303\251_TD1/exo7.c" rename to "Corrig\303\251/TD1/exo7.c" index 21d26a1..3413d20 100644 --- "a/Corrig\303\251_TD1/exo7.c" +++ "b/Corrig\303\251/TD1/exo7.c" @@ -1,178 +1,178 @@ -#include -#include -#include -#include -#include - -#define NB_MIN 0 -#define NB_MAX 100 -#define MIN_LIGNE 2 -#define MAX_LIGNE 10 - -int randomNumber() { - return (rand() % (NB_MAX - NB_MIN)) + NB_MIN; -} - -int saisirNombreLignes() { - int nb = 0; - printf("Saisir le nombre de lignes (%d -> %d) :\n", MIN_LIGNE, MAX_LIGNE); - scanf("%d", &nb); - - return nb; -} - -int saisirNombreColonnes() { - int nb = 0; - printf("Saisir le nombre de colonnes (%d -> %d) :\n", MIN_LIGNE, MAX_LIGNE); - scanf("%d", &nb); - - return nb; -} - -int *constructionTableau(const int taille) { - int *tableau = (int *) malloc(taille * sizeof(int)); - - if (tableau == NULL) { - printf("Allocation echouée\n"); - } - - for (int i = 0; i < taille; i++) { - tableau[i] = randomNumber(); - } - - return tableau; -} - -void affichageMatrice(int **matrice, const int nbLignes, const int nbColonnes) { - for (int i = 0; i < nbLignes; i++) { - for (int j = 0; j < nbColonnes; j++) { - printf("%d\t", matrice[i][j]); - } - printf("\n"); - } -} - -int **constructionMatrice(const int nbLignes, const int nbColonnes) { - int **matrice = (int **) malloc(nbLignes * sizeof(int *)); - - if (matrice == NULL) { - printf("L'allocation a échouée!\n"); - } - - for (int i = 0; i < nbLignes; i++) { - matrice[i] = constructionTableau(nbColonnes); - } - - return matrice; -} - -void destructionMatrice(int **matrice, const int nbLignes) { - for (int i = 0; i < nbLignes; i++) { - free(matrice[i]); - } - - free(matrice); - matrice = NULL; -} - -void verifierValiditeSaisie(const int nombre) { - if (nombre > MAX_LIGNE) { - printf("Nombre trop grand. Fin du programme\n"); - exit(1); - } - - if (nombre < MIN_LIGNE) { - printf("Nombre trop petit. Fin du programme\n"); - exit(1); - } -} - -void verifierSiMoinsDeLignes(const int ancienNbLignes, const int newNbLignes, int **matrice) { - //suppression data si moins de lignes - if (newNbLignes < ancienNbLignes) { - for (int i = newNbLignes; i < ancienNbLignes; i++) { - free(matrice[i]); - } - } -} - -void renseignerNouvellesColonnes(int **matrice, const int ancienNbLignes, - const int newNbColonnes, const int ancienNbColonnes) { - for (int i = 0; i < ancienNbLignes; ++i) { - for (int j = ancienNbColonnes; j < newNbColonnes; ++j) { - matrice[i][j] = randomNumber(); - } - } -} - -void renseignerNouvellesLignes(int **matrice, const int newNbLignes, - const int ancienNbLignes, const int newNbColonnes) { - for (int i = ancienNbLignes; i < newNbLignes; ++i) { - for (int j = 0; j < newNbColonnes; ++j) { - matrice[i][j] = randomNumber(); - } - } -} - - -int main(const int argc, char const *argv[]) { - int **matrice; - srand(time(NULL)); - - int nbLignes = saisirNombreLignes(); - verifierValiditeSaisie(nbLignes); - - int nbColonnes = saisirNombreColonnes(); - verifierValiditeSaisie(nbColonnes); - - printf("Construction d'une matrice %dx%d\n", nbLignes, nbColonnes); - matrice = constructionMatrice(nbLignes, nbColonnes); - - affichageMatrice(matrice, nbLignes, nbColonnes); - - // modification - int newNbLignes = saisirNombreLignes(); - verifierValiditeSaisie(newNbLignes); - - int newNbColonnes = saisirNombreColonnes(); - verifierValiditeSaisie(newNbColonnes); - - printf("Construction d'une matrice %dx%d\n", newNbLignes, newNbColonnes); - verifierSiMoinsDeLignes(nbLignes, newNbLignes, matrice); - - matrice = (int **) realloc(matrice, sizeof(int *) * newNbLignes); - if (matrice == NULL) { - destructionMatrice(matrice, nbLignes); - return -1; - } - - for (int i = 0; i < nbLignes; ++i) { - matrice[i] = (int *) realloc(matrice[i], sizeof(int) * newNbColonnes); - - if (matrice[i] == NULL) { - printf("La réallocation a échouée!\n"); - destructionMatrice(matrice, newNbLignes); - return -1; - } - } - - // on alloue de la memoire pour les nouvelles lignes - // si newNbLignes < nbLignes --> jamais executé - for (int i = nbLignes; i < newNbLignes; ++i) { - matrice[i] = (int *) malloc(sizeof(int) * newNbColonnes); - - if (matrice[i] == NULL) { - printf("L'allocation a échouée!\n"); - destructionMatrice(matrice, newNbLignes); - return -1; - } - } - - renseignerNouvellesColonnes(matrice, nbLignes, newNbColonnes, nbColonnes); - renseignerNouvellesLignes(matrice, newNbLignes, nbLignes, newNbColonnes); - - affichageMatrice(matrice, newNbLignes, newNbColonnes); - destructionMatrice(matrice, newNbLignes); - - return 0; -} +#include +#include +#include +#include +#include + +#define NB_MIN 0 +#define NB_MAX 100 +#define MIN_LIGNE 2 +#define MAX_LIGNE 10 + +int randomNumber() { + return (rand() % (NB_MAX - NB_MIN)) + NB_MIN; +} + +int saisirNombreLignes() { + int nb = 0; + printf("Saisir le nombre de lignes (%d -> %d) :\n", MIN_LIGNE, MAX_LIGNE); + scanf("%d", &nb); + + return nb; +} + +int saisirNombreColonnes() { + int nb = 0; + printf("Saisir le nombre de colonnes (%d -> %d) :\n", MIN_LIGNE, MAX_LIGNE); + scanf("%d", &nb); + + return nb; +} + +int *constructionTableau(const int taille) { + int *tableau = (int *) malloc(taille * sizeof(int)); + + if (tableau == NULL) { + printf("Allocation echouée\n"); + } + + for (int i = 0; i < taille; i++) { + tableau[i] = randomNumber(); + } + + return tableau; +} + +void affichageMatrice(int **matrice, const int nbLignes, const int nbColonnes) { + for (int i = 0; i < nbLignes; i++) { + for (int j = 0; j < nbColonnes; j++) { + printf("%d\t", matrice[i][j]); + } + printf("\n"); + } +} + +int **constructionMatrice(const int nbLignes, const int nbColonnes) { + int **matrice = (int **) malloc(nbLignes * sizeof(int *)); + + if (matrice == NULL) { + printf("L'allocation a échouée!\n"); + } + + for (int i = 0; i < nbLignes; i++) { + matrice[i] = constructionTableau(nbColonnes); + } + + return matrice; +} + +void destructionMatrice(int **matrice, const int nbLignes) { + for (int i = 0; i < nbLignes; i++) { + free(matrice[i]); + } + + free(matrice); + matrice = NULL; +} + +void verifierValiditeSaisie(const int nombre) { + if (nombre > MAX_LIGNE) { + printf("Nombre trop grand. Fin du programme\n"); + exit(1); + } + + if (nombre < MIN_LIGNE) { + printf("Nombre trop petit. Fin du programme\n"); + exit(1); + } +} + +void verifierSiMoinsDeLignes(const int ancienNbLignes, const int newNbLignes, int **matrice) { + //suppression data si moins de lignes + if (newNbLignes < ancienNbLignes) { + for (int i = newNbLignes; i < ancienNbLignes; i++) { + free(matrice[i]); + } + } +} + +void renseignerNouvellesColonnes(int **matrice, const int ancienNbLignes, + const int newNbColonnes, const int ancienNbColonnes) { + for (int i = 0; i < ancienNbLignes; ++i) { + for (int j = ancienNbColonnes; j < newNbColonnes; ++j) { + matrice[i][j] = randomNumber(); + } + } +} + +void renseignerNouvellesLignes(int **matrice, const int newNbLignes, + const int ancienNbLignes, const int newNbColonnes) { + for (int i = ancienNbLignes; i < newNbLignes; ++i) { + for (int j = 0; j < newNbColonnes; ++j) { + matrice[i][j] = randomNumber(); + } + } +} + + +int main(const int argc, char const *argv[]) { + int **matrice; + srand(time(NULL)); + + int nbLignes = saisirNombreLignes(); + verifierValiditeSaisie(nbLignes); + + int nbColonnes = saisirNombreColonnes(); + verifierValiditeSaisie(nbColonnes); + + printf("Construction d'une matrice %dx%d\n", nbLignes, nbColonnes); + matrice = constructionMatrice(nbLignes, nbColonnes); + + affichageMatrice(matrice, nbLignes, nbColonnes); + + // modification + int newNbLignes = saisirNombreLignes(); + verifierValiditeSaisie(newNbLignes); + + int newNbColonnes = saisirNombreColonnes(); + verifierValiditeSaisie(newNbColonnes); + + printf("Construction d'une matrice %dx%d\n", newNbLignes, newNbColonnes); + verifierSiMoinsDeLignes(nbLignes, newNbLignes, matrice); + + matrice = (int **) realloc(matrice, sizeof(int *) * newNbLignes); + if (matrice == NULL) { + destructionMatrice(matrice, nbLignes); + return -1; + } + + for (int i = 0; i < nbLignes; ++i) { + matrice[i] = (int *) realloc(matrice[i], sizeof(int) * newNbColonnes); + + if (matrice[i] == NULL) { + printf("La réallocation a échouée!\n"); + destructionMatrice(matrice, newNbLignes); + return -1; + } + } + + // on alloue de la memoire pour les nouvelles lignes + // si newNbLignes < nbLignes --> jamais executé + for (int i = nbLignes; i < newNbLignes; ++i) { + matrice[i] = (int *) malloc(sizeof(int) * newNbColonnes); + + if (matrice[i] == NULL) { + printf("L'allocation a échouée!\n"); + destructionMatrice(matrice, newNbLignes); + return -1; + } + } + + renseignerNouvellesColonnes(matrice, nbLignes, newNbColonnes, nbColonnes); + renseignerNouvellesLignes(matrice, newNbLignes, nbLignes, newNbColonnes); + + affichageMatrice(matrice, newNbLignes, newNbColonnes); + destructionMatrice(matrice, newNbLignes); + + return 0; +} diff --git "a/Corrig\303\251_TD1/exo8.c" "b/Corrig\303\251/TD1/exo8.c" similarity index 96% rename from "Corrig\303\251_TD1/exo8.c" rename to "Corrig\303\251/TD1/exo8.c" index 1944526..2d9ba5e 100644 --- "a/Corrig\303\251_TD1/exo8.c" +++ "b/Corrig\303\251/TD1/exo8.c" @@ -1,83 +1,83 @@ -#include -#include -#include -#include "exo8.h" - -int main(const int argc, char *argv[]) { - int i; - int longueur; - char tampon[MAX_LONGUEUR_CHAINE]; - - int taille = saisirNombreChaines(tampon); - verifierValiditeTaille(taille); - - char **tableau = construireTableau(taille); - - for (i = 0; i < taille; i++) { - saisirChaine(tampon, i + 1); - - longueur = strlen(tampon) + 1; // +1 pour le marqueur de fin de chaine \n - tableau[i] = (char *) malloc(longueur * sizeof(char)); - strcpy(tableau[i], tampon); - } - - printf("\nVoici le tableau de chaines :\n\n"); - afficherTableauChaines(tableau, taille); - - detruireTableauChaines(tableau, taille); - - return 0; -} - - -char **construireTableau(const int taille) { - char **tableau = malloc(taille * sizeof(char *)); - - if (tableau == NULL) { - printf("L'allocation a échouée!\n"); - exit(1); - } - - return tableau; -} - -void detruireTableauChaines(char **chaines, const int taille) { - for (int i = 0; i < taille; i++) { - free(chaines[i]); - } - - free(chaines); - chaines = NULL; -} - -void afficherTableauChaines(char **chaines, const int taille) { - for (int i = 0; i < taille; i++) { - printf("%d. %s", i + 1, chaines[i]); - } -} - -/** On utilise fgets pour autoriser les espaces dans les chaines. */ -void saisirChaine(char tampon[], const int numero) { - printf("Saisir la chaine %d\n", numero); - fgets(tampon, MAX_LONGUEUR_CHAINE, stdin); -} - -int saisirNombreChaines(char tampon[]) { - int taille; - printf("Saisir le nombre de chaines (%d -> %d):\n", MIN_NB_MOTS, MAX_NB_MOTS); - fgets(tampon, 10, stdin); - taille = atoi(tampon); - return taille; -} - -void verifierValiditeTaille(const int taille) { - if (taille > MAX_NB_MOTS) { - printf("Nombre trop grand. Fin du programme\n"); - exit(1); - } - - if (taille < MIN_NB_MOTS) { - printf("Nombre trop petit. Fin du programme\n"); - exit(1); - } -} +#include +#include +#include +#include "exo8.h" + +int main(const int argc, char *argv[]) { + int i; + int longueur; + char tampon[MAX_LONGUEUR_CHAINE]; + + int taille = saisirNombreChaines(tampon); + verifierValiditeTaille(taille); + + char **tableau = construireTableau(taille); + + for (i = 0; i < taille; i++) { + saisirChaine(tampon, i + 1); + + longueur = strlen(tampon) + 1; // +1 pour le marqueur de fin de chaine \n + tableau[i] = (char *) malloc(longueur * sizeof(char)); + strcpy(tableau[i], tampon); + } + + printf("\nVoici le tableau de chaines :\n\n"); + afficherTableauChaines(tableau, taille); + + detruireTableauChaines(tableau, taille); + + return 0; +} + + +char **construireTableau(const int taille) { + char **tableau = malloc(taille * sizeof(char *)); + + if (tableau == NULL) { + printf("L'allocation a échouée!\n"); + exit(1); + } + + return tableau; +} + +void detruireTableauChaines(char **chaines, const int taille) { + for (int i = 0; i < taille; i++) { + free(chaines[i]); + } + + free(chaines); + chaines = NULL; +} + +void afficherTableauChaines(char **chaines, const int taille) { + for (int i = 0; i < taille; i++) { + printf("%d. %s", i + 1, chaines[i]); + } +} + +/** On utilise fgets pour autoriser les espaces dans les chaines. */ +void saisirChaine(char tampon[], const int numero) { + printf("Saisir la chaine %d\n", numero); + fgets(tampon, MAX_LONGUEUR_CHAINE, stdin); +} + +int saisirNombreChaines(char tampon[]) { + int taille; + printf("Saisir le nombre de chaines (%d -> %d):\n", MIN_NB_MOTS, MAX_NB_MOTS); + fgets(tampon, 10, stdin); + taille = atoi(tampon); + return taille; +} + +void verifierValiditeTaille(const int taille) { + if (taille > MAX_NB_MOTS) { + printf("Nombre trop grand. Fin du programme\n"); + exit(1); + } + + if (taille < MIN_NB_MOTS) { + printf("Nombre trop petit. Fin du programme\n"); + exit(1); + } +} diff --git "a/Corrig\303\251_TD1/exo8.h" "b/Corrig\303\251/TD1/exo8.h" similarity index 96% rename from "Corrig\303\251_TD1/exo8.h" rename to "Corrig\303\251/TD1/exo8.h" index f13afea..5c2b1f3 100644 --- "a/Corrig\303\251_TD1/exo8.h" +++ "b/Corrig\303\251/TD1/exo8.h" @@ -1,15 +1,15 @@ -#ifndef SYSTEME_EXO8_H -#define SYSTEME_EXO8_H - -#define MIN_NB_MOTS 2 -#define MAX_NB_MOTS 20 -#define MAX_LONGUEUR_CHAINE 1000 - -int saisirNombreChaines(char tampon[]); -char **construireTableau(const int taille); -void detruireTableauChaines(char **chaines, const int taille); -void afficherTableauChaines(char **chaines, const int taille); -void saisirChaine(char tampon[], const int numero); -void verifierValiditeTaille(const int taille); - -#endif //SYSTEME_EXO8_H +#ifndef SYSTEME_EXO8_H +#define SYSTEME_EXO8_H + +#define MIN_NB_MOTS 2 +#define MAX_NB_MOTS 20 +#define MAX_LONGUEUR_CHAINE 1000 + +int saisirNombreChaines(char tampon[]); +char **construireTableau(const int taille); +void detruireTableauChaines(char **chaines, const int taille); +void afficherTableauChaines(char **chaines, const int taille); +void saisirChaine(char tampon[], const int numero); +void verifierValiditeTaille(const int taille); + +#endif //SYSTEME_EXO8_H