From 5a08a4e1e055a0a702a54cfa867d7fdebf2c1ad7 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Fri, 19 Sep 2025 12:16:41 +0200 Subject: Cours du 15 au 19 septembre --- .../tme/tme1-2/exo2/question2.c" | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 "semestre 3/structures des donn\303\251es/tme/tme1-2/exo2/question2.c" (limited to 'semestre 3/structures des données/tme/tme1-2/exo2/question2.c') diff --git "a/semestre 3/structures des donn\303\251es/tme/tme1-2/exo2/question2.c" "b/semestre 3/structures des donn\303\251es/tme/tme1-2/exo2/question2.c" new file mode 100644 index 0000000..33182ea --- /dev/null +++ "b/semestre 3/structures des donn\303\251es/tme/tme1-2/exo2/question2.c" @@ -0,0 +1,45 @@ +#include "question1.h" +#include + +/* Calcule la somme des carrés des différences entre les éléments des tableaux pris deux à deux (version quadratique) */ +int diff_quad(int *t, int n){ + int sum = 0; + for (int i = 0; i < n; i++){ + for (int j = 0; j < n; j++){ + sum += (t[i] - t[j])*(t[i] - t[j]); + } + } + return sum; +} + +/* Calcule la somme des carrés des différences entre les éléments des tableaux pris deux à deux (version linéaire) + * + * On a que sum(sum(x_ix_j)) = (sum(x_i))^2. + * En developpant, on obtient : sum(sum(T_i^2-2*T_i*T_j+T_j^2)) + * i.e. : sum(sum(T_i^2))-sum(sum(2*T_i*T_j))+sum(sum(T_j^2)) + * i.e. : sum(sum(T_i^2))-2*sum(sum(T_i*T_j))+sum(sum(T_j^2)) + * i.e. : 2*sum(T_i^2)-2*sum(sum(T_i*T_j))+2*sum(T_j^2) + * i.e. : 2*sum(T_i^2)-2*(sum(T_i))^2+2*sum(T_j^2) + * Ainsi : 2*(2*sum(T_i^2)-(sum(T_i))^2) + * */ +int diff_lin(int *t, int n){ + int sum1 = 0; + int sum2 = 0; + for (int i = 0; i < n; i++){ + sum1 += t[i]*t[i]; + sum2 += t[i]; + } + return 2*(2*sum1-sum2*sum2); +} + +int main(void){ + int n = 10; + int *t = alloue_tableau(n); + remplir_tableau(t, n, 100); + afficher_tableau(t, n); + + printf("quadratique: %d\n",diff_quad(t,n)); + printf("linéaire: %d\n",diff_lin(t,n)); + + return 0; +} -- cgit v1.2.3