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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
| /*les includes */
#include <stdio.h>
/* déclaration des variables */
int i, n;
float t, l, p, m, T;
float N[10000], dN[10000];
char val;
FILE* sortie = NULL;
FILE* sortie2 = NULL;
/* bloc d'instructions */
main()
{
printf("RESOLUTION DE L'EQUATION DIFFERENTIELLE DE DECROISSANCE RADIOACTIVE.\n");
/* saisie des données */
printf(" -conditions initiales :\n");
printf(" t0 : ");
scanf("%f", &t);
printf(" N0 : ");
scanf("%f", &N[0]);
printf(" -constante de radioactivite :\n");
printf(" lambda : ");
scanf("%f", &l);
printf(" -pas : ");
scanf("%f", &p);
retour:;
printf(" -nombre de calculs (<10000) : ");
scanf("%d", &n);
if (n>=10000)
{
printf("%d est superieur à 10000\n",n);
goto retour;
}
/* calculs */
printf("\n t dN/dt N\n");
printf(" %f %f %f\n", t, (- l * N[0]), N[0]);
dN[0] = - l * N[0];
for (i=1; i<=n; i++) // routine de calcul, selon
{ // la méthode d'Euler.
T = t + (i * p);
dN[i] = - l * N[i - 1];
N[i] = N[i - 1] + (dN[i] * p) ;
printf(" %f %f %f\n", T, dN[i], N[i]);
}
/* ****************************************************** */
/* sauvegarde des données dans un le fichier donnees.txt */
/* ****************************************************** */
/* demande s'il faut effectuer la sauvegarde */
printf("\n Souhaitez vous sauvegarder ces donnees dans un fichier ? (O/N)\n");
val=getchar(); // attend la saisie d'un caractère
while (val!='o' && val!='O' && val!='n' && val!='N') // vérifie le caractère
{
val=getchar();
}
if (val == 'o' || val=='0')
{
/* ****************************************************** */
/* enregistrement du fichier donnees.txt */
/* ****************************************************** */
sortie = fopen("C:\\donnees.txt", "wt"); //ouvre ou créer le fichier donnees.txt en mode écriture
if (sortie == NULL) //renvoi un message d'erreur si le fichier n'a pas pu être ouvert ou créé
{
printf("\nErreur dans la creation du fichier donnees.txt\n");
return -1;
}
printf("\nle fichier donnees.txt a ete correctement ouvert\n");
printf("enregistrement de donnees.txt...\n");
/* Enregistrement du fichier */
fprintf(sortie, "\n t dN/dt N\n");
fprintf(sortie, " %f %f %f\n", t, (- l * N[0]), N[0]);
for (i=1; i<=n; i++)
{
T = t + (i * p);
dN[i] = - l * N[i - 1];
N[i] = N[i - 1] + (dN[i] * p) ;
fprintf(sortie, " %f %f %f\n", T, dN[i], N[i]);
}
fprintf(sortie,"\n****** FIN DE FICHIER ******\n");
fclose(sortie);
printf("donnees enregistrees !\n");
/* ****************************************************** */
/* enregistrement du fichier courbe.txt */
/* ****************************************************** */
sortie2 = fopen("C:\\courbe.txt", "wt"); //ouvre ou créer le fichier courbe.txt en mode écriture
if (sortie2 == NULL) //renvoi un message d'erreur si le fichier n'a pas pu être ouvert ou créé
{
printf("\nErreur dans la creation du fichier courbe.txt\n");
return -1;
}
printf("\nle fichier courbe.txt a ete correctement ouvert\n");
printf("enregistrement de courbe.txt...\n");
fprintf(sortie2, "%f,%f\n", t, N[0]);
for (i=1; i<=n; i++)
{
T = t + (i * p);
dN[i] = - l * N[i - 1];
N[i] = N[i - 1] + (dN[i] * p) ;
fprintf(sortie2, "%f,%f\n", T, N[i]);
}
fclose(sortie2);
printf("donnees enregistrees !\n");
}
scanf("%f", &m);
return 0;
} |
Partager