IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[Syntaxe] Etude d'une courbe par 2 methodes


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut [Syntaxe] Etude d'une courbe par 2 methodes
    bonjour,

    Je doit dévelloper un programme ou on me donne des courbes que je doit exploiter par 2 manières garçe a C++Builder.

    Je doit tout d'abord effectuer un "linear fit" cad tracer la tangente à la courbe et trouver son point d'intersection avec l'abscisse qui correspond a I
    La deuxième methode consiste à dériver la courbe à exploiter, cette dérivé me donnant I.

    Cela fait plus d'un moins que je travail dessus, mais vu que je connais peu C++Builder, je ne sais pas quoi faire....

    Merci,

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut
    Citation Envoyé par Marksman
    bonjour,

    Je doit dévelloper un programme ou on me donne des courbes que je doit exploiter par 2 manières garçe a C++Builder.

    Je doit tout d'abord effectuer un "linear fit" cad tracer la tangente à la courbe et trouver son point d'intersection avec l'abscisse qui correspond a I
    La deuxième methode consiste à dériver la courbe à exploiter, cette dérivé me donnant I.

    Cela fait plus d'un moins que je travail dessus, mais vu que je connais peu C++Builder, je ne sais pas quoi faire....

    Merci,
    Mais tu as fais quoi exactement ??
    Où rencontre tu des problèmes ??

    NB : on ne donne pas de solution ici, mais que des aides afin de t'orienter vers la bonne solution, donc on ne peut pas répondre d'une manière générale, mais sur un cas précis, quelqu'un peut déjà avoir rencontré ce problème.

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Marksman
    bonjour,

    Je doit dévelloper un programme ou on me donne des courbes que je doit exploiter par 2 manières garçe a C++Builder.

    Je doit tout d'abord effectuer un "linear fit" cad tracer la tangente à la courbe et trouver son point d'intersection avec l'abscisse qui correspond a I
    La deuxième methode consiste à dériver la courbe à exploiter, cette dérivé me donnant I.

    Cela fait plus d'un moins que je travail dessus, mais vu que je connais peu C++Builder, je ne sais pas quoi faire....

    Merci,
    Le code, c'est une chose... L'algorithme en est une autre...

    Qu'est ce qui te pose problème ici ?
    a) le code : tu es dans la bonne section, mais il va falloir préciser ton problème
    b) l'algo : va dans le forum algorithmes....


    ++

  4. #4
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    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
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
    #include <stdio.h>
    #include "poojok.h"
    #include <cmath>
    #include <iostream>
    #include <iomanip>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    TPointSeries *My[8];
    double T[8],Ith[8];
    double x[3],y[3];
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     FILE* pfile;
     char szline[1024];
     double a,b,c;
     char* pc;
     int ii;
     int i;
     
     for(ii=1;ii<4;ii++)
     {
        Form1->OpenDialog1->Execute();
        pfile=fopen(OpenDialog1->FileName.c_str(),"r");
        pc=fgets(szline,1024,pfile);
        My[ii]=new TPointSeries(this);
        My[ii]->ParentChart = Chart1;
        while(fgets(szline,1024,pfile)!=NULL)
        {
            sscanf(szline,"%lf%lf%lf",&a,&b,&c);
            My[ii]->AddXY(a,b);
        }
     
    //debut des problèmes
     
        double xx=1;
        for (i=0;i<3;++i)
        {
           x[i]=xx;
           y[i]=(2 * xx);
        }
        Maths::Interpolation::Linear;
     }
    }
    Voici mon programme

    Mon souci arrive après la boucle while.
    Je souhaiterais créer des points sur une partie de ma courbe afin d'en faire une interpolation lineaire...........mais le programme me dit que "le qualificateur Maths n'est pas une classe ou un nom de domaine d'appelation"

    ???????

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut Nouveau problème
    Bonjour,

    J'ai reussi à faire fonctionner mon interpolation linéaire, mais je n'arrive pas à integrer ces valeurs dans le chart.
    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
    double xx=2;
       for (i=0;i<3;++i)
       {
          x[i]=xx;
          y[i]=(2 * xx);
       }
       Maths::Interpolation::Linear A(3,x,y);
       pc=fgets(szline,1024,pfile);
       Ty[ii]=new TPointSeries(this);
       Ty[ii]->ParentChart = Chart1;
       while(fgets(szline,1024,pfile)!=NULL)
          {
             sscanf(szline,"%lf%lf%lf",&x,&y,&z);
             Ty[ii]->AddXY(x,y);
          }
    Je n'arrive pas à utiliser les valeurs de x et y pour mon chart car il n'est pas possible de "convertir double* en double".....comment puis je resoudre mon problème??

    Merci.

  6. #6
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155

  7. #7
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut Lit mauvaises données
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Maths::Interpolation::Linear A(3,x,y);
    pc=fgets(szline,1024,pfile);
    Ty[ii]=new TPointSeries(this);
    Ty[ii]->ParentChart = Chart1;
    while(fgets(szline,1024,pfile)!=NULL)
    {
    sscanf(szline,"%lf%lf%lf",&x,&y,&z);
    Ty[ii]->AddXY(x,y);
    }

    Je n'arrive pas à y faire tracer l'interpolation sur le chart, il me retrace seulement l'ancienne courbe.
    Cela vient peut être du fait que j'utilise "pfile" pour la boucle while alors que pfile correspond au données de construction de la courbe initiale.....

    Est ce que je doit ecrire les valeurs de l'interpolation dans un nouveau fichier et qu'il aille les lire dessus??? comment faire??

    Merci.

  8. #8
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut la formule donne toujours zero
    Bonjour,

    voici une partie de mon algorithme,
    .
    .
    .
    .
    d=A.getValue(0);
    e=((ymax-d)/nmax);
    n=(-1*d/e);
    cout<<n<<endl;

    //A.getValue(0) representant la valeur de y lorsque x=0.

    En considerant une fonction du type y=ex+d, j'essai de trouver la valeur de x lorsque y=0.
    Pour cela je trouve d'abord pour x=0->y=d (1ligne), puis je prend le point max pour lequel j'ai les coordonnées en x et y, ce qui me permet de trouver e.....mais quoi que je fasse, e est toujours égal à zéro (alors que quand je fais le calcul a la main avec les valeurs que je lit sur le programme, je n(obtient pas 0)???????????????

    Merci,

  9. #9
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut Pb avec les StringGrid
    Bonjour, j'ai reglé tout mais problèmes précedent, mais maintenant je souhaiterais affiché mes valeurs obtenues dans un stringgrid.
    Mon problème est que chaque valeur obtenue s'affiche sur la même cellule que l'ancienne valeur, l'ecransant du même coup.....
    Comment faire pour afficher une valeure, descendre d'une ligne, afficher ma deuxième valeur, etc.....

    Merci.

  10. #10
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut Récupérer une valeur dans le nom d'un fichier
    Voila, maintenant que tout mes problèmes sont réglé, je souhaiterais recupérer une valeur contenu dans le nom du fichier.
    Les fichier que je traite ont des nom du type :T023D035N0000
    je souhaiterais recupérer la valeur de T qui est ici de 23°

    De quels outils dois-je me servir, et comment??

    Merci.

  11. #11
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Marksman
    Voila, maintenant que tout mes problèmes sont réglé, je souhaiterais recupérer une valeur contenu dans le nom du fichier.
    Les fichier que je traite ont des nom du type :T023D035N0000
    je souhaiterais recupérer la valeur de T qui est ici de 23°

    De quels outils dois-je me servir, et comment??

    Merci.
    sur les string

  12. #12
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut Ca veut toujours pas marcher!!!
    Merci pour votre réponse, je suis bien allé voir dans les FAQ sur les string, mais je n'arrive à recupéré qu'un seul chiffre sur les 2.
    Sous C++Builder, il n'a pas l'air d'accepter x[3:4], il accepte seulement x[3] ou x[4], me donnant le 3 ou le 4ieme chiffre et non pas les 2 comme je le souhaiterais....après de multiples essais infructueux je reviens vous demandez de l'aide!!!

    Comment faire???


    Merci,

  13. #13
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Marksman
    Sous C++Builder, il n'a pas l'air d'accepter x[3:4], il accepte seulement x[3] ou x[4]
    Normal, x[3:4] n'a rien d'un code C ou C++ !
    Si tu veux x[3] ET x[4] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::string tout = x[3] + x[4];
    Pas plus compliqué que ça...

    P.S : il est possible qu'un bon bouquin de C++ te fasse le plus grand bien !

  14. #14
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    std::string tout = x[3] + x[4];
    un caractère + un caractère, ça fait un caractère.

    Utilise plutôt substr si c'est un std::string, ou SubString si c'est un AnsiString.

  15. #15
    Membre éclairé Avatar de fdubks
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Par défaut
    Bonjour,

    Si tu veux récuperer tes deux items en temps que string, tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	std::string s1;
    	s1 = "T023D035N0000";
     
    	std::string s2;
    	s2 = s1.substr(2,2);
    S2 = 23 dans ce cas.

    Est ce cela que tu voulais ?

  16. #16
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut Ca marche enfin
    Oui, je pense qu'il faudrait plus qu'un bon livre sur le C++ pour la remise a niveau. Mais vu que je suis en stage en pologne, les bouquins sur le C++ c'est pas top a lire!!!! Lol (mais il me reste les manuels sur le net)

    Sinon voila comment j'ai ecrit tout ca:

    AnsiString s1;
    s1 = ExtractFileName(OpenDialog1->FileName.c_str());

    AnsiString s2;
    s2 = s1.SubString(3,2);

    ca fonctionne!!!

    Merci beaucoup pour votre aide.

  17. #17
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Laurent Gomila
    un caractère + un caractère, ça fait un caractère.

    Eh oui au temps pour moi !
    J'avais pensé à la concaténation, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    std::string string1 = "je me suis ";
    std::string string2 = "trompé";
     
    std::string total = string1 + string2;
     
    std::cout << total; // je me suis trompé !!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/06/2013, 18h04
  2. [XL-2007] Approximation d'une courbe par la fonction puissance (y = A * x^B)
    Par Kimy_Ire dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/11/2012, 10h41
  3. Réponses: 1
    Dernier message: 06/06/2010, 10h33
  4. Réponses: 0
    Dernier message: 15/10/2009, 14h10
  5. Réponses: 5
    Dernier message: 16/08/2009, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo