Pbm d'ignorance en C

rageatm -  
kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je débute dans la programmation en C et j'ai deux petit soucis:
- est ce qu'il existe un opérateur spécial ou une feinte de sioux pour exprimer la puissance d'un nombre (du genre 1e-200)
- je dois fournir un certain nombre de données contenues dans un fichier externe à mon programme. Pour l'instant, je le fais manuellement en tapant son nom dans la fenetre dos. Mais est ce qu'il y a un moyen de scanner ce fichier automatiquement en inserant une ligne de code supplémentaire?
Je remercie d'avance les personne qui prendrons le temps de me repondre.

2 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bonjour,
    Je débute dans la programmation en C et j'ai deux petit soucis:
    - est ce qu'il existe un opérateur spécial ou une feinte de sioux pour exprimer la puissance d'un nombre (du genre 1e-200)


    En C tu précise le format dans lequel tu affiches ton nombre :
    %lf pour les flottants
    %G pour écrire au format ingénieur
    %d ou %i pour les entiers

    Tu peux préciser le nombre de chiffres significatifs et de nombre après la virgule : par exemple %8.2G pour deux chiffres après la virgules...

    Pour ton 1e-200 il semblerait que ton calcul soit sensé donner 0 mais qu'il n'a pas tout à fait atteint cette valeur. On peut imaginer que tu introduises une constante :
    #define EPSILON 0.000001

    Et que tu testes si ta valeur est inférieure...

    - je dois fournir un certain nombre de données contenues dans un fichier externe à mon programme. Pour l'instant, je le fais manuellement en tapant son nom dans la fenetre dos. Mais est ce qu'il y a un moyen de scanner ce fichier automatiquement en inserant une ligne de code supplémentaire?
    Je remercie d'avance les personne qui prendrons le temps de me repondre.


    Bien sûr !
    FILE *fid=fopen("MonFichier","r");

    Ca suppose bien entendu de connaître au préalable le nom du fichier (le programme peut pas le deviner ;o))... Bien penser au fclosef(fid) à la fin du programme...
    0
    1. rageatm
       
      merci de tes réponses,
      en fait pour mon problème de puissance, je suis obligé de définir un epsilon très faible ( je travail sur un programme de simulation par élements finis). Le paramètre que je veux soumettre à un test est normalement de l'ordre de 1e-20. Mais dans les cas de divergence, ce critère va effectiviement tendre vers 0 sans jamais l'atteindre. C'est pourquoi j'aurais aimé definir l'epsilon d'arrêt des calculs par une valeur du genre 1e-50 sans etre obligé de taper ce chiffre énorme.
      0
      1. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857 > rageatm
         
        Pour cela tu as des bibliotheques de grands nombres déjà faites, mais je sais pas trop ou les trouvées car je ne les ai jamais utilisées...
        0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    double y=y0;
    
    #define EPSILON 0.00001
    ...
    unsigned int it=0; //le nombre d'itération
    unsigned int nbMaxIt=10000;
    
    for(it=0;it<nbMaxIt && y<EPSILON;it++){
        y=f(y);
    }
    ...
    


    Non ?
    0