DS2-2015 Démarrage
Entrainement au DS1 de demain
This commit is contained in:
parent
edee5fda32
commit
230f4f417c
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