Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1514 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  prendre les plus haut d'une courbe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

prendre les plus haut d'une courbe

n°2055190
payes
Posté le 08-02-2011 à 19:58:02  profilanswer
 

Bonjour,  
 
J'aurais besoin de creer un executable me permettant de déterminer les 4 plus haut d'une courbe svp.
 
Pour ca je mesure P valeur, que je place chacune dans une variable ( x1,x2,x3,...,xP).
Ensuite il faut que je compare chaque valeur entre elles, et c'est là ou ca me pose pb :
 

Code :
  1. for ( int o=0; o<100; o++)
  2.         { 
  3.  
  4.          int "x"+o;      //pour initialiser les variables x1,x2 etc
  5.                  
  6.         }
  7. // placer les 100 valeures mesurées dans des variable x(1,2,3, etc...) :
  8.    for ( int f=0; f<P; f++) {
  9.  
  10.  
  11.  
  12.                      x=valeure mesurée au temps f;
  13.                      "x"+f=x;
  14.                  
  15.  
  16.  
  17.    }
  18.  
  19.    // comparaison des 100 valeures entres elles :
  20.    for ( int a=0; a<P; a++ ) {
  21.  
  22.  
  23.                for ( int j=0; j<P ; j++) {
  24.                    
  25.                    
  26.                    
  27.                            if ( x(a) < x(j) ) {
  28.                    
  29.                    
  30.                }   
  31.  
  32.    }


 
J'ai donc 2 questions :  
 
dans le premier paragraphe, comment initialiser les var x1, x2, x3,.., xP  via une boucle ( la syntaxe int "x"+o; est fausse )
 
ensuite, je bloque quand il s'agit de comparer les valeurs entre elles, je commence par comparé x1 avec x2, x3, x4 ... mais après il faudrai que je stock le résultats de chaque comparaison dans une autre variable, pour la recomparer après.
 
QQun aurait une idée de comment faire svp?
 
Merci d'avance! Bonne soirée

mood
Publicité
Posté le 08-02-2011 à 19:58:02  profilanswer
 

n°2055193
breizhbugs
Posté le 08-02-2011 à 20:30:48  profilanswer
 

bonsoir,
tu aurais peut être pu continuer sur ton sujet initial: http://forum.hardware.fr/hfr/Progr [...] 2396_1.htm en modifiant le titre éventuellement pour indiquer que tu le fais en c++.
Donc pour le premier point, tu ne vas pas déclarer p variables, mais un tableau dynamique de  p valeur.
Ensuite pour la détection des sommets, tu ne vas pas comparer tous tes nombres entre eux (le résultat serait faux d'ailleurs je pense!) mais pour chaque nombre, tu vas le comparer à son précédent et à son suivant: en effet un sommet a une plus grande valeur que son précédent et son suivant:
donc Xi est sommet si Xi-1 < Xi > Xi+1. (attention : peut-être faut il vérifier que la courbe redescend suffisamment entre deux sommets, en fonction des résultat que tu souhaites avoir!)
Quand tu vérifies ca, tu peux enregistrer Xi comme étant un sommet. Si tu ne gardes que les 4 plus grands sommets tu vas enregistrer le résultat dans un tableau Sommet[] de 4 entrées (le premier initialiser a max (X0, XP), le deuxième a min (X0, Xp) - ca permet de faire une boucle de 1 a P-1 -, les autres à zéro) que tu vas trier à chaque ajout. Bien évidement tu ne vas ajouter un sommet que s'il est plus grand que le plus petit des sommets déjà enregistré(effaçant ainsi la plus petite valeur).
Normalement, en un passage tu as tes 4 plus grandes valeurs.


Message édité par breizhbugs le 08-02-2011 à 21:27:17

---------------
Seul Google le sait...
n°2056418
payes
Posté le 13-02-2011 à 13:04:10  profilanswer
 

salut,  
 
merci de ta réponse, en effet je n'avais pas penser à l'astuce du sommet comme plus grand que Xi-1 et Xi+1.
 
Ta méthode est en théorie ce qu'il me faut, mais n'ayant aucune base en programmation je sens que je vais lutter avec les tableaux dynamiques ( je sais même pas ce que c'est ... ).
 
Du cout je vais partir sur un script qui me prend tout les sommets au dessus d'une certaine valeur ( et non pas que les X plus hauts ), ca suffira amplement.
 
Par contre je ne sais toujours pas comment avec une boucle mettre du X1, X2,X3 ...
 

Code :
  1. for ( int a=0; a<100; a++)
  2. { x(a)=valeur mesurée au temps a }


 
Connais tu la syntaxe appropriée stp?
 
 
Merci pour ton aide en tout cas!
 
 
 

n°2056427
breizhbugs
Posté le 13-02-2011 à 13:59:52  profilanswer
 

Ben il faudrait déjà savoir ou se trouve tes données (un fichier je suppose)
 
en c++
pour faire un tableau en statique:
 

Code :
  1. int valeur[1000];


 
en dynamique:
 

Code :
  1. int taille = 0;
  2. cin >> taille; // lecture au clavier de la taille
  3. int *valeur = new int[taille];


 
(enfin pour être sûr : c'est bien les 4 points correspondant à des sommets que tu veux et pas les 4 points les plus haut de ta courbe?)


Message édité par breizhbugs le 13-02-2011 à 14:00:53

---------------
Seul Google le sait...
n°2056452
payes
Posté le 13-02-2011 à 17:52:32  profilanswer
 

ah ok, thk pour l'info du tableau.
 
En théorie il m'aurais fallut les 4 plus hauts sommets de la courbe.
 
Mais finalement ce sera mieux de prendre tout les sommets au dessus d'une certaine ligne.
 
Par contre je n'arrive pas avec une boucle à initialiser des variables.
Sais tu comment faire stp pour qu'il m'instaure x1,x2,x3,x4...xn avec n = 1000 par exemple?
 
J'ai tenter :

Code :
  1. 1. for ( int a=0; a<100; a++)
  2.    2. { x(a)=valeur mesurée au temps a }


 
mais c'est pas la bonne syntaxe.
 
 
Merci d'avance

n°2056472
breizhbugs
Posté le 13-02-2011 à 19:58:45  profilanswer
 

Du genre:

Code :
  1. int taille = 0;
  2. cin >> taille; // lecture au clavier de la taille
  3. int *valeur = new int[taille];
  4. for ( int a=0; a<taille; a++)
  5. {
  6.     valeur[a]=valeur mesurée au temps a ; // "valeur mesurée au temps a" me gêne, a est ici un entier allant de 0 à taille par pas de 1!  
  7. }


Message édité par breizhbugs le 13-02-2011 à 20:01:16

---------------
Seul Google le sait...
n°2056797
payes
Posté le 14-02-2011 à 21:27:00  profilanswer
 

ok thk, mais je ne pige pas:
 
Je code avec un dérivé du C++, le mql4.
Les fonctions cin, int *valeur, new int et valeur[a] posent soucis.
Est-ce a cause de librairies a importées?
 
 
Il n'y a donc pas de méthode "simple" pour initialiser des variables Xn ?
 
Un équivalent de :

Code :
  1. int a=100;
  2. string Xa="X"+a;


 
Ici on a bien Xa=X100.
 
Il me faudrait la même chose mais pour la variable, et non pour le texte de la variable.
 
merci d'avance

n°2056820
mr simon
Posté le 15-02-2011 à 00:20:08  profilanswer
 

je ne connais pas mql4, mais il n'est pas possible d'initilialiser des noms de variable avec d'autre variables en C++.
 
Soit tu passes par des tableaux, cf le post de breizhbugs; soit le nombre de variable est gerable, et tu declares toutes celles dont tu as besoin a la main.

n°2057040
breizhbugs
Posté le 15-02-2011 à 17:29:01  profilanswer
 

Le mieux est que tu regardes la doc de ton langage pour voir quelles sont les instructions/fonctionnalités supportées (les pointeurs, les tableaux?...)
Sinon, dans l'absolu tu as besoin de 3 variables: X(a-2), X(a-1) et X(a) : dans ce cas, tu étudies si X(a-1) est un sommet... (compter quatre autres variables de plus pour sauvegarder les 4 plus haut sommets)
Tout mettre dans un tableau est une commodité, pas une nécessité.
Mais après comme je te dis, si ce n'est pas du c++, il faut que tu consultes la doc du langage!


Message édité par breizhbugs le 15-02-2011 à 17:34:21

---------------
Seul Google le sait...
n°2057082
payes
Posté le 15-02-2011 à 19:29:05  profilanswer
 

C'est bon, avec les tableaux j'ai réussi à faire ce que je souhaitais!
 
Merci pour les conseils ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  prendre les plus haut d'une courbe

 

Sujets relatifs
prendre les plus haut d'une courbeAlgorithme d'extraction de courbe
Détection automatique lien externe >> frameQuoi prendre pour ce genre de demande ? --> (CMS)
Prendre les 13 premiers chiffresprendre des cellules en fonction du n° client
unicité d'une courbe de HIlbert en 3D a partir du motif initialRecuperer les 10 derniers enregistrements puis en prendre 4 aléatoirem
Plus de sujets relatifs à : prendre les plus haut d'une courbe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR