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 :

Mauvais élève en C++


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Par défaut Mauvais élève en C++
    Bonjour,

    Je suis nouveau sur ce site, un peu moins en programmation mais presque, mais j'ai appris sur le tas, en m'inspirant des gens qui m'entourent (qui ne sont pas programmeurs à la base).
    En me promenant sur le site, je me rends compte que je fais plein de trucs sales en C++ (#define, char*, FILE*, tableaux multidim, fichier monobloc...).

    Il y a tellement de trucs à changer en même temps que je suis perdu, et c'est là que j'ai besoin de vous!

    J'ai essayé de concentrer ces problèmes en coupant dans un programme que j'utilise et en le simplifiant. C'est un programme qui lit des tableau dans des fichiers (dans sa version complete pouvant lire différents types de fichiers) et mettant les données dans un tableau de format générique.

    Voilà 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
     
    #include <fstream>
    #include <stdio.h>
    #include <iostream>
     
    using namespace std;
     
    #define NbAntMax 2		// Nombre de signaux
    #define NbChTimeMax 10001	// Nombre de canaux temporel max absolu
    #define NbChTimeAA 1000		// Nombre max AA (normalement il y a des signaux BB, avec une autre longueur)
    #define NbTypesSignaux 5	// Temps, NS, EW, vertical, autre parametre
     
    // Tableau destines a contenir les signaux
    float signalsAA[NbAntMax][NbTypesSignaux][NbChTimeMax];
     
    // Declaration des fonction de lecture des fichiers
    void Read1FileAA(char* AAdir,char* AAfile,float signals[NbAntMax][NbTypesSignaux][NbChTimeMax],int ant);
    void ReadAllFilesAA(char* AAdir,char* AAfile[NbAntMax],float signals[NbAntMax][NbTypesSignaux][NbChTimeMax]);
     
    // Chemin des fichiers de donnees AA
    char* dirAA="./dataAA/";
    char* fileAA[NbAntMax]={"file1","file2"};
     
    int main()
    {
      ReadAllFilesAA(dirAA,fileAA,signalsAA);
      printf("Last value: %3f\n",signalsAA[1][3][999]);
      return 0;
    }
     
     
    // ReadAllFileAA: Lit les trois composantes du champ de tous les fichiers AA
    void ReadAllFilesAA(char* AAdir,char* AAfile[NbAntMax],float signals[NbAntMax][NbTypesSignaux][NbChTimeMax])
    {
      for(int i=0;i<NbAntMax;i++) {
        Read1FileAA(AAdir,AAfile[i],signals,i);
      }
    }
     
    // Read1FileAA: Lit les trois composantes du champ d un fichier AA a une position
    void Read1FileAA(char* AAdir,char* AAfile,float signals[NbAntMax][NbTypesSignaux][NbChTimeMax],int ant)
    {
      int ii=ant;
     
      char AAdirfile[100];
      sprintf(AAdirfile,"%s%s.dat",AAdir,AAfile);
     
      FILE *fAnt;
      if((fAnt = fopen(AAdirfile,"r"))==NULL) {printf("Cant open AA file: %s\n",AAdirfile);}
     
      for(int jj=0;jj<2012;jj++) {
        fscanf(fAnt,"%f",&signals[ii][0][jj]);	// Time
        fscanf(fAnt,"%f",&signals[ii][1][jj]);	// ns
        fscanf(fAnt,"%f",&signals[ii][2][jj]);	// ew
        fscanf(fAnt,"%f",&signals[ii][3][jj]);	// vert
        signals[ii][4][jj]=999;			// nothing, utilise avec les signaux BB...
      }
    }
    Je vous laisse admirer le style

    Vous pouvez m'aider à améliorer ça, histoire de repartir sur de bonnes bases?

    Pour commencer, j'ai essayé hier de mettre les fonctions de lectures dans un fichier .cxx séparé, plus un header (appelé après les #define), mais à la compilation j'ai un message
    undefined reference to ReadAllFilesAA.



    PS: En fichier joint, le code plus les données pour que ça tourne
    PS2: J'ai déjà écrit des milliers de lignes de C++(?) avec ce style
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/04/2010, 20h27
  2. Mauvais indicateur de connection
    Par calvin dans le forum Hibernate
    Réponses: 15
    Dernier message: 24/05/2004, 12h03
  3. [Tomcat][JSP] Mauvais fonctionnement
    Par gandalf_le_blanc dans le forum Tomcat et TomEE
    Réponses: 47
    Dernier message: 26/04/2004, 13h07
  4. Mauvais noms de colonnes lors d'une requête
    Par nmathon dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/04/2004, 07h27
  5. mauvais code
    Par moumou dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 17/04/2003, 15h56

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