Compare commits
2 commits
edee5fda32
...
178291f9f0
Author | SHA1 | Date | |
---|---|---|---|
Geoffrey Frogeye | 178291f9f0 | ||
Geoffrey Frogeye | 230f4f417c |
23
DS1/E1-1.c
Normal file
23
DS1/E1-1.c
Normal file
|
@ -0,0 +1,23 @@
|
|||
/* Nombre triangulaire */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
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;
|
||||
}
|
29
DS1/E1-2.c
Normal file
29
DS1/E1-2.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
/* Triangle de Floyd */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
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;
|
||||
}
|
29
DS1/E1-3.c
Normal file
29
DS1/E1-3.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
/* Séquence de Caterer */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
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;
|
||||
}
|
73
DS1/E2.c
Normal file
73
DS1/E2.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
/* Capitalisation */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
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
|
110
DS1/E3.c
Normal file
110
DS1/E3.c
Normal file
|
@ -0,0 +1,110 @@
|
|||
/* Stockage de matrice symétrique */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
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 }
|
37
DS1/E3.in
Normal file
37
DS1/E3.in
Normal file
|
@ -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
|
9
DS1/Makefile
Normal file
9
DS1/Makefile
Normal file
|
@ -0,0 +1,9 @@
|
|||
all: $(patsubst %.c,%.exe,$(shell ls *.c))
|
||||
|
||||
%.exe: %.c
|
||||
gcc $< -g -o $@ -lm
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
clean:
|
||||
rm *.exe
|
45
DS2-2015/E1.c
Normal file
45
DS2-2015/E1.c
Normal file
|
@ -0,0 +1,45 @@
|
|||
/* Inverse de la matrice de Hilbert */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
int facto(int n);
|
||||
|
||||
int facto(int n) {
|
||||
// Correct pour n ≤ 12
|
||||
if (n <= 1) {
|
||||
return 1;
|
||||
} else {
|
||||
return n*facto(n-1);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int n;
|
||||
printf("Saisissez n : ");
|
||||
scanf("%d", &n);
|
||||
int i, j;
|
||||
for (i = 1; i <= n; i++) {
|
||||
for (j = 1; j <= n; j++) {
|
||||
printf("%11d ", (pow(-1, i+j)*facto(n+i-1)*facto(n+j-1))/((i+j-1)*pow(facto(i-1)*facto(j-1), 2)*facto(n-i)*facto(n-j)));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 3)
|
||||
//
|
||||
// Saisissez n : 4
|
||||
// 1072693248 1072693248 1073741824 1075314688
|
||||
// 1072693248 1072693248 1073741824 1075314688
|
||||
// 1073741824 1073741824 1074790400 1076363264
|
||||
// 1075314688 1075314688 1076363264 1078067200
|
||||
//
|
||||
// Saisissez n : 5
|
||||
// 1072693248 1072693248 1073741824 1075314688 1077411840
|
||||
// 1072693248 1072693248 1073741824 1075314688 1077411840
|
||||
// 1073741824 1073741824 1074790400 1076363264 1078460416
|
||||
// 1075314688 1075314688 1076363264 1078067200 1080164352
|
||||
// 1077411840 1077411840 1078460416 1080164352 1082261504
|
106
DS2-2015/E2.c
Normal file
106
DS2-2015/E2.c
Normal file
|
@ -0,0 +1,106 @@
|
|||
/* Dates */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int horos(int J, int M, int A);
|
||||
int bissextile(int A);
|
||||
int zeller(int J, int M, int A);
|
||||
|
||||
int horos(int J, int M, int A) {
|
||||
switch (M) {
|
||||
case 1:
|
||||
return J < 20 ? 9 : 10;
|
||||
case 2:
|
||||
return J < 19 ? 10 : 11;
|
||||
case 3:
|
||||
return J < 21 ? 11 : 0;
|
||||
case 4:
|
||||
return J < 20 ? 0 : 1;
|
||||
case 5:
|
||||
return J < 21 ? 1 : 2;
|
||||
case 6:
|
||||
return J < 21 ? 2 : 3;
|
||||
case 7:
|
||||
return J < 22 ? 3 : 4;
|
||||
case 8:
|
||||
return J < 23 ? 4 : 5;
|
||||
case 9:
|
||||
return J < 23 ? 5 : 6;
|
||||
case 10:
|
||||
return J < 23 ? 6 : 7;
|
||||
case 11:
|
||||
return J < 22 ? 7 : 8;
|
||||
case 12:
|
||||
return J < 22 ? 8 : 9;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int bissextile(int A) {
|
||||
if (A % 4) { // Pas divisible
|
||||
return 0;
|
||||
} else { // Divisible
|
||||
if (A % 100) {
|
||||
return 1;
|
||||
} else {
|
||||
if (A % 400) {
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int zeller(int J, int M, int A) {
|
||||
double X, Y, Z, B;
|
||||
if (M <= 2) {
|
||||
X = M + 10;
|
||||
B = A - 1;
|
||||
} else {
|
||||
X = M - 2;
|
||||
B = A;
|
||||
}
|
||||
Z = (int) (B / 100);
|
||||
Y = B - 100 * Z;
|
||||
|
||||
return (int) (J + (int) (2.6 * X - 0.2) + Y + (int) (Y / 4) + (int) (Z / 4) + 5 * Z) % 7;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int J, M, A;
|
||||
|
||||
printf("Saisissez l'année : ");
|
||||
scanf("%d", &A);
|
||||
if (A <= 1582) {
|
||||
printf("À cette date là, le calendrier grégorien n'était pas encore établi, les résultats suivants ne sont donc peut-être pas exacts.\n");
|
||||
}
|
||||
|
||||
printf("Saisissez le mois : ");
|
||||
scanf("%d", &M);
|
||||
if (M < 1 || M > 12) {
|
||||
printf("Les mois vont de 1 à 12 !\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
printf("Saisissez le jour : ");
|
||||
scanf("%d", &J);
|
||||
if (J < 1 || M > 31) {
|
||||
printf("Les jours vont de 0 à 31 (et encore) !\n");
|
||||
return 2;
|
||||
}
|
||||
if (M == 2) {
|
||||
if (J > 29) {
|
||||
printf("Les mois de février ont au maximum 29 jours !\n");
|
||||
return 2;
|
||||
} else if (J == 29 && !bissextile(A)) {
|
||||
printf("Cette année n'est pas bissextile, le mois de février n'a donc que 28 jours !\n");
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO
|
||||
|
||||
return 0;
|
||||
}
|
9
DS2-2015/Makefile
Normal file
9
DS2-2015/Makefile
Normal file
|
@ -0,0 +1,9 @@
|
|||
all: $(patsubst %.c,%.exe,$(shell ls *.c))
|
||||
|
||||
%.exe: %.c
|
||||
gcc $< -g -o $@ -lm
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
clean:
|
||||
rm *.exe
|
Reference in a new issue