Pbm d'ignorance en C

Fermé
rageatm - 18 mai 2005 à 09:22
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 18 mai 2005 à 14:37
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

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
18 mai 2005 à 10:23
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
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
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > rageatm
18 mai 2005 à 14:37
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
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
18 mai 2005 à 14:33
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