Bonjour ,
J'essaye de mettre dans un tableau de 6 valeurs les 6 premières valeurs d'un tableau de 402 valeurs, déterminer les maximums parmi les 6 premières valeurs puis effacer les 5 premières, mettre la sixième à la place de la première , et dans les 5 cases restantes la suite des valeurs du tableau de 402 valeurs , et ainsi de suite je travaille sur le petit tableau de 6 valeurs jusqu’à avoir parcouru le grand tableau de 402 valeurs réelles.


Exemple pour un tableau de 26 valeurs entières on a :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
int tab1[26]={1,3,2,5,4,7,6,9,8,10,12,11,16,14,18,13,17,15,18,21,21,21,21,21,21,21};
Pour le tableau de 6 valeurs il va varier comme cela:

Nom : Capture1.JPG
Affichages : 116
Taille : 73,9 Ko

et pour la détection des maximums elle se passe au court du temps dans le tableau et le résultat est :

Nom : Capture2.JPG
Affichages : 112
Taille : 44,3 Ko

Ce qui marche très bien avec un tableau d'entier.

Maintenant on passe au tableau de 402 valeurs réelles :

je dois passer maintenant mes définitions int en float

Voici la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
66
67
68
69
70
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define BUFFER_SIZE   6
 
float tab1[402] = {25.11794,25.11794,25.11794,25.11794,25.11794,25.11794,25.138475,25.138475,25.138475,25.11794,25.138475,25.15901,25.138475,25.15901,25.15901,25.15901,25.15901,25.15901,25.138475,25.138475,25.097406,25.056338,25.015273,24.994741,24.974209,24.933147,24.912617,24.892087,24.892087,24.871557,24.953678,25.11794,25.220618,25.467092,25.836923,26.145226,26.412503,26.679856,26.988433,27.35886,27.750023,28.120747,28.491617,28.821401,29.213169,29.501944,29.646365,29.687632,29.708266,29.7289,29.7289,29.687632,29.646365,29.625732,29.605099,29.625732,29.605099,29.563836,29.543205,29.543205,29.522574,29.501944,29.501944,29.501944,29.501944,29.522574,29.522574,29.522574,29.522574,29.543205,29.563836,29.563836,29.605099,29.625732,29.625732,29.646365,29.666998,29.687632,29.708266,29.7289,29.770171,29.790807,29.811443,29.852718,29.873355,42.086786,66.499923,82.741841,89.988032,87.332831,83.025413,78.954317,75.419661,72.113602,69.248899,66.58571,64.079611,61.708062,59.491377,57.386017,55.306472,53.316045,51.371971,49.579326,47.895199,46.382023,44.976082,43.781615,42.609559,41.50162,40.457576,39.539764,38.914491,56.833861,75.4846,88.012396,96.359354,97.709523,94.657715,90.845392,87.047994,83.54915,80.410974,77.456471,74.640744,71.941048,69.334931,66.778758,64.357744,62.049545,59.938564,58.08729,56.430563,54.840256,53.337198,51.942105,50.675603,49.537186,48.526398,47.537705,46.634052,45.647318,44.640642,43.676908,42.797828,46.613047,65.985364,81.477683,91.87963,99.01721,104.265595,108.422037,111.854358,114.870373,117.51138,119.819619,121.928936,123.701542,125.317855,126.731461,127.964324,129.130116,129.198735,126.32085,122.973932,120.204855,118.121856,116.223846,114.284449,112.281436,110.21521,108.175732,106.073482,103.998044,102.305262,106.229877,111.831885,116.33672,119.796963,122.519449,124.611814,126.298043,127.71306,128.924288,129.610549,127.439027,124.88506,122.746664,120.81701,119.004326,117.127202,115.253667,113.293683,111.292696,109.206145,107.079314,104.979421,102.950845,104.510914,110.170341,115.253667,119.140161,122.110594,124.452456,126.229626,127.690221,128.947155,129.541902,127.210724,124.79397,122.769389,120.953097,119.162802,117.330572,115.456648,113.518769,111.517322,109.452709,107.302972,105.180279,103.195834,104.176403,109.878739,115.140918,119.208086,122.36043,124.79397,126.731461,128.284208,129.656317,128.329914,125.79643,123.656051,121.747311,119.932908,118.144473,116.268994,114.329507,112.326403,110.260082,108.108569,106.006464,103.975752,103.507726,108.690803,114.216865,118.574305,121.951641,124.543515,126.548946,128.215653,129.633433,128.352768,126.092807,124.452456,123.223987,122.178725,121.157262,120.04621,118.823242,117.533984,116.223846,114.757668,112.956151,110.933402,108.870021,106.788634,104.800916,103.418604,107.750444,113.248672,117.805265,121.293396,124.042795,126.184018,127.918635,129.404621,130.686656,131.832743,132.77353,133.46248,133.692237,133.738195,133.761175,133.761175,133.784155,133.784155,133.830117,133.830117,133.876081,133.899064,133.876081,133.899064,133.899064,133.876081,133.899064,133.899064,133.922048,133.922048,133.945032,133.968016,133.945032,133.968016,133.968016,133.968016,133.968016,133.968016,133.945032,134.013987,134.036973,133.991001,134.036973,134.05996,133.991001,134.082947,134.036973,134.036973,134.036973,134.013987,133.991001,134.05996,134.036973,134.082947,134.05996,134.05996,134.036973,134.05996,134.036973,134.082947,134.082947,134.128923,134.105935,134.128923,134.128923,134.105935,134.151912,134.105935,134.128923,134.128923,134.151912,134.128923,134.151912,134.128923,134.151912,134.151912,134.151912,134.151912,134.128923,134.151912,134.220882,134.220882,134.151912,134.197891,134.128923,134.197891,134.197891,134.220882,134.174901,134.197891,134.197891,134.220882,134.220882,134.220882,134.197891,134.243873,134.220882,134.220882,134.220882,134.220882,134.312849,134.266864,134.312849,134.243873,134.243873,134.243873,134.335842,134.289856,134.289856,134.289856,134.312849,134.335842,134.312849,134.312849,134.312849,134.312849,133.46248,131.374148,129.313111,126.959653,124.270363,121.792714,119.638384,117.601797,115.614552,113.653845,111.71953,109.789033,107.884726,106.028803,104.1987,102.171747,99.815985}; 	
float *p ;
*p = tab1;
float tab[BUFFER_SIZE]={0};
int x;
int v; 
int t; 
//float Delta = 0.5;
int somme;
 
 
 
/******************************************************************
// a chaque fois il stocke 6 valeurs efface les 5 premieres valeurs 
// met la 6eme a la place de la premiere et stcoke dans les 5 place 
// libres les 5 valeurs suivantes prelevees.
******************************************************************/
unsigned char Clear_Buffer (void)
{
	int l ;
	int n=0;
	int k ;
 
	for (n=0; n<81 ;n++)// la valeur de n depend de la taille du tableau.
	{				    // elle doit etre proportionnelle.
		l=n*(5);
		for(k=0; k<6;k++)
		{
			tab[k]=p[k+l];
			printf ("%f valeur numero %d du tableau \n" , tab[k] , k);
 
			// Pour detecter le nombres de maximum inferieur à 114 à partir de 50
			if ((tab[k]>(tab[k-1]/*+Delta*/))&&(tab[k]>(tab[k+1]/*+Delta*/))&&(k>0)&&(tab[k]>50)&&(tab[k]<114))
			{
				x=x+1;
				somme = somme + tab[k];
				//printf ("%f est un maximum \n" ,tab[k]);
			}
 
			// Pour detecter le nombres de maximum totals à partir de 50
			if ((tab[k]>(tab[k-1]/*+Delta*/))&&(tab[k]>(tab[k+1]/*+Delta*/))&&(k>0)&&(tab[k]>50)&&(tab[k]<134))
			{
				t=t+1;
				//printf ("%f est un maximum \n" ,tab[k]);
			}
		}
		printf("\n\n");
	}
	//printf("%d: nombre de pics bas \n",x);
	//printf("%d = Somme des pics bas  \n", somme);
	//printf("%d: nombres de pics haut\n",t);
 
}
 
 
int main (void)
{
	Clear_Buffer ();
	return 0;
}
Le résultat est un problème sur le pointeur que j'arrive pas a déterminer :

Nom : Capture3.JPG
Affichages : 114
Taille : 33,0 Ko

Par contre lorsque je change les float par des int j'obtiens bien le tableau de 6 valeurs qui change en permanence correctement.
Bien sur l'affichage nous avons que la partie entière, mais nous reconnaissons bien ici la fin du tableau de 402 valeurs:

Nom : Capture.JPG
Affichages : 125
Taille : 55,9 Ko

cependant la détection de maximum est affreuse et erronée du au faite que se sont des floats que j'ai défini comme des ints je pense.
ce n'est pas un problème de %d ou %f j'ai fais attention quand même lors de l'affichage.

Pourriez-vous m'aider à résoudre ce problème de pointeur sur un tableau de réelles car je ne comprend pas pourquoi cette fonction marcherai pour des entiers et non pour des réelles . Le problème viendrait-il de ma déclaration du pointeur? Si Oui comment faudrait-il le déclarer s.v.p.? Pour infos je travail sur Visual C++ mais je compile avec mon invite de commande.

Merci d'avance.