Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2359 connectés 

  FORUM HardWare.fr
  Programmation
  C

  aide debutante programmation en c

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aide debutante programmation en c

n°1522249
laroche14
Posté le 01-03-2007 à 14:29:52  profilanswer
 

Rebonjour,
J'ai un autre petit soucis cette fois avec la programmation en c
 
Je vous explique mon soucis
 
J'ai deux fichiers
Un où j'ai pleins de paramètres repartis en colonnes
 
et l'autre où je voudrais lui demander de lui une ligne de l'autre fichier or je ne sais pas comment lui faire comprendre
 
voici mon premier fichier "dipole.vec" avec par colonne la lat_d,lon_d,prof_d,M,I,D (crée sous xemacs)
 
0 0 40 5 90 0
0 0 40 5 60 0
0 0 40 5 30 0
 
 
et j'amerais le lire (par lignes)  dans fin quand je rentre mes diférents parametres "calcul_champ_mag_exe. <fin>...."
 
et voici mon code en c
//*Calcul_champ_mag1.exe*/
/*on va entrer plusieurs parametres afin de calculer le champ magnetique */
/*dans ce fichier on calcule Mr_d,Mt_d et Mp_d a partir de I et D*/
 
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <malloc.h>
 
#define M_PI   3.14159265358979323846
#define PI_180 (M_PI / 180.0)
#define rp 3393.5
 
 
#define READl1 "% % % %lf %lf %lf\n"
#define WRITEl2 "% % % %13.9lf %13.9lf %13.9lf\n"
 
 
 
int main(argc, argv)
int argc;
char *argv[];
{
    FILE   *fout, *f, *fin;
    int row;
    double M, I, D;
    double r, theta, phi;   //*parametres d'observation */
    double alt, lat, lon;
    double lat_min, lat_max;
    double lon_min, lon_max;
    double r_d, theta_d, phi_d;  //*parametres du dipole */
    double prof_d, lat_d, lon_d;
    double Mr_d, Mt_d ,Mp_d;
    double l;
    double A1, A2, A3;
    double B1, B2, B3;
    double C1, C2, C3;
    double F1, F2, F3;
    double Br, Btheta, Bphi;
    double x;
    double resol;
    int i;
    double D1,D2,D3;
    double prod1, prod2, prod3;
    double prod11, prod21, prod31;
    double prod111,prod211, prod311;
    double F;
    double inc;
    double l3;
 
    printf("############################################################\n" );
    printf("Calcul_champ_mag.exe\n\n" );
    /*printf("\tEntrez les parametres necessaires :\n" );*/
if(argc!=15 )
    {
    prinf("erreur nombre de parametres\n" );
    exit(-1);
    }
    printf("Calcul_champ_mag.exe <fin> <lat_min> <lat_max> <lon_min> <lon_max> <alt> <inc> <fout> \n" );
    /* lire les inputs */
 
 
    fin= fopen(argv [1],"r" );
 
for (i=0;i<row;i++)
      {
        fscanf(fin, READl,
               &lat_d,&lon_d,&prof_d,&M,&I,&D);
    }
 
    lat_min = atof(argv[2]);
 
    lat_max = atof(argv[3]);
 
    lon_min=atof(argv[4]);
 
    lon_max=atof(argv[5]);
 
    alt=atof(argv[6]);
 
    inc = atof(argv[7]);
 
    fout = fopen(argv[8],"w" );
   
 
if(fout==NULL)
    {
    return 0;
    }
 
 
 
 
 
/*modification pour avoir des degres --- a changer*/
/*lat_d = 90.-thetad/PI_180;*/
/*lon_d = phid/PI_180;*/
/*prof_d = rd - rp;*/
   
       
    theta_d = (90.-lat_d)*PI_180;
    phi_d = (lon_d)*PI_180;
    r_d = rp-prof_d;
 
/*calcul de Mr_d, Mt_d,Mp_d dont les resultats seront ecrits dans un autre fichier */
 
I_rad=I*PI_180
D_rad=D*PI_180
 
Mr_d=M*sin(I_rad);
Mt_d=M*cos(I_rad)*cos(D_rad);
Mp_d=M*cos(I_rad)*sin(D_rad);
 
 
/* calcul  */
    for (lat=lat_min+(inc/2); lat<lat_max+(inc/2); lat += inc)
        for(lon=lon_min+(inc/2); lon<lon_max+(inc/2); lon +=inc)
      {
       
        theta = (90.-lat)*PI_180;
        phi = lon*PI_180;
        r = alt+rp;
   
 
   
/* calcul des parametres A*/
 
    A1=cos(theta)*cos(theta_d)+sin(theta)*sin(theta_d)*cos(phi-phi_d);
    A2=-sin(theta)*cos(theta_d)+cos(theta)*sin(theta_d)*cos(phi-phi_d);
    A3=-sin(theta_d)*sin(phi-phi_d);
 
/*calcul des parametres B*/
 
    B1=cos(theta)*sin(theta_d)-sin(theta)*cos(theta_d)*cos(phi-phi_d);
    B2=-sin(theta)*sin(theta_d)-cos(theta)*cos(theta_d)*cos(phi-phi_d);
    B3=cos(theta_d)*sin(phi-phi_d);
 
/*calcul des parametres C*/
 
    C1=sin(theta)*sin(phi-phi_d);
    C2=cos(theta)*sin(phi-phi_d);
    C3=cos(phi-phi_d);
 
/*calcul de l*/
    x=acos(cos(theta)*cos(theta_d)+sin(theta)*sin(theta_d)*cos(phi-phi_d));
    l=sqrt((r_d*r_d)+(r*r)-2*r_d*r*cos(x));
 
/*calcul des parametres D*/
    D1=r-r_d*A1;
    D2=-r_d*A2;
    D3=-r_d*A3;
 
/*calcul des parametres F*/
    F1=r*A1-r_d;
    F2=-r*B1;
    F3=r*C1;
 
/*calcul prod1 prod2 prod3 pour Br*/
    prod1=((3*D1*F1)/(l*l))-A1;
    prod2=((3*D1*F2)/(l*l))+B1;
    prod3=((3*D1*F3)/(l*l))-C1;
 
/*calcul prod11 prod21 prod31 pour Btheta*/
    prod11=((3*D2*F1)/(l*l))-A2;
    prod21=((3*D2*F2)/(l*l))+B2;
    prod31=((3*D2*F3)/(l*l))-C2;
 
/*calcul prod111 prod211 prod311 pour Bphi*/
    prod111=((3*D3*F1)/(l*l))-A3;
    prod211=((3*D3*F2)/(l*l))+B3;
    prod311=((3*D3*F3)/(l*l))-C3;
 
 
/*Calcul des composantes du champ magnetique en nanotesla*/
    l3=l*l*l;
    Br=(Mr_d*(prod1/(l3))+Mt_d*(prod2/(l3))+Mp_d*(prod3/(l3)))*1000000000.;
    Btheta=(Mr_d*(prod11/(l3))+Mt_d*(prod21/(l3))+Mp_d*(prod31/(l3)))*1000000000.;
    Bphi=(Mr_d*(prod111/(l3))+Mt_d*(prod211/(l3))+Mp_d*(prod311/(l3)))*1000000000.;
 
/*calcul du champ*/
 
    /* sortie vers fichier */
   
    fprintf(fout, WRITEl2,lat,lon,alt,Mr_d,Mt_d,Mp_d,Br,Btheta,Bphi);
    }
fclose(fout);
fclose(fin);
}
 
 
je vous remercie

mood
Publicité
Posté le 01-03-2007 à 14:29:52  profilanswer
 

n°1522263
_darkalt3_
Proctopathe
Posté le 01-03-2007 à 14:43:46  profilanswer
 

quel est le problème / la question ?


---------------
Töp of the plöp
n°1522276
Elmoricq
Modérateur
Posté le 01-03-2007 à 14:50:31  profilanswer
 

Citation :

int main(argc, argv)
int argc;
char *argv[];
{
    FILE   *fout, *f, *fin;
    int row;
    double M, I, D;
    double r, theta, phi;   //*parametres d'observation */
    double alt, lat, lon;
    double lat_min, lat_max;
    double lon_min, lon_max;
    double r_d, theta_d, phi_d;  //*parametres du dipole */
    double prof_d, lat_d, lon_d;
    double Mr_d, Mt_d ,Mp_d;
    double l;
    double A1, A2, A3;
    double B1, B2, B3;
    double C1, C2, C3;
    double F1, F2, F3;
    double Br, Btheta, Bphi;
    double x;
    double resol;
    int i;
    double D1,D2,D3;
    double prod1, prod2, prod3;
    double prod11, prod21, prod31;
    double prod111,prod211, prod311;
    double F;
    double inc;
    double l3;
 



 
[:ciler]

n°1522280
laroche14
Posté le 01-03-2007 à 14:52:16  profilanswer
 

Ben j'aimerais lire  ligne par ligne le fichier crée sous xemacs dans mon code c  et je sais pas comment faire pour lui dire  
 
Dans fin, quand je rentre le nom de mon fichier dans mon code "calcul_champ"qui me lui la premiere ligne et op ça me cree un fichier correspondant à cette ligne et ainsi de suite pour chaque ligne

n°1522290
_darkalt3_
Proctopathe
Posté le 01-03-2007 à 14:58:59  profilanswer
 

laroche14 a écrit :

Ben j'aimerais lire  ligne par ligne le fichier crée sous xemacs dans mon code c  et je sais pas comment faire pour lui dire  
 
Dans fin, quand je rentre le nom de mon fichier dans mon code "calcul_champ"qui me lui la premiere ligne et op ça me cree un fichier correspondant à cette ligne et ainsi de suite pour chaque ligne


Vazy fait un effort et corrige, ca veut dire:
- grammaire,
- orthographe,
- ponctuation.
 
Franchement je comprends rien à ta requête:

Citation :

qui me lui la premiere ligne



---------------
Töp of the plöp
n°1522302
Elmoricq
Modérateur
Posté le 01-03-2007 à 15:07:37  profilanswer
 

Il y a tellement de choses à corriger dans ce bout de code que je ne sais même pas par où commencer : définition de fonction non ANSI, liste interminable de variables dont certaines ne semblent là que pour émuler des tableaux, code commenté donc inutile, indentation aléatoire, des macros de toute beauté, des scanf(), utilisation de variables non initialisées, magic numbers, main() sans code retour, aucune fonction...

 

A ce stade je ne recommande plus qu'une chose : se rendre sur amazon.fr ou dans une librairie spécialisée, se procurer le livre "Le Langage C" de Kernighan&Ritchie, et commencer à le potasser avant d'écrire une seule ligne supplémentaire de code.
A la place du livre il y a aussi d'excellents tutoriaux sur le net.


Message édité par Elmoricq le 01-03-2007 à 15:12:15
n°1522304
laroche14
Posté le 01-03-2007 à 15:08:59  profilanswer
 

Ben dslée ,
 
'aimerais donc lire  ligne par ligne le fichier ( crée sous xemacs) dans mon code c  et je ne sais pas comment faire pour lui dire .
 
Dans <fin>,  dans mon code "calcul_champ" j'aimerais qu'il comprenne que je ne veux que la premiere ligne et à la fin qu'il me crée un fichier correspondant à cette ligne et ainsi de suite pour chaque ligne.
 
C'est plus compréhensible?

n°1522305
_darkalt3_
Proctopathe
Posté le 01-03-2007 à 15:09:45  profilanswer
 

laroche14 a écrit :

Ben dslée ,
 
'aimerais donc lire  ligne par ligne le fichier ( crée sous xemacs) dans mon code c  et je ne sais pas comment faire pour lui dire .
 
Dans <fin>,  dans mon code "calcul_champ" j'aimerais qu'il comprenne que je ne veux que la premiere ligne et à la fin qu'il me crée un fichier correspondant à cette ligne et ainsi de suite pour chaque ligne.
 
C'est plus compréhensible?


Oui déjà, même s'il te manque toujours des lettres.
C'est dingue, tu le vois pas ?


---------------
Töp of the plöp
n°1522307
_darkalt3_
Proctopathe
Posté le 01-03-2007 à 15:10:17  profilanswer
 

(et sinon Elmoriq réponds aux questions que tu te poses).


---------------
Töp of the plöp
n°1522308
laroche14
Posté le 01-03-2007 à 15:10:48  profilanswer
 

Reponse à ELmoricp,  
Mes variables sont toutes utilisées dans mes calculs, c'est pas de ma faute si mes calculs sont très longs! lol
 

mood
Publicité
Posté le 01-03-2007 à 15:10:48  profilanswer
 

n°1522309
laroche14
Posté le 01-03-2007 à 15:11:19  profilanswer
 

C'est bon merci de votre aide....

n°1522311
Elmoricq
Modérateur
Posté le 01-03-2007 à 15:12:47  profilanswer
 

laroche14 a écrit :

Reponse à ELmoricp,  
Mes variables sont toutes utilisées dans mes calculs, c'est pas de ma faute si mes calculs sont très longs! lol


non, pas lol
 
Regarde par exemple "row" que tu utilises alors que, potentiellement, son contenu est aléatoire.

n°1522312
_darkalt3_
Proctopathe
Posté le 01-03-2007 à 15:13:38  profilanswer
 

Bon et ton code là, il réagit comment ?
Il se passe quoi concrètement ?
Un debugger tu sais ce que c'est ?


---------------
Töp of the plöp
n°1522314
laroche14
Posté le 01-03-2007 à 15:14:15  profilanswer
 

ben justement j'ai mis row car je pense que c'est la clé de mon truc et qu'il faut que je m'en serve

n°1522315
Elmoricq
Modérateur
Posté le 01-03-2007 à 15:14:21  profilanswer
 

laroche14 a écrit :

C'est bon merci de votre aide....


 
Très, très franchement, tu ne peux pas continuer comme cela avec ton niveau de connaissance actuel.
Il te faut lire des cours, parce que là, la seule direction que tu prends, c'est le mur.
 
Tu peux commencer par là, par exemple : http://mapage.noos.fr/emdel
 
Il y a d'autres liens sur le net, et des livres aussi.

n°1522318
Elmoricq
Modérateur
Posté le 01-03-2007 à 15:15:52  profilanswer
 

laroche14 a écrit :

ben justement j'ai mis row car je pense que c'est la clé de mon truc et qu'il faut que je m'en serve

 

Tu programmes au hasard.

 

D'ailleurs, ton compilateur devrait te le dire, voici ce que ça donne chez moi avec un copier-coller de ton code :

taiste.c: In function `main':
taiste.c:56: warning: implicit declaration of function `prinf'
taiste.c:67: error: `READl' undeclared (first use in this function)
taiste.c:67: error: (Each undeclared identifier is reported only once
taiste.c:67: error: for each function it appears in.)
taiste.c:107: error: `I_rad' undeclared (first use in this function)
taiste.c:108: error: parse error before "D_rad"
taiste.c:111: error: `D_rad' undeclared (first use in this function)
taiste.c:184: warning: conversion lacks type at end of format
taiste.c:184: warning: conversion lacks type at end of format
taiste.c:184: warning: conversion lacks type at end of format
taiste.c:184: warning: too many arguments for format
taiste.c:24: warning: unused variable `f'
taiste.c:41: warning: unused variable `resol'
taiste.c:47: warning: unused variable `F'

 

edit : tiens c'est marrant, il signale pas l'emploi des variables non initialisées [:pingouino]


Message édité par Elmoricq le 01-03-2007 à 15:20:14
n°1522323
laroche14
Posté le 01-03-2007 à 15:20:11  profilanswer
 

Normal pour read , il faut le fichier de données  
I_rad et D_rad aussi car j'ai pas fini de voir comment je pouvais les modifier et je les ai pas déclaré mais c'est pas le sujet ici ..;et le reste je les ai pas encore enlevé car je suis en train de tout modifier!! desolée je suis pas une pro de la programmation!!  

n°1522325
laroche14
Posté le 01-03-2007 à 15:21:05  profilanswer
 

Je programme pas au hasard aussi, j'apprends sur le tas car j'ai pas le temps autrement, j'ai un programme à réaliser pour calculer le champ magnétique de Mars avec les données de la NASA

Message cité 1 fois
Message édité par laroche14 le 01-03-2007 à 15:22:49
n°1522328
_darkalt3_
Proctopathe
Posté le 01-03-2007 à 15:22:27  profilanswer
 

laroche14 a écrit :

Normal pour read , il faut le fichier de données  
I_rad et D_rad aussi car j'ai pas fini de voir comment je pouvais les modifier et je les ai pas déclaré mais c'est pas le sujet ici ..;et le reste je les ai pas encore enlevé car je suis en train de tout modifier!! desolée je suis pas une pro de la programmation!!


 
Tu confonds variables et données !


---------------
Töp of the plöp
n°1522329
Elmoricq
Modérateur
Posté le 01-03-2007 à 15:23:25  profilanswer
 

laroche14 a écrit :

Je programme pas au hasard aussi, j'apprends sur le tas car j'ai pas le temps autrement, j'ai un programme à réaliser pour calculer le champ magnétique de Mars avec les données de la NASA


Imagine que si tu te trompes, tes résultats seront faux, et tu ne le remarqueras peut-être même pas au début.

 

On ne dit pas ça juste pour des questions esthétiques, ni pour jouer aux cadors (personnellement je m'en moque :o), mais parce que ce que tu as écrit est potentiellement faux.


Message édité par Elmoricq le 01-03-2007 à 15:24:49
n°1522330
laroche14
Posté le 01-03-2007 à 15:23:29  profilanswer
 

peut etre
 allez  j'en ai marre de me justifier ,je dois travailler
Merci de votre aide

n°1522331
Taz
bisounours-codeur
Posté le 01-03-2007 à 15:24:49  profilanswer
 

magnifique C K&R.
 
C'est quoi qui marche pas ? Quel est le problème à l'exécution ?

n°1522332
_darkalt3_
Proctopathe
Posté le 01-03-2007 à 15:25:29  profilanswer
 

Mais non reviens !
On t'as meme pas parlé des balises code !


---------------
Töp of the plöp
n°1522333
Elmoricq
Modérateur
Posté le 01-03-2007 à 15:26:24  profilanswer
 

Si vraiment tu veux continuer sur cette voie, alors pour lire ton fichier renseigne-toi sur les fonctions fopen()/fclose()/fgets() pour commencer.
 
Mais, vraiment, je te conseille de te documenter avant de continuer ce code. Tu ne sembles pas t'en rendre compte, mais au final tu gagnerais du temps. Beaucoup.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  aide debutante programmation en c

 

Sujets relatifs
Logiciel de programmation en paire - Résoluprogrammation en C++ de léquation de la chaleur
Besoin d'aide pour créer un jeuxBesoin d'aide pour le port paralléle.
Aide pour batch de renommagepetite aide surement très simple pour labview
[VB] besoin d'aide pour un problèmeprogrammation systeme
Programme DSQV, aide!!débutante en programmation cherche de l'aide
Plus de sujets relatifs à : aide debutante programmation en c


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR