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 :

Problème de tableau


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut Problème de tableau
    Bonjour, j'ai un problème au niveau de la multiplication des valeurs de 2 tableaux.

    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
     
    void FrequencyTransposition(float *signal_reel, float tk, int taille_signal)
    {
      int i;
      int N=taille_signal;               /*récupération de la taille des tableaux*/
      float fp,cosinus[N];
      float *signal_re=NULL;
      float *signal_re_transpose=NULL;
     
      FILE * FicSortie;
     
     
      signal_re=malloc(sizeof(float) * (N));
      signal_re_transpose=malloc(sizeof(float) * (N));
     
      for(i=0;i<N;i++)
      { 
    	signal_re[i]=signal_reel[i];      /*Récupération du signal partie réelle*/ 
     }	
     
     
     
      printf("\n\nFréquence de la porteuse en MHz :");   
      scanf("%f",&fp);
     
      printf("\n\nSignal partie réelle transposé par une porteuse de %f MHz :",fp);       
      for(i=0;i<N;i++)
      {
        cosinus[i] = cos(2*3.1416*fp*i*tk);                      
    	signal_re_transpose[i]=signal_re[i]*cosinus[i];            /*Multiplication du signal reel par cos(2*pi*fp*tk)*/
      }
     
     
    FicSortie= fopen("F:/Users/garnier/Matlab/reel.txt","w");
     
     for (i=0;i<N;++i)
     {fprintf(FicSortie,"%lf\n ",signal_re_transpose[i]); 
      printf(" %f ",signal_re_transpose[i]);
     }
     fclose(FicSortie);
     
      return;
    }
    J'ai des erreurs du style j'obtiens:-588189646392141076285668743708672.000000.Or je multiplie un cosinus donc compris entre +1 et -1 avec des coefficients de dépassant pas 1000. DOnc cela n'est pas cohérent.

    Quelqu'un peut-il m'aider? Merci.

  2. #2
    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
    Voici quelques remarques :

    - Pourquoi utilises tu N si tu passes la taille du signal en paramètre ?
    - Pourquoi utiliser malloc si la taille est fixe ?
    - Pas de tests après les mallocs, fopen
    - Pas de libération de mémoire.

    des coefficients de dépassant pas 1000. DOnc cela n'est pas cohérent.
    Certes pas cohérent mais on a aucune preuve que tes coefficients ne dépassent pas 1000...

    Jc

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    - Pourquoi utilises tu N si tu passes la taille du signal en paramètre ?
    Oui c'est sur, surtout que je ne midifie pas cette valeur dans cette fonction.

    - Pourquoi utiliser malloc si la taille est fixe ?
    La taille dépend du paramètre qui n'est pas connue.

    - Pas de tests après les mallocs, fopen
    Je ne vois pas ce que tu veux dire.


    - Pas de libération de mémoire.
    A quel endroit faut-il faire la libération

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    J'ai des erreurs du style j'obtiens:-588189646392141076285668743708672.000000.Or je multiplie un cosinus donc compris entre +1 et -1 avec des coefficients de dépassant pas 1000.
    Ce genre d'erreur est souvent du a l'oubli de #include <math.h>. Du coup, cos() se retrouve declaree implicitement comme retournant un int, ce qui fait un peu mal.

  5. #5
    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
    Citation Envoyé par sandball22
    - Pourquoi utiliser malloc si la taille est fixe ?
    La taille dépend du paramètre qui n'est pas connue.
    Pourtant tu passes une taille fixe à malloc...

    - Pas de tests après les mallocs, fopen
    Je ne vois pas ce que tu veux dire.
    malloc et fopen retournent des pointeurs, il faut vérifier si ces derniers ne sont pas nuls avant de continuer.

    - Pas de libération de mémoire.
    A quel endroit faut-il faire la libération
    [/quote]
    A la fin de la fonction il faut le faire et ton return à la fin est inutile...

    Jc

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Toujours dans le même genre de remarques que celles de fearyourself

    - Pourquoi un tableau supplémentaire signal_re ? On peut aussi bien travailler sur signal_reel.

    - Pourquoi un tableau cosinus ? On peut travailler avec une simple variable float cosinus.

    - D'ailleurs, pouquoi un tableau signal_re_transpose ? on peut faire le calcul pour chaque point et l'écrire aussitot. On n'a besoin de créer aucun tableau au final.

Discussions similaires

  1. Débutant en Javascript : problème de tableau !
    Par bluheim dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/11/2005, 15h03
  2. [XHTML] problème de tableau
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/04/2005, 07h18
  3. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 20h30
  4. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 11h09

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