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 :

Insertion de code


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par défaut Insertion de code
    Bonjour,
    Quelqu'un aurait il déja fait tourné un bout de code appartenant à un projet et qui n'aurait plus fonctionné une fois inséré dans un autre projet, de plus grande envergure. Plus précisément, j'appelle une fonction dans mon main du premier projet, cela fonctionne mais si j'inclue cette même fonction dans un autre projet de plus grande envergure j'ai des pertes de variables. Je pense avoir bien respecté les règles de portée cependant? Encore plus précisément voici les 2 cas de figures (en pseudo pseudo code...):

    Cas 1 qui fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #include<fonction.h>
    main()
    fonction(tau);
     
    (fonction est déffinie dans fonction.h)
    Cas 2 problématique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    main()
    fonction1()
     
    dans un autre fichier:
    #include<fonction.h>
    fonction1(){
    fonction(tau)
    }
    Et là pb, je perd en cours de route, c'est à dire dans la fonction fonction() ma valeur de tau, je comprend rien.

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Avec aussi peu de renseignements sur les fonctions, comment veux-tu qu'on sache ???
    Ces fonctions utilisent-elles des variables globales ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    Où tau est-elle déclarée?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par défaut
    voici mon premier projet qui fonctionne

    main:
    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
     
    #include <stdio.h>
    #include <gsl/gsl_matrix.h>
    #include <gsl/gsl_linalg.h>
     
    #include "gsl_functions_pinv.h"
     
    int
    main (void)
    {
    /*int gsl_linalg_complex_QR_decomp (gsl_matrix_complex * A, gsl_vector_complex * tau);
    int gsl_linalg_complex_QR_lssolve (const gsl_matrix_complex * QR, const gsl_vector_complex *
    tau, const gsl_vector_complex * b, gsl_vector_complex * x, gsl_vector_complex * residual);*/
    int k;
     
    gsl_matrix_complex * m = gsl_matrix_complex_alloc (1024, 2);
    gsl_vector_complex * x = gsl_vector_complex_alloc (2);
    gsl_vector_complex * b = gsl_vector_complex_alloc (1024);
    gsl_vector_complex * residual = gsl_vector_complex_alloc (1024);
    gsl_vector_complex * tau = gsl_vector_complex_alloc (2);
     
    gsl_complex z1 ;
    gsl_complex z2 ;
    gsl_complex z3 ;
    gsl_complex z4 ;
    gsl_complex z5 ;
    gsl_complex z6 ;
    gsl_complex b1 ;
    gsl_complex b2 ;
    gsl_complex b3 ;
    gsl_complex t1 ;
    gsl_complex t2 ;
     
    GSL_SET_COMPLEX (&z1, 1.0, 0.0);
    GSL_SET_COMPLEX (&z2, 2.0, 0.0);
    GSL_SET_COMPLEX (&z3, 3.0, 0.0);
    GSL_SET_COMPLEX (&z4, 4.0, 0.0);
    GSL_SET_COMPLEX (&z5, 5.0, 0.0);
    GSL_SET_COMPLEX (&z6, 6.0, 0.0);
    GSL_SET_COMPLEX (&b1, 2.0, 0.0);
    GSL_SET_COMPLEX (&b2, 3.0, 0.0);
    GSL_SET_COMPLEX (&b3, 2.0, 0.0);
    GSL_SET_COMPLEX (&t1, 1.169031, 0.0);
    GSL_SET_COMPLEX (&t2, 1.113104, 0.0);
     
    	for (k = 0; k < 1024; k++) {
    	gsl_vector_complex_set (tau, 0, t1);
    	gsl_vector_complex_set (tau, 1, t2);
    	GSL_SET_COMPLEX (&z1, 0.0, 1.0);
    	GSL_SET_COMPLEX (&z2, 3.2, 3.3);
    	GSL_SET_COMPLEX (&b1, 1.2, 0.0);
    	gsl_matrix_complex_set (m, k, 0, z1);
    	gsl_matrix_complex_set (m, k, 1, z2);
    	gsl_vector_complex_set (b, k, b1);
    	}
     
    gsl_linalg_complex_QR_decomp (m, tau); fonction qui posera pb
     
    gsl_linalg_complex_QR_lssolve (m, tau,
    					   b, x, residual);
     
    printf ("m(%d,%d) = %f + i %f\n", 0, 0,
    gsl_vector_complex_get (x, 1));
     
    }
    gsl_functions_pinv.c:
    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
     
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include <gsl/gsl_math.h>
    #include <gsl/gsl_vector.h>
    #include <gsl/gsl_matrix.h>
    #include <gsl/gsl_linalg.h>
    #include <gsl/gsl_blas.h>
     
    #include <gsl/gsl_linalg.h>
     
    #include "gsl_functions_pinv.h"
     
    int
    gsl_linalg_complex_QR_decomp (gsl_matrix_complex * A, gsl_vector_complex * tau)
    { code qui fonctionne}
    Voici le même code insérré dans mon projet 2 qui foire

    fonction annexe au code (pas dans le main)
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
     
    #include "include/libtsp.h"
     
    #include <gsl/gsl_matrix.h>
    //#include <gsl/gsl_complex.h>
    #include <gsl/gsl_linalg.h>
    #include "gsl_functions_pinv.h"
     
    #include "config.h"
    #include "Mat_fctn.h"
    #include "sinusoid_analysis.h"
    #include "complex2.h"
    #include "matrix.h"
    #include "segment.h"
    ...
    déclarations:
    gsl_matrix_complex * m = gsl_matrix_complex_alloc (NL, 2);
    gsl_vector_complex * x = gsl_vector_complex_alloc (2);
    gsl_vector_complex * b = gsl_vector_complex_alloc (NL);
    gsl_vector_complex * residual = gsl_vector_complex_alloc (NL);
    gsl_vector_complex * tau = gsl_vector_complex_alloc (2);
     
    gsl_complex z1 ;
    gsl_complex z2 ;
    gsl_complex b1 ;
    gsl_complex t1 ;
    gsl_complex t2 ;
     
    GSL_SET_COMPLEX (&t1, 1.169031, 0.0);
    GSL_SET_COMPLEX (&t2, 1.113104, 0.0);
     
    int k;
    for (k = 0; k < NL; k++) {
    	GSL_SET_COMPLEX (&z1, C->P[k][0].re, C->P[k][0].im);
    	GSL_SET_COMPLEX (&z2, C->P[k][1].re, C->P[k][1].im);
    	GSL_SET_COMPLEX (&b1, rn[k], 0.0);
    	gsl_matrix_complex_set (m, k, 0, z1);
    	gsl_matrix_complex_set (m, k, 1, z2);
    	gsl_vector_complex_set (b, k, b1);
    	}
    gsl_linalg_complex_QR_decomp (m, tau); ici on perd la valeur de tau dans la fonction.
     
    	gsl_linalg_complex_QR_lssolve (m, tau,
    					   b, x, residual);
    gsl_functions_pinv.c: est déclaré comme dans le premier projet.




    Bon je sais, il y a beaucoup de code mais je suis tellement embarrassé par mon pb que je met tout au cas où quelqu'un trouve mon erreur. (vous n'êtes pas obligé de lire mon post!)

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Si j'ai bien pisté tau dans ton code,dans le premier tu as

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       gsl_vector_complex_set (tau, 0, t1);
       gsl_vector_complex_set (tau, 1, t2);
    qu'on ne retrouve pas dans le deuxième. peut-être est-ce un début de piste.
    Maintenant, tau a l'air d' être un pointeur, tu as peut-être une corruption de la mémoire quelque part.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par défaut
    Si j'ai bien pisté tau dans ton code,dans le premier tu as
    Je l'ai mis et ça change rien. Donx c'est pas ça.

    J'aime bien tes phrases philosophiques,mais je ne comprend pas pourquoi seule la haine fait des choix, c'estd es conneries non?[/code]

  7. #7
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    De nouveau, tu dois avoir un problème de corromption mémoire... Vérifie que tu ne sors pas des bornes de tes tableaux...

    Aussi, tu peux essayer de pister à quel moment tu "perds" les valeurs de tau, cela veut dire que tu as écrit dessus donc cherche l'affectation qui est en cause...

    Jc

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par défaut
    J'ai pisté où j'ai perdu tau, comment je fais pour Vérifier que je ne sors pas des bornes de mes tableaux...

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    [hors sujet]
    Citation Envoyé par petdelascar
    J'aime bien tes phrases philosophiques,mais je ne comprend pas pourquoi seule la haine fait des choix, c'estd es conneries non?[/code]
    Le koan zen est destiné à faire réfléchir, chacun en a son/ses explication(s), les donner peut fausser la réflexion des autres. Tu en penses ce que tu veux, c'est ton libre choix, mais pour moi, c'est une des plus belles phrases que j'ai jamais lue.
    [/hors dujet]
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par défaut
    Moi, le message qui a eu beaucoup de sens c'est à la fin du film "il était une fois en Amérique" quand Robert de Niro, après s'être fait trahi par son meilleur ami, rentre chez lui, s'allonge, et ris à la face de la vie comme un enfant insouciant. J'ai pleuré hô mes frêres.

Discussions similaires

  1. [Tcl/Tk] Insertion de code Tcl/tk dans du C
    Par shito dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 20/11/2006, 17h55
  2. [Dreamweaver] Insertion de code php dans un modèle
    Par Nourr dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 03/05/2006, 20h40
  3. probleme d'insertion de code assembleur dans du c++
    Par Pragmateek dans le forum C++
    Réponses: 4
    Dernier message: 05/03/2006, 23h30
  4. Formulaire : cas d'insertion de code Javascript
    Par davmaster62 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/02/2006, 23h52
  5. Insertion de code html
    Par ANOVA dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/11/2005, 00h49

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