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

Windows Forms Discussion :

creation de fonction


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut creation de fonction
    bonjours a tous,

    voici mon problème : j'ai deux fonction dont le code est prèsque identique et qui se rejoigne a un certain moment.

    le moment ou elle se rejoigne, voici le code :
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    {  
                    ////////////////////////////////////////////////////////////////////////////////////////////////////
                    ///////////////////////////conversion d'angle en seconde en radian//////////////////////////////////
                    //////////////////////////////////////////////////////////////////////////////////////////////////////
                    // conversion en seconde
                    conversionlat = (degrelat * 3600) + (minuteslat * 60);
                    conversionlong = (degrelong * 3600) + (minuteslong * 60);
     
                    /* si on est a l'ouest,  la longitude est négative mais le gps ne l'indique pas au niveau des angle
                       si on est au sud , la latitude est négative mais le gps ne l'indique pas au niveau des angle 
                     */
                    if (donnee[4].IndexOf("S") == 0)
                    {
                        conversionlat = conversionlat * (-1);
                    }
                    if (donnee[6].IndexOf("W") == 0)
                    {
                        conversionlong = conversionlong * (-1);
                    }
     
                    // convrsion en radian
                    radlat = conversionlat * ((Math.PI) / (180 * 3600));
                    radlong = conversionlong * ((Math.PI) / (180 * 3600));
                    /*
                    formules
                    D= R*Math.Acos((Math.Sin (phi0) *Math.Sin (phi1))+ (Math.Cos (phi0)*Math.Cos(phi1)*Math.Cos(teta1-teta0)));
                     * le rayon moyen de la terre est de 6371km
                     * nous allons chercher la distance entre le point et l'équateur et entre le point et le méridien0
                     * pour cela , il faut soit annuler phi0 soit têta.
                     * ce qui revient a dire d'annuler soit lat soit long en fonction de la distance que l'on veut. 
                     * ces deux distance vont permettre de se reperer dans le plan X et Y pour pouvoir retracer le champ 
                    */
                    //distance entre Le point de l'equateur => on mesure une latitude. => même longitude
                    deb = 6371000 * Math.Acos(Math.Cos(radlat));
                    // distance entre le meridien et le point => on mesure une longitude => même latitude
                    dmb = 6371000 * Math.Acos(Math.Cos(radlong));
                    //=> On a le disctance entre equateur et point et meridien0 et point 
                    // mise sous forme de point
                    coordonnees.X = Convert.ToSingle(dmb);
                    coordonnees.Y = Convert.ToSingle(deb);
     
     
                    if (length == 0)
                    {
                        // on a besoin connaître une valeur de départ => la premiere valeur que l'on a sera la valeur de référence 
                        // pour les minimums que programme va connaître
     
     
                        DEBMIN = coordonnees.Y;
                        DMBMIN = coordonnees.X;
     
                    }
                    geodata.Add(coordonnees);// on ajoute le point a la liste de pointf
     
     
                    // attention il faut minimum deux point .... 
                    if (length > 2)
                    {
                        foreach (PointF P in geodata)// on parcourt la liste de pointf
                        {
                            if (P.Y > DEBMAX)
                            {
                                DEBMAX = P.Y;
                            }
     
                            if (P.Y < DEBMIN)
                            {
                                DEBMIN = P.Y;
                            }
     
                            DELTADEB = DEBMAX - DEBMIN;// distance entre les deux points latitudinalement dont on a besoin 
     
                            if (P.X > DMBMAX)
                            {
                                DMBMAX = P.X;
                            }
     
                            if (P.X < DMBMIN)
                            {
                                DMBMIN = P.X;
                            }
     
                            DELTADMB = DMBMAX - DMBMIN;// distance entre les deux points longitudinalement dont on a besoin 
                            // instauration d'une echelle en X et en Y 
                            echelleX = (DELTADMB / pictureBox1.Width);
                            echelleY = (DELTADEB / pictureBox1.Height);
                        }
                    }
                    // pour retranscrir et centrer sur la picture box : 
                    // pt.X = (pictureBox1.Width / 2) + nombrex; // 
                    // pt.Y = (pictureBox1.Height / 2) - nombrey;// 
                    // de plus, on soustrait DMB a deb min pour la reference de la  picturebox1
     
                    PICTB.X = (pictureBox1.Width / 2) + (echelleX * (Convert.ToSingle(dmb) - DMBMIN));
                    PICTB.Y = (pictureBox1.Height / 2) - echelleY * (Convert.ToSingle(deb) - DEBMIN);
                    PICTTBL.Add(PICTB);
                    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    coordon = PICTTBL.ToArray();// tableau de pointf
                    length = length + 1;
    }
    j'aimerai pouvoir appeler celle ci et qu'elle me retourne un tableau afin que je puisse afficher (nous vous inuiétez pas pour la suite je gere cette afichage ).

    cette fonctione traite les variables qui sont : degrelat,degrelong,minuteslat et minuteslong.

    j'aurai donc besoin de creer cette fonction et de savoir comment l'appeler dans mon programme. merci d'avance.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2006
    Messages : 30
    Points : 98
    Points
    98
    Par défaut
    Je ne suis pas convaincu d'avoir cerné ton problème, mais sait-on jamais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int[] Function(int degrelat, int degrelong, int minuteslat, int minuteslong)
    {
        // Ton code ici
    }
     
    int[] result = Function(degrelat, degrelong, minuteslat, minuteslong);
    MCPD - Windows Developer 3.5

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    le problème c'est que le tableau qui doit ressortir c'est le dernier et qui s'appelle :

    coordon ...
    je ne sais donc pas comment faire

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par ojhoj Voir le message
    le problème c'est que le tableau qui doit ressortir c'est le dernier et qui s'appelle :

    coordon ...
    je ne sais donc pas comment faire
    Pourrais tu fournir des explications un peu plus claires ? merci d'avance.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    {  
                    ////////////////////////////////////////////////////////////////////////////////////////////////////
                    ///////////////////////////conversion d'angle en seconde en radian//////////////////////////////////
                    //////////////////////////////////////////////////////////////////////////////////////////////////////
                    // conversion en seconde
                    conversionlat = (degrelat * 3600) + (minuteslat * 60);
                    conversionlong = (degrelong * 3600) + (minuteslong * 60);
     
                    /* si on est a l'ouest,  la longitude est négative mais le gps ne l'indique pas au niveau des angle
                       si on est au sud , la latitude est négative mais le gps ne l'indique pas au niveau des angle 
                     */
                    if (donnee[4].IndexOf("S") == 0)
                    {
                        conversionlat = conversionlat * (-1);
                    }
                    if (donnee[6].IndexOf("W") == 0)
                    {
                        conversionlong = conversionlong * (-1);
                    }
     
                    // convrsion en radian
                    radlat = conversionlat * ((Math.PI) / (180 * 3600));
                    radlong = conversionlong * ((Math.PI) / (180 * 3600));
                    /*
                    formules
                    D= R*Math.Acos((Math.Sin (phi0) *Math.Sin (phi1))+ (Math.Cos (phi0)*Math.Cos(phi1)*Math.Cos(teta1-teta0)));
                     * le rayon moyen de la terre est de 6371km
                     * nous allons chercher la distance entre le point et l'équateur et entre le point et le méridien0
                     * pour cela , il faut soit annuler phi0 soit têta.
                     * ce qui revient a dire d'annuler soit lat soit long en fonction de la distance que l'on veut. 
                     * ces deux distance vont permettre de se reperer dans le plan X et Y pour pouvoir retracer le champ 
                    */
                    //distance entre Le point de l'equateur => on mesure une latitude. => même longitude
                    deb = 6371000 * Math.Acos(Math.Cos(radlat));
                    // distance entre le meridien et le point => on mesure une longitude => même latitude
                    dmb = 6371000 * Math.Acos(Math.Cos(radlong));
                    //=> On a le disctance entre equateur et point et meridien0 et point 
                    // mise sous forme de point
                    coordonnees.X = Convert.ToSingle(dmb);
                    coordonnees.Y = Convert.ToSingle(deb);
     
     
                    if (length == 0)
                    {
                        // on a besoin connaître une valeur de départ => la premiere valeur que l'on a sera la valeur de référence 
                        // pour les minimums que programme va connaître
     
     
                        DEBMIN = coordonnees.Y;
                        DMBMIN = coordonnees.X;
     
                    }
                    geodata.Add(coordonnees);// on ajoute le point a la liste de pointf
     
     
                    // attention il faut minimum deux point .... 
                    if (length > 2)
                    {
                        foreach (PointF P in geodata)// on parcourt la liste de pointf
                        {
                            if (P.Y > DEBMAX)
                            {
                                DEBMAX = P.Y;
                            }
     
                            if (P.Y < DEBMIN)
                            {
                                DEBMIN = P.Y;
                            }
     
                            DELTADEB = DEBMAX - DEBMIN;// distance entre les deux points latitudinalement dont on a besoin 
     
                            if (P.X > DMBMAX)
                            {
                                DMBMAX = P.X;
                            }
     
                            if (P.X < DMBMIN)
                            {
                                DMBMIN = P.X;
                            }
     
                            DELTADMB = DMBMAX - DMBMIN;// distance entre les deux points longitudinalement dont on a besoin 
                            // instauration d'une echelle en X et en Y 
                            echelleX = (DELTADMB / pictureBox1.Width);
                            echelleY = (DELTADEB / pictureBox1.Height);
                        }
                    }
                    // pour retranscrir et centrer sur la picture box : 
                    // pt.X = (pictureBox1.Width / 2) + nombrex; // 
                    // pt.Y = (pictureBox1.Height / 2) - nombrey;// 
                    // de plus, on soustrait DMB a deb min pour la reference de la  picturebox1
     
                    PICTB.X = (pictureBox1.Width / 2) + (echelleX * (Convert.ToSingle(dmb) - DMBMIN));
                    PICTB.Y = (pictureBox1.Height / 2) - echelleY * (Convert.ToSingle(deb) - DEBMIN);
                    PICTTBL.Add(PICTB);
                    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    coordon = PICTTBL.ToArray();// tableau de pointf
                    length = length + 1;
    }
    dans le code ci dessus , il y un tableau qui s'appelle coordon et qui se trouve a la fin.
    je voudrai utiliser une fonction qui me ressort ce tableau afin que je puisse l'utiliser a plusieur endroit dans mon code mais je ne sait pas comment faire.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Bonjour,
    je t'invite vivement à lire un cours sur la base du codage. Prototypage d'une fonction etc...

    Donc avec le peu... de code que tu nous a fourni je pense que ta grosse fonction est de type void puisqu'on ne voit pas de return.
    A savoir qu'une fonciton void ne retourne rien.
    Si tu veux récupérer ton tableau coordon tu dois remplacer le void dans la déclaration de ta fonction par le type de ton tableau ?
    C'est quoi d'ailleurs coordon ? un Array ?
    Si c'est le cas ta fonction sera public/private... Array Tafonction(...)
    Autre question : Ce tableau ce n'est pas une variable locale ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    je voudrai transformer le code ci dessus en une fonction qui me retourne le array coordon

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par ojhoj Voir le message
    je voudrai transformer le code ci dessus en une fonction qui me retourne le array coordon
    Comme mentionné ci dessus : lis un cours, car si quelque chose d'aussi trivial te pose problème, il te manque les bases des bases.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    je ne suis pas informatitien ... c'est pour un tfe en electronique ... mais bon ne vous inquiétez pas j'ai trouve , il me suffisait juste d'écrire tout ca comme cela
    `
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    PointF[] agricoltraits(double minuteslong , double minuteslat , int degrelat , int degrelong )
            {
                    ////////////////////////////////////////////////////////////////////////////////////////////////////
                    ///////////////////////////conversion d'angle en seconde en radian//////////////////////////////////
                    //////////////////////////////////////////////////////////////////////////////////////////////////////
                    // conversion en seconde
                    conversionlat = (degrelat * 3600) + (minuteslat * 60);
                    conversionlong = (degrelong * 3600) + (minuteslong * 60);
     
                    /* si on est a l'ouest,  la longitude est négative mais le gps ne l'indique pas au niveau des angle
                       si on est au sud , la latitude est négative mais le gps ne l'indique pas au niveau des angle
                     * se code ne s'y trouve plus attention car problème à resoudre par la suite 
                     */
     
                    // convrsion en radian
                    radlat = conversionlat * ((Math.PI) / (180 * 3600));
                    radlong = conversionlong * ((Math.PI) / (180 * 3600));
                    /*
                    formules
                    D= R*Math.Acos((Math.Sin (phi0) *Math.Sin (phi1))+ (Math.Cos (phi0)*Math.Cos(phi1)*Math.Cos(teta1-teta0)));
                     * le rayon moyen de la terre est de 6371km
                     * nous allons chercher la distance entre le point et l'équateur et entre le point et le méridien0
                     * pour cela , il faut soit annuler phi0 soit têta.
                     * ce qui revient a dire d'annuler soit lat soit long en fonction de la distance que l'on veut. 
                     * ces deux distance vont permettre de se reperer dans le plan X et Y pour pouvoir retracer le champ 
                    */
                    //distance entre Le point de l'equateur => on mesure une latitude. => même longitude
                    deb = 6371000 * Math.Acos(Math.Cos(radlat));
                    // distance entre le meridien et le point => on mesure une longitude => même latitude
                    dmb = 6371000 * Math.Acos(Math.Cos(radlong));
                //////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////// mise sous forme de point//////////////////////////////////
                //////////////////////////////////////////////////////////////////////////////////////////////////
                    coordonnees.X = Convert.ToSingle(dmb);
                    coordonnees.Y = Convert.ToSingle(deb);
     
                    if (length == 0)
                    {
                        // on a besoin connaître une valeur de départ => la premiere valeur que l'on a sera la valeur de référence 
                        // pour les minimums que programme va connaître
     
     
                        DEBMIN = coordonnees.Y;
                        DMBMIN = coordonnees.X;
     
     
                    }
                    geodata.Add(coordonnees);// on ajoute le point a la liste de pointf
     
     
                    // attention il faut minimum deux point .... 
                    if (length > 2)
                    {
                        foreach (PointF P in geodata)// on parcourt la liste de pointf
                        {
                            if (P.Y > DEBMAX)
                            {
                                DEBMAX = P.Y;
                            }
     
                            if (P.Y < DEBMIN)
                            {
                                DEBMIN = P.Y;
                            }
     
                            DELTADEB = DEBMAX - DEBMIN;// distance entre les deux points latitudinalement dont on a besoin 
     
                            if (P.X > DMBMAX)
                            {
                                DMBMAX = P.X;
                            }
     
                            if (P.X < DMBMIN)
                            {
                                DMBMIN = P.X;
                            }
     
                            DELTADMB = DMBMAX - DMBMIN;// distance entre les deux points longitudinalement dont on a besoin 
                            // instauration d'une echelle en X et en Y 
                            echelleX = (DELTADMB / pictureBox1.Width);
                            echelleY = (DELTADEB / pictureBox1.Height);
                        }
                    }
                    // pour retranscrir et centrer sur la picture box : 
                    // pt.X = (pictureBox1.Width / 2) + nombrex; // 
                    // pt.Y = (pictureBox1.Height / 2) - nombrey;// 
                    // de plus, on soustrait DMB a deb min pour la reference de la  picturebox1
     
                    PICTB.X = (pictureBox1.Width / 2) + (echelleX * (Convert.ToSingle(dmb) - DMBMIN));
                    PICTB.Y = (pictureBox1.Height / 2) - echelleY * (Convert.ToSingle(deb) - DEBMIN);
                    PICTTBL.Add(PICTB);
                    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    coordon = PICTTBL.ToArray();// tableau de pointf
                    length = length + 1;
                    return coordon;
                // on returne le tableau qui sera affiché sur la picture box
            }
            }
    c'est le return qui me pausait problème je ne comprenais pas comment il fonctionne.

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

Discussions similaires

  1. [FPDF] creation de fonction
    Par KiranoO dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/03/2009, 23h48
  2. creation de fonction et appel via une autre classe
    Par oceane751 dans le forum Langage
    Réponses: 3
    Dernier message: 21/01/2008, 23h26
  3. creation de fonction
    Par acik59 dans le forum C
    Réponses: 11
    Dernier message: 20/04/2007, 15h37
  4. creation des fonctions
    Par old zbair dans le forum Excel
    Réponses: 2
    Dernier message: 29/03/2007, 20h55
  5. creation des fonctions
    Par zoheir_hm dans le forum Oracle
    Réponses: 2
    Dernier message: 12/04/2006, 10h28

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