diff --git a/DS1/E1-1.c b/DS1/E1-1.c new file mode 100644 index 0000000..32e68f9 --- /dev/null +++ b/DS1/E1-1.c @@ -0,0 +1,23 @@ +/* Nombre triangulaire */ + +#include +#include +#include + +int main(int argc, char *argv[]) { + int n, i, j, T = 0; + printf("Saisissez n : "); + scanf("%d", &n); + for (i = 1; i <= n; i++) { + for (j = 1; j <= i; j++) { + printf("*"); + T += 1; + } + printf("\n"); + + } + // printf("T_%d = %d\n", n, n*(n+1)/2); + printf("T_%d = %d\n", n, T); + + return 0; +} diff --git a/DS1/E1-2.c b/DS1/E1-2.c new file mode 100644 index 0000000..0608c1f --- /dev/null +++ b/DS1/E1-2.c @@ -0,0 +1,29 @@ +/* Triangle de Floyd */ + +#include +#include +#include + +int main(int argc, char *argv[]) { + int n, i, j, t = 1, S, Sa; + printf("Saisissez n : "); + scanf("%d", &n); + for (i = 1; i <= n; i++) { + S = 0; + for (j = 1; j <= i; j++) { + printf("%11d ", t); + S += t; + t++; + } + printf("\n"); + + Sa = i*(pow(i, 2) + 1)/2; + + if (S != Sa) { + printf("Somme incorrecte, %d attendu, %d obtenu.\n", Sa, S); + exit(EXIT_FAILURE); + } + + } + return 0; +} diff --git a/DS1/E1-3.c b/DS1/E1-3.c new file mode 100644 index 0000000..3458cee --- /dev/null +++ b/DS1/E1-3.c @@ -0,0 +1,29 @@ +/* Séquence de Caterer */ + +#include +#include +#include + +int main(int argc, char *argv[]) { + int n, C, i; + printf("Saisissez n : "); + scanf("%d", &n); + + // Réccurence + C = 1; + printf("Par réccurence :\n"); + printf("C_0 = 1\n"); + for (i = 1; i <= n; i++) { + C = i + C; + printf("C_%d = %d\n", i, C); + } + + // Formule + printf("Par formule :\n"); + for (i = 0; i <= n; i++) { + C = (pow(i, 2) + i + 2)/2; + printf("C_%d = %d\n", i, C); + } + + return 0; +} diff --git a/DS1/E2.c b/DS1/E2.c new file mode 100644 index 0000000..64b7798 --- /dev/null +++ b/DS1/E2.c @@ -0,0 +1,73 @@ +/* Capitalisation */ + +#include +#include +#include + +int main(int argc, char *argv[]) { + + // 1) + + // Saisie + + double C_0, C, tTot = 0, tMoy; + int m, k, i, nTot = 0; + printf("Saisissez C_0 le capital placé : "); + scanf("%lf", &C_0); + printf("Saisissez m le nombre d'années de placement : "); + scanf("%d", &m); + + printf("Saisissez k le nombre de changements de taux : "); + scanf("%d", &k); + int n[k]; + double t[k]; + for (i = 1; i <= k; i++) { + printf("Saisissez n_%d le nombre d'années que dure le taux : ", i); + scanf("%d", &n[i-1]); + printf("Saisissez t_%d le taux : ", i); + scanf("%lf", &t[i-1]); + nTot += n[i-1]; + tTot += t[i-1] * n[i-1]; + } + if (nTot != m) { + printf("Somme des années de changements de captaux incorrecte, %d attendu, %d obtenu.\n", m, nTot); + exit(EXIT_FAILURE); + } + tMoy = tTot / nTot; + printf("Taux moyen = %f\n", tMoy); + + // Calcul + + printf("Par réccurence : \n"); + C = C_0; + for (i = 1; i <= k; i++) { + C *= pow(1 + t[i-1], n[i-1]); + } + printf("C = %f\n", C); + + // 3) + + printf("Avec le taux moyen : \n"); + C = C_0*pow(1 + tMoy, nTot); + printf("C = %f\n", C); + + // On constate que le C calculé est proche, mais des erreurs liées à la précision + // des nombres en virgule flottantes ont eu lieu + + return 0; +} + +// 2) +// +// Saisissez C_0 le capital placé : 10000 +// Saisissez m le nombre d'années de placement : 7 +// Saisissez k le nombre de changements de taux : 4 +// Saisissez n_1 le nombre d'années que dure le taux : 2 +// Saisissez t_1 le taux : 0.0225 +// Saisissez n_2 le nombre d'années que dure le taux : 3 +// Saisissez t_2 le taux : 0.015 +// Saisissez n_3 le nombre d'années que dure le taux : 1 +// Saisissez t_3 le taux : 0.0175 +// Saisissez n_4 le nombre d'années que dure le taux : 1 +// Saisissez t_4 le taux : 0.02 +// C = 11346.432916 diff --git a/DS1/E2.in b/DS1/E2.in new file mode 100644 index 0000000..fbfa91f --- /dev/null +++ b/DS1/E2.in @@ -0,0 +1,11 @@ +10000 +7 +4 +2 +0.0225 +3 +0.015 +1 +0.0175 +1 +0.02 diff --git a/DS1/E3.c b/DS1/E3.c new file mode 100644 index 0000000..3131fe2 --- /dev/null +++ b/DS1/E3.c @@ -0,0 +1,110 @@ +/* Stockage de matrice symétrique */ + +#include +#include +#include + +int main(int argc, char *argv[]) { + + // 1) + + // Saisie de la matrice + int n, i, j; + printf("Saisissez n : "); + scanf("%d", &n); + double A[n][n]; + for (j = 1; j <= n; j++) { + for (i = 1; i <= n; i++) { + printf("Saisissez l'élément aux coordonnées (%d ; %d) : ", i, j); + scanf("%lf", &A[i-1][j-1]); + } + } + + // Affichage de la matrice + for (j = 1; j <= n; j++) { + for (i = 1; i <= n; i++) { + printf("%11f ", A[i-1][j-1]); + } + printf("\n"); + } + + // Verification de la symétrie + for (j = 1; j <= n; j++) { + for (i = j+1; i <= n; i++) { + if (A[i-1][j-1] != A[j-1][i-1]) { + printf("La matrice n'est pas symétrique.\n"); + exit(EXIT_FAILURE); + } + } + } + + // Création du vecteur U + int k, m, M, K = n*(n+1)/2; + double U[K]; + for (i = 1; i <= n; i++) { + for (j = i; j <= n; j++) { + M = 0; + for (m = 1; m <= i - 2; m++) { + M += m; + } + k = (i - 1) * (n - 1) + j - M; + U[k-1] = A[i-1][j-1]; + } + } + + // Affichage du vecteur U + printf("U = {"); + for (k = 1; k <= K; k++) { + printf("%f ", U[k-1]); + } + printf("}\n"); + + return 0; +} + +// 2) +// +// Saisissez n : 6 +// Saisissez l'élément aux coordonnées (1 ; 1) : -2 +// Saisissez l'élément aux coordonnées (2 ; 1) : 1 +// Saisissez l'élément aux coordonnées (3 ; 1) : 3 +// Saisissez l'élément aux coordonnées (4 ; 1) : -1 +// Saisissez l'élément aux coordonnées (5 ; 1) : 4 +// Saisissez l'élément aux coordonnées (6 ; 1) : 1 +// Saisissez l'élément aux coordonnées (1 ; 2) : 1 +// Saisissez l'élément aux coordonnées (2 ; 2) : -1 +// Saisissez l'élément aux coordonnées (3 ; 2) : 5 +// Saisissez l'élément aux coordonnées (4 ; 2) : 2 +// Saisissez l'élément aux coordonnées (5 ; 2) : 0 +// Saisissez l'élément aux coordonnées (6 ; 2) : 7 +// Saisissez l'élément aux coordonnées (1 ; 3) : 3 +// Saisissez l'élément aux coordonnées (2 ; 3) : 5 +// Saisissez l'élément aux coordonnées (3 ; 3) : -3 +// Saisissez l'élément aux coordonnées (4 ; 3) : 6 +// Saisissez l'élément aux coordonnées (5 ; 3) : -2 +// Saisissez l'élément aux coordonnées (6 ; 3) : 8 +// Saisissez l'élément aux coordonnées (1 ; 4) : -1 +// Saisissez l'élément aux coordonnées (2 ; 4) : 2 +// Saisissez l'élément aux coordonnées (3 ; 4) : 6 +// Saisissez l'élément aux coordonnées (4 ; 4) : -4 +// Saisissez l'élément aux coordonnées (5 ; 4) : 8 +// Saisissez l'élément aux coordonnées (6 ; 4) : -2 +// Saisissez l'élément aux coordonnées (1 ; 5) : 4 +// Saisissez l'élément aux coordonnées (2 ; 5) : 0 +// Saisissez l'élément aux coordonnées (3 ; 5) : -2 +// Saisissez l'élément aux coordonnées (4 ; 5) : 8 +// Saisissez l'élément aux coordonnées (5 ; 5) : 1 +// Saisissez l'élément aux coordonnées (6 ; 5) : -5 +// Saisissez l'élément aux coordonnées (1 ; 6) : 1 +// Saisissez l'élément aux coordonnées (2 ; 6) : 7 +// Saisissez l'élément aux coordonnées (3 ; 6) : 9 +// Saisissez l'élément aux coordonnées (4 ; 6) : -2 +// Saisissez l'élément aux coordonnées (5 ; 6) : -5 +// Saisissez l'élément aux coordonnées (6 ; 6) : -6 +// -2.000000 1.000000 3.000000 -1.000000 4.000000 1.000000 +// 1.000000 -1.000000 5.000000 2.000000 0.000000 7.000000 +// 3.000000 5.000000 -3.000000 6.000000 -2.000000 9.000000 +// -1.000000 2.000000 6.000000 -4.000000 8.000000 -2.000000 +// 4.000000 0.000000 -2.000000 8.000000 1.000000 -5.000000 +// 1.000000 7.000000 9.000000 -2.000000 -5.000000 -6.000000 +// U = {-2.000000 1.000000 3.000000 -1.000000 4.000000 1.000000 -1.000000 5.000000 2.000000 0.000000 7.000000 -3.000000 6.000000 -2.000000 9.000000 -4.000000 8.000000 -2.000000 1.000000 -5.000000 -6.000000 } diff --git a/DS1/E3.in b/DS1/E3.in new file mode 100644 index 0000000..aa9c1ce --- /dev/null +++ b/DS1/E3.in @@ -0,0 +1,37 @@ +6 +-2 +1 +3 +-1 +4 +1 +1 +-1 +5 +2 +0 +7 +3 +5 +-3 +6 +-2 +9 +-1 +2 +6 +-4 +8 +-2 +4 +0 +-2 +8 +1 +-5 +1 +7 +9 +-2 +-5 +-6 diff --git a/DS1/Makefile b/DS1/Makefile new file mode 100644 index 0000000..a4ebb49 --- /dev/null +++ b/DS1/Makefile @@ -0,0 +1,9 @@ +all: $(patsubst %.c,%.exe,$(shell ls *.c)) + +%.exe: %.c + gcc $< -g -o $@ -lm + +.PHONY: all clean + +clean: + rm *.exe