DS1-2015
This commit is contained in:
parent
ad499557cf
commit
630cfed0ed
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
infos
|
||||
*.exe
|
||||
*.pdf
|
||||
|
|
18
DS1-2015/E1.c
Normal file
18
DS1-2015/E1.c
Normal file
|
@ -0,0 +1,18 @@
|
|||
/* Calcul de la mensualité d'emprunt */
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
int main() {
|
||||
|
||||
double S = 10000;
|
||||
double t = 0.036;
|
||||
double x = t / 12;
|
||||
int n = 30;
|
||||
double R;
|
||||
|
||||
R = (S*x)/(1-pow(1+x, -n));
|
||||
|
||||
printf("2) %lf\n", R);
|
||||
|
||||
return 0;
|
||||
}
|
40
DS1-2015/E2.c
Normal file
40
DS1-2015/E2.c
Normal file
|
@ -0,0 +1,40 @@
|
|||
/* Triangle de Pascal */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
|
||||
int N;
|
||||
int x, y;
|
||||
printf("Saisir N : ");
|
||||
scanf("%d", &N);
|
||||
|
||||
// On crée un tableau, et on le remplit de 0
|
||||
int T[N+1][N+1];
|
||||
for (y = 0; y <= N; y++) {
|
||||
for (x = 1; x < N; x++) {
|
||||
T[x][y] = 0;
|
||||
}
|
||||
T[0][y] = 1; // On met des 1 sur la première colonne
|
||||
}
|
||||
|
||||
// On calcule les sommes
|
||||
for (y = 0; y <= N; y++) {
|
||||
for (x = 1; x <= y; x++) {
|
||||
T[x][y] = T[x-1][y-1] + T[x][y-1];
|
||||
}
|
||||
}
|
||||
|
||||
// On affiche le tableau
|
||||
for (y = 0; y <= N; y++) {
|
||||
for (x = 0; x < N; x++) {
|
||||
if (x <= y) {
|
||||
printf("%11d", T[x][y]);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
118
DS1-2015/E3.c
Normal file
118
DS1-2015/E3.c
Normal file
|
@ -0,0 +1,118 @@
|
|||
/* Nombres hypercomplexes */
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
// 1)
|
||||
|
||||
typedef struct complexe {
|
||||
double a, b;
|
||||
} complexe;
|
||||
|
||||
// 2)
|
||||
|
||||
complexe Csom(complexe z1, complexe z2) {
|
||||
complexe Z;
|
||||
Z.a = z1.a + z2.a;
|
||||
Z.b = z1.b + z2.b;
|
||||
return Z;
|
||||
}
|
||||
|
||||
// 3)
|
||||
|
||||
complexe Cprod(complexe z1, complexe z2) {
|
||||
complexe Z;
|
||||
Z.a = z1.a * z2.a - z1.b * z2.b;
|
||||
Z.b = z1.a * z2.b + z1.b * z2.a;
|
||||
return Z;
|
||||
}
|
||||
|
||||
// 4)
|
||||
|
||||
int main4() {
|
||||
complexe z1, z2;
|
||||
|
||||
|
||||
printf("Saisissez la partie réelle de z1 : ");
|
||||
scanf("%lf", &z1.a);
|
||||
printf("Saisissez la partie immaginaire de z1 : ");
|
||||
scanf("%lf", &z1.b);
|
||||
|
||||
printf("Saisissez la partie réelle de z2 : ");
|
||||
scanf("%lf", &z2.a);
|
||||
printf("Saisissez la partie immaginaire de z2 :");
|
||||
scanf("%lf", &z2.b);
|
||||
|
||||
complexe som = Csom(z1, z2);
|
||||
complexe prod = Cprod(z1, z2);
|
||||
printf("z1 + z2 = %lf + %lfi\n", som.a, som.b);
|
||||
printf("z1 × z2 = %lf + %lfi\n", prod.a, prod.b);
|
||||
|
||||
|
||||
// Pour z1 = -3 + 4i et z2 = 6 - 8i
|
||||
// z1 + z2 = 3.000000 + -4.000000i
|
||||
// z1 × z2 = 14.000000 + 12.000000i
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 5)
|
||||
|
||||
typedef struct qnion {
|
||||
complexe z1, z2;
|
||||
} qnion;
|
||||
|
||||
// 6)
|
||||
|
||||
float Qmod(qnion q) {
|
||||
return sqrt(pow(q.z1.a, 2) + pow(q.z1.b, 2) + pow(q.z2.a, 2) + pow(q.z2.b, 2));
|
||||
}
|
||||
|
||||
complexe Cinv(complexe z) {
|
||||
complexe Z;
|
||||
Z.a = -z.a;
|
||||
Z.b = -z.b;
|
||||
return Z;
|
||||
}
|
||||
|
||||
int main6() {
|
||||
qnion q1, q2;
|
||||
|
||||
printf("Quaternion q1\n");
|
||||
printf("Saisissez la partie réelle de z11 : ");
|
||||
scanf("%lf", &q1.z1.a);
|
||||
printf("Saisissez la partie immaginaire de z11 : ");
|
||||
scanf("%lf", &q1.z1.b);
|
||||
printf("Saisissez la partie réelle de z21 : ");
|
||||
scanf("%lf", &q1.z2.a);
|
||||
printf("Saisissez la partie immaginaire de z21 :");
|
||||
scanf("%lf", &q1.z2.b);
|
||||
|
||||
printf("Quaternion q2\n");
|
||||
printf("Saisissez la partie réelle de z12 : ");
|
||||
scanf("%lf", &q2.z1.a);
|
||||
printf("Saisissez la partie immaginaire de z12 : ");
|
||||
scanf("%lf", &q2.z1.b);
|
||||
printf("Saisissez la partie réelle de z22 : ");
|
||||
scanf("%lf", &q2.z2.a);
|
||||
printf("Saisissez la partie immaginaire de z22 :");
|
||||
scanf("%lf", &q2.z2.b);
|
||||
|
||||
printf("\n");
|
||||
printf("Module de q1 : %lf\n", Qmod(q1));
|
||||
printf("Module de q2 : %lf\n", Qmod(q2));
|
||||
|
||||
qnion P;
|
||||
P.z1 = Csom(q1.z1, q2.z1);
|
||||
P.z2 = Csom(q1.z2, q2.z2);
|
||||
printf("q1 + q2 = (%lf, %lf, %lf, %lf)\n", P.z1.a, P.z1.b, P.z2.a, P.z2.b);
|
||||
|
||||
qnion Q;
|
||||
Q.z1 = Csom(Cprod(q1.z1, q2.z1), Cinv(Cprod(q1.z2, q2.z2)));
|
||||
Q.z2 = Csom(Cprod(q1.z1, q2.z2), Cprod(q2.z1, q1.z2));
|
||||
printf("q1 × q2 = (%lf, %lf, %lf, %lf)\n", Q.z1.a, Q.z1.b, Q.z2.a, Q.z2.b);
|
||||
|
||||
}
|
||||
|
||||
int main() {
|
||||
main6();
|
||||
}
|
83
DS1-2015/E4.c
Normal file
83
DS1-2015/E4.c
Normal file
|
@ -0,0 +1,83 @@
|
|||
/* Algorithme de Thomas */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// Pas testé
|
||||
|
||||
// 1)
|
||||
|
||||
float D3diag(int n, double* a, double* b, double* c) {
|
||||
float D[n];
|
||||
int i;
|
||||
D[0] = b[0];
|
||||
D[1] = b[0] * b[1] - a[1] * c[0];
|
||||
for (i = 2; i < n; i++) {
|
||||
D[i] = b[i] * D[i-1] - a[i] * c[i-2] * D[i-2];
|
||||
}
|
||||
return D[i];
|
||||
}
|
||||
|
||||
// 2)
|
||||
|
||||
#define N_MAX 100
|
||||
|
||||
int main() {
|
||||
// -
|
||||
int n;
|
||||
printf("Saisir la dimension n du système : ");
|
||||
scanf("%d", &n);
|
||||
|
||||
if (n < 3 || n > N_MAX) {
|
||||
printf("N doit doit être compris entre 3 et %d", N_MAX);
|
||||
}
|
||||
|
||||
// -
|
||||
double a[n], b[n], c[n], y[n];
|
||||
|
||||
int i;
|
||||
for (i = 1; i < n; i++) {
|
||||
printf("Saisissez l'élément %d de la diagonale A : ", i);
|
||||
scanf("%lf", &a[i]);
|
||||
}
|
||||
for (i = 0; i < n; i++) {
|
||||
printf("Saisissez l'élément %d de la diagonale B : ", i);
|
||||
scanf("%lf", &b[i]);
|
||||
}
|
||||
for (i = 0; i < n-1; i++) {
|
||||
printf("Saisissez l'élément %d de la diagonale C : ", i);
|
||||
scanf("%lf", &c[i]);
|
||||
}
|
||||
for (i = 0; i < n; i++) {
|
||||
printf("Saisissez l'élément %d du second membre y : ", i);
|
||||
scanf("%lf", &y[i]);
|
||||
}
|
||||
|
||||
// -
|
||||
double G[n], B[n], x[n];
|
||||
|
||||
G[0] = c[0] / b[0];
|
||||
B[0] = y[0] / b[0];
|
||||
|
||||
for (i = 1; i < n-1; i++) {
|
||||
G[i] = c[i] / (b[i] - a[i] * G[i-1]);
|
||||
}
|
||||
|
||||
for (i = 1; i < n; i++) {
|
||||
B[i] = (y[i] - a[i] * B[i-1]) / (b[i] - a[i] * G[i-1]);
|
||||
}
|
||||
|
||||
x[n-1] = B[n-1];
|
||||
for (i = n-2; i >= 0; i--) {
|
||||
x[i] = B[i] - G[i] * x[i+1];
|
||||
}
|
||||
|
||||
// -
|
||||
printf("Déterminant de T : %lf\n", D3diag(n, a, b, c));
|
||||
|
||||
printf("X = ");
|
||||
for (i = 1; i < n; i++) {
|
||||
printf("%11lf ", x[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
}
|
9
DS1-2015/Makefile
Normal file
9
DS1-2015/Makefile
Normal file
|
@ -0,0 +1,9 @@
|
|||
all: $(subst c,exe,$(shell ls *.c))
|
||||
|
||||
%.exe: %.c
|
||||
gcc $< -o $@ -lm
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
clean:
|
||||
rm *.exe
|
37
TP2/E4.c
Normal file
37
TP2/E4.c
Normal file
|
@ -0,0 +1,37 @@
|
|||
/* Tableau des différences */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define N 10
|
||||
|
||||
void soustraire(int A[N], int R[N], int n) {
|
||||
int i;
|
||||
for (i = 0; i < n-1; i++) {
|
||||
R[i] = A[i+1] - A[i];
|
||||
}
|
||||
}
|
||||
|
||||
void afficherTableau(int A[N], int n) {
|
||||
int i;
|
||||
for (i = 0; i < n; i++) {
|
||||
printf("%11i ", A[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
}
|
||||
|
||||
int main() {
|
||||
|
||||
int X[N] = {2,8,-3,5,9,-4,-2,0,1,16};
|
||||
int DX[N][N];
|
||||
int i;
|
||||
afficherTableau(X, N);
|
||||
soustraire(X, DX[0], N);
|
||||
afficherTableau(DX[0], N-1);
|
||||
for (i = 0; i < N-1; i++) {
|
||||
soustraire(DX[i], DX[i+1], N-i);
|
||||
printf("-- D%dX", i+1);
|
||||
afficherTableau(DX[i], N-i-1);
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in a new issue