la fonction main

la fonction main - C++ - Programmation

Marsh Posté le 07-03-2007 à 14:35:46    

bonjour à tout le monde  :jap:  
 
j'ai 3 paramétres N,S et Lambda, que je voudrai qu'ils soient des seuils, pour que je puisse faire régler mon filtre. Alors le problème comment les mettres comme arguments dans ma fonction main??????

Reply

Marsh Posté le 07-03-2007 à 14:35:46   

Reply

Marsh Posté le 07-03-2007 à 14:42:20    

Salut,
 
Ta fonction reçoit les arguments de la ligne de commande dans **argv. Donc il faut que tu parcours argv pour les récupérer, et au besoin les passer d'une chaîne de caractère au format que tu veux.

Reply

Marsh Posté le 07-03-2007 à 14:54:34    

il y on a 2 arguments en format double et un en format int donc il pour les faires convertir j'utilise atoi et atof. je pourrai le faire de cette manière:  
 

Code :
  1. for(int m = 2; m < argc; m++)
  2.                     cout << atof(argv[m]) << endl;


mais je ne peux pas les considérer tous comme un double, et il faut les initialisers avant mais je voudrai, que ces 3 paramétres seront mon seuil et je les changerai de la ligne de commande alors comment les initialisers??? et comment je pourrai les mettres?

Reply

Marsh Posté le 07-03-2007 à 15:17:34    

./foo 3.14 1 2

Reply

Marsh Posté le 07-03-2007 à 15:22:25    

j'ai fais comme ça:

Code :
  1. Lambda=atof(argv[2]);
  2. S=atof(argv[3]);
  3. NumberOfSteps=atoi(argv[4]);


mais j'ai un erreur quelque part et je ne sais pas ou? est ce qu'il faut que j'initisalise mes paramétres tout d'abord ou comment?

Reply

Marsh Posté le 07-03-2007 à 15:26:31    

merci de poster du C++

Reply

Marsh Posté le 07-03-2007 à 15:29:46    

c'est de c++  :lol:  
je converti mes paramétres seulement et je sélectionne l'argument de chaque paramétre c'est tout !!!!!
ce n'est pas comme ça qu'il fuat faire???

Reply

Marsh Posté le 07-03-2007 à 15:32:35    

Non, les indices commence à 0 en C++, alors à moins d'un argument dont tu n'aurais pas parlé, tu sors de ton tableau. Et pour les conversions: http://www.parashift.com/c++-faq-l [...] l#faq-39.2
Ce sera plus sûr que ato* ;)

 

Edit: si tu as installé boost (ou que tu peux le faire), tu peux jeter un oeil du côté de lexical_cast.


Message édité par IrmatDen le 07-03-2007 à 15:35:36
Reply

Marsh Posté le 07-03-2007 à 15:35:36    

qui compile super bien en plus.

Reply

Marsh Posté le 07-03-2007 à 15:37:41    

t'a raison sauf que mon arg[1] est mon objet "mon maillage", donc je suis bien compter l'arg1 mais la conversion de double en char se fait avec atof certes, mais je ne sais pas pourquoi j'ai encore un problème??

Reply

Marsh Posté le 07-03-2007 à 15:37:41   

Reply

Marsh Posté le 07-03-2007 à 15:47:42    

parce que tu as un problème ICC à la ligne 42

Reply

Marsh Posté le 07-03-2007 à 16:02:18    

je n'ai pas compris????????????

Reply

Marsh Posté le 07-03-2007 à 16:22:39    

C'est un peu la même chose avec ta question: tu postes 3 lignes de code sensées être fonctionnelles dans lesquelles on ne peut pas trouver ton erreur. Tu ne donnes pas non plus la ligne de commande appellante du coup on peut rien te dire.

Reply

Marsh Posté le 07-03-2007 à 16:43:12    

ma ligne de commande est la suivante:
Normal.exe bunny.vtk 0.01 0.001 50
 

Code :
  1. vtkSurface *Surface=vtkSurface::New();
  2. RenderWindow *Window=RenderWindow::New();
  3. Surface->CreateFromFile(argv[1]);
  4. Surface->AddNoise(0.0001);
  5. Window->SetInput(Surface);
  6.             double Lambda,S;
  7. int NumberOfSteps;
  8. Lambda=atof(argv[2]);
  9. S=atof(argv[3]);
  10. NumberOfSteps=atoi(argv[4]);


mes arguments sont implémentés de cette manière.

Reply

Marsh Posté le 07-03-2007 à 16:44:47    

Mais c'est quoi qui marche pas :??:
Faut faire des questions claires avec tout les éléments, on s'en sort pas sinon :p

Reply

Marsh Posté le 07-03-2007 à 19:07:15    

En gros ce qu'ils veulent dire si tu comprends pas hamoudasafira, c'est qu'il faudrait que tu mettes ton code c++ (enfin ton main surtout), au pire ton header, et surtout le message d'erreur que tu as quand tu compiles, ou autrement les infos qu'il te manque à l'arrivée. Enfin sinon on est pas des magiciens, et on ne peut deviner ce que t'as oublié.

Reply

Marsh Posté le 09-03-2007 à 12:13:41    

Question bête : le prototype de ton main ressemble à ceci :
 
int main(int argc, char** argv) ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed