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 :

aide modification d'un fichier en c


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Par défaut aide modification d'un fichier en c

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Par défaut

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62

  4. #4
    Membre éclairé
    Avatar de odsen.s
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 269
    Par défaut
    Salut,

    Le fichier que tu nous proposes est très grand... ça ne va pas être facile pour nous qui ne connaissons pas ton code de voir où se situe le problème. Peux-tu plutôt présenter la partie du code qui pose problème et t'arranger pour qu'on puisse le compiler ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Par défaut
    Salut ,

    Alors ben je me suis simplement basée que sur un seul choix (le calcul de la moyenne)
    A juste pour info , comme tu t'appelles kromartien, c'est une etude sur le champ magnétique de Mars!
    fichier c (raccourcis)
    essai.c

    (En fait j'utilise kwrite ou xemacs comme editeur )

    La partie qui me pose probleme c'est la partie finale

    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
    for (l = 0; l < npt_lat; l++)
    	      {
    		for (L = 0 ; L < npt_lon ; L++)
    		  {
    		    index = l * npt_lon + L;
    		    if (NPT[index] > 0)
    		      {
    			filled_bin ++;
    			if (NPT[index] > 2)
    			  {
    			    filled_bin2 ++;
    			  }
    			if (NPT[index] > 1)
    			  {
    			    filled_bin1 ++;
    			  }
    		      }
    		  }
    	      }
     
    	    for (l = 0; l < npt_lat; l++)
    	      {
    		for (L = 0 ; L < npt_lon ; L++)
    		  {
    		    index = l * npt_lon + L;
    		    if (NPT[index] > 1)
    		      {
    			lat = lat_min + (double)l*inc_lat + inc_lat/2.;
    			lon = lon_min + (double)L*inc_lon + inc_lon/2.;
    			if (lon >= 360.)
    			  lon -= 360.;
    			fprintf(fout, "%7.3lf %7.3lf", lon, lat);
    			for (i=0;i<NPT[index]; i++)
    			  {
    			    fprintf(fout, " %7.3lf", alt_var[index][i]);
    			  }
    			fprintf(fout, "\n");
    		      }
    		  }
    	      }
    	  }
     
    	fclose(fout);
     
    	fprintf(stdout, "\tNombre de donnees lues      : %10d\n", data_in);
    	fprintf(stdout, "\tNombre de donnees utilisees : %10d\n", data_out);
    	fprintf(stdout, "\tNombre de bin remplis       : %10d\n", filled_bin);
    	fprintf(stdout, "\tNombre de bin remplis (N>1) : %10d\n", filled_bin1);
    	fprintf(stdout, "\tNombre de bin remplis (N>2) : %10d\n", filled_bin2);
          }
    je pense que je devrai faire des modifs dans les boucles lat et lon pour avoir filled_bin = data_in or ??? je sais pas comme faire(c'est à dire avoir le meme nombre de lignes que mon fichier x) et une autre modif dans l'ecriture du fichier final pour avoir en colonnes : le jour, la position lat et lon (mais la meme que dans le fichier x) , br , bt, bp (toujours du fichier x) puis la moyenne et l'ecart entre les valeurs br,bt,bp et les valeurs moyennes

    Mon fichier x:

    fichier_x.txt

    Voila merci

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut
    Ce qui manque vraiment à un programme comme celui là, ce sont les commentaires.

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kromartien
    Mais en fait, est ce que ce n'est pas dans un cas comme celui-ci qu'il faut dire :
    • code non commenté
    • fichier source trop long
    • utilisation abusive de #define
    • code pas assez modularisé
    Sauf que ce n'est pas son code. Faut suivre ....

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut
    C'est bien le problème. Si c'était son code, elle n'aurait pas à se plaindre mais ici c'est pas sympa pour la personne qui récupère. Je ne met en cause que la personne qui a écrit le code.
    Je suis assez ébahi. Pour moi c'est du grand art en tout cas. Dans le genre cathédrale de verre,

    [Mauvais esprit]C'est une épreuve initiatique de devoir maintenir des sources qui ressemblent à ça ? Le seul moyen de devenir programmeur C digne de ce nom ?[/Mauvais esprit]

    Une chose est certaine en tout cas, je n'ai pas compris à quoi de vait servir ce programme. La personne qui en a une idée devrait être plus à même de décoder.

    Mars est une planète tellurique, elle a un noyau en fer tout comme la terre, c'est pour ça qu'elle possède un champ magnétique. La magnétosphère terrestre est une caractéristique essentielle de l'environnement dans lequel nous vivons, car elle nous protège des rayonnements et particules énergétiques cosmiques.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Par défaut
    Ce fichier sert à calculer la moyenne , la mediane .... suivant le nombre de données par case de 0.25*0.25 pour avoir ainsi la répartition des données et voir si il n'y a pas des données éronnées.
    Voila

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ok mais quel est ton problème exactement ??

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Par défaut
    il faudrait que je retrouve dans mon fichier de sortie le jour et la position de mon fichier X , reprendre les valeurs de moyenne que j'ai obtenu dans le 1er exemple et donc par conséquent retrouver le meme nombre de lignes que mon fichier X (data_in doit etre egale à filled_bin (cf fichier de mon fichier en c)) et de calculer les écarts entre les composantes de mon fichier X et les données moyennes

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut
    [Suggestion HS]
    En fait, je ne voudrai pas vous dire comment faire (car je ne sais pas ce que vous faites exactement et pourquoi ), mais je sais que le logiciel excel, ou un tableur équivalent permettent de manipuler les données beaucoup plus facilement qu'avec un programme C. Ca devrait être une bonne base pour déceler les erreurs du programme
    [/Suggestion HS]

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Par défaut
    OUi je sais , c'est sur que avec Excel ou autre la ça serait un jeu d'enfant et je perderai moins de temps mais je ne suis pas sure qu'il sait gérér plus de 500 000 données! et comme je travaille sous linux et que j'ai plusieurs fichiers de données , on m'a conseillé le programme en c (à mon grand désespoir)

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut
    Il vaut mieux toujours écrire des fonctions qui réalisent des tâches spécifiques. Plus il y a de fonctions documentées qui sont utilisées dans un programme, et plus c'est facile de comprendre le programme.

    Le C est bien pour faire du calcul numérique, mais pas trop pour lire dans des fichiers complexes comme ceux que tu nous montre. Lire une ligne avec des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define READd "%lf\t%lf\t%lf\t%lf"
     
    fscanf(file_flux,READd,&a,&b,&c,&d,&e);
    c'est bien, mais je ne crois pas que ce soit une bonne méthode. Il vaut mieux créer une fonction "lire_ligne_float" qui reçoit un pointeur sur un fichier ouvert en lecture, un numéro de ligne dans le fichier, et qui renvoie un tableau sur des flottants.

    Bien documenter la fonction, l'écrire dans un fichier séparé, permet une lecture beaucoup plus agréable du programme.

  15. #15
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par laroche1
    OUi je sais , c'est sur que avec Excel ou autre la ça serait un jeu d'enfant et je perderai moins de temps mais je ne suis pas sure qu'il sait gérér plus de 500 000 données! et comme je travaille sous linux et que j'ai plusieurs fichiers de données<...>
    OpenOffice a un excellent tableur et fonctionne aussi sous Linux si tu as un environnement graphique (Gnome, KDE etc.)

    Je ne pense pas que 500 000 données lui fasse peur, tant qu'il y a de la mémoire...

  16. #16
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut Le C, le traitement de données et OpenOffice
    Bonjour.
    J'ai bien réussi à mettre le résultat de ce 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
     
    #include <stdlib.h>
    #include <stdio.h>
     
    int main(void)
      {
      FILE * text;
      long i;
      text = fopen("textedata.txt","w");
      fprintf(text,"\n");
      for (i=0;i<500000;i++)
        {
        fprintf(text,"%lf\t",rand()/1000.0);
        if(!(i%10))
          fprintf(text,"\n");
        }
      fprintf(text,"\n");
      return 0;
      }
    dans une feuille de calcul openoffice.org-calc. Le chargement du fichier est assez long, mais n'importe quelle fonction de calcul statistique donne un réultat immédiat. Il est possible d'exporter de même les données au format texte après avoir modifier les données.

Discussions similaires

  1. [AIDE] modification d'un fichier texte
    Par babap1 dans le forum C++
    Réponses: 6
    Dernier message: 16/01/2008, 11h49
  2. Est-il possible de détecter la modification d'un fichier ?
    Par Kokito dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 25/06/2004, 10h42
  3. Aide sur ouverture de fichier avec access
    Par FusionR dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/06/2004, 12h02
  4. [fichier d'aide]créer/gérer un fichier d'aide
    Par ce.moi7 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 03/05/2004, 17h34
  5. [langage] Date de modification d'un fichier
    Par Cyspak dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2003, 15h49

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