-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLissage de signal.c
65 lines (57 loc) · 1.79 KB
/
Lissage de signal.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <stdlib.h>
float Moy(float x, float y) { return (x + y) / 2; }
int propriete(float x, float y, float Diff_max) {
float z = y - x;
if (z < 0) z = -z;
if (z > Diff_max)
return 0;
else
return 1;
}
int main() {
float Diff_max;
int Nb_mesures;
scanf(" %d", &Nb_mesures);
scanf(" %f", &Diff_max);
int Num_mesure;
int Total_proprietes = 0;
int passage = 1;
float mesure1[Nb_mesures];
for (Num_mesure = 0; Num_mesure < Nb_mesures; Num_mesure++)
scanf(" %f", &mesure1[Num_mesure]);
float mesure2[Nb_mesures];
for (Num_mesure = 0; Num_mesure <= Nb_mesures - 2; Num_mesure++)
if (propriete(mesure1[Num_mesure], mesure1[Num_mesure + 1], Diff_max) ==
1)
Total_proprietes++;
if (Total_proprietes == Nb_mesures - 1)
printf("0");
else {
while (passage <= 5000) {
for (Num_mesure = 0; Num_mesure < Nb_mesures; Num_mesure++) {
if (Num_mesure == 0 || Num_mesure == Nb_mesures - 1)
mesure2[Num_mesure] = mesure1[Num_mesure];
else
mesure2[Num_mesure] =
Moy(mesure1[Num_mesure - 1], mesure1[Num_mesure + 1]);
}
for (Num_mesure = 0; Num_mesure <= Nb_mesures - 2; Num_mesure++)
if (propriete(mesure2[Num_mesure], mesure2[Num_mesure + 1],
Diff_max) == 1)
Total_proprietes++;
if (Total_proprietes == Nb_mesures - 1)
break;
else {
for (Num_mesure = 0; Num_mesure < Nb_mesures; Num_mesure++)
mesure1[Num_mesure] = mesure2[Num_mesure];
Total_proprietes = 0;
passage++;
}
}
if (passage == 2)
printf("1");
else
printf("%d", passage);
}
}