Process terminated with status -1073741819
Résolu
zakarib
-
zakarib -
zakarib -
Bonjour,
j'ai besoin de votre aide svp. Voilà je suis un débutant en C j'ai voulu écrire un petit programme qui donne une approximation de Pi, mais lors de l'exécution j'ai ce message là "Process terminated with status -1073741819" alors que la compilation c'est bien passé. voilà mon code si ça peut aider: (je le message dès qu je donne le nombre de points c'est à dire à la premiere etape). merci d'avance
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
double dist(double x, double y)
{
double z=0;
z=sqrt( (x)*(x) + (y)*(y) );
return z;
}
int main(void)
{
int n=0;
int i,nb=0;
double x=0,y=0;
printf("donnez un nombre de points : ");
scanf("%d",n);
srand(time(NULL));
for (i=0;i<n;i++) {
x=rand()/(RAND_MAX + 1.0);
y=rand()/(RAND_MAX + 1.0);
if (dist(x,y)<=1) nb++;
};
printf("le nombre Pi est egale à : %lf ",4*(nb/n));
return 0;
}
j'ai besoin de votre aide svp. Voilà je suis un débutant en C j'ai voulu écrire un petit programme qui donne une approximation de Pi, mais lors de l'exécution j'ai ce message là "Process terminated with status -1073741819" alors que la compilation c'est bien passé. voilà mon code si ça peut aider: (je le message dès qu je donne le nombre de points c'est à dire à la premiere etape). merci d'avance
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
double dist(double x, double y)
{
double z=0;
z=sqrt( (x)*(x) + (y)*(y) );
return z;
}
int main(void)
{
int n=0;
int i,nb=0;
double x=0,y=0;
printf("donnez un nombre de points : ");
scanf("%d",n);
srand(time(NULL));
for (i=0;i<n;i++) {
x=rand()/(RAND_MAX + 1.0);
y=rand()/(RAND_MAX + 1.0);
if (dist(x,y)<=1) nb++;
};
printf("le nombre Pi est egale à : %lf ",4*(nb/n));
return 0;
}
A voir également:
- Process terminated with status -1073741510
- Process hacker - Télécharger - Divers Utilitaires
- Tray status - Télécharger - Divers Utilitaires
- Process explorer - Télécharger - Informations & Diagnostic
- Usb device over current status detected ✓ - Forum Virus
- Hidden process finder - Télécharger - Confidentialité
2 réponses
Tu dois écrire : scanf("%d",&n);
Attention aussi à ton nb/n, car nb et n sont des entiers donc le résultat donnera toujours 0 puisque n>nb, il faudrait convertit la division en réels : 4.0*nb/n
De plus pourquoi faire rand()/(RAND_MAX+1.0) ?
Si tu veux un nombre entre 0 et 1, rand()/RAND_MAX suffit, mais attention, même remarque que pour nb/n, rand() et RAND_MAX sont des entiers, alors que tu as besoin d'une division de réels !
Remarque : ton test sqrt((x)*(x)+(y)*(y))<=1 peut se simplifier en x*x+y*y<=1, la racine carrée est totalement inutile ici !
PS. Cette approximation de Pi est marrante, mais elle est loin d'être performante !
Attention aussi à ton nb/n, car nb et n sont des entiers donc le résultat donnera toujours 0 puisque n>nb, il faudrait convertit la division en réels : 4.0*nb/n
De plus pourquoi faire rand()/(RAND_MAX+1.0) ?
Si tu veux un nombre entre 0 et 1, rand()/RAND_MAX suffit, mais attention, même remarque que pour nb/n, rand() et RAND_MAX sont des entiers, alors que tu as besoin d'une division de réels !
Remarque : ton test sqrt((x)*(x)+(y)*(y))<=1 peut se simplifier en x*x+y*y<=1, la racine carrée est totalement inutile ici !
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> int main() { int i,n,nb; double x,y; srand(time(NULL)); printf("donnez un nombre de points : "); scanf("%d",&n); for (i=0, nb=0; i<n; i++) { x = (double) rand()/RAND_MAX; y = (double) rand()/RAND_MAX; if (x*x+y*y <= 1) nb++; } printf("le nombre Pi est environ egal a : %f ",4.0*nb/n); return 0; }
PS. Cette approximation de Pi est marrante, mais elle est loin d'être performante !
bonsoir,
je suis pas un bon programmeur en C, mais, en effet, la compilation se passe sans problème, mais quand à l'exécution, le programme se plante quand on donne l'entier n.
alors, on peut déduire que c'est une erreur programme et pas environnement.
je suis pas un bon programmeur en C, mais, en effet, la compilation se passe sans problème, mais quand à l'exécution, le programme se plante quand on donne l'entier n.
alors, on peut déduire que c'est une erreur programme et pas environnement.
PS : oui ta raison l'approximation est peu performante mon but c'est l'écriture en C pas la recherche d'une bonne approximation, quoique on arrive à une bonne approximation avec seulment 1000 points ce qui est déjà bien :)
Avec n=1000 on arrive à des résultats entre 3.04 et 3.23, ce n'est pas du tout ce que j'appelle une bonne approximation. Pour information, les meilleurs algorithmes (que je connaisse) doublent le nombre de décimales exactes à chaque itération, c'est à dire que pour n=30, on connait plus de 1 milliards de chiffres après la virgule ! Alors je te laisse imaginer ce que ça donne pour n=1000, et compare avec ton algorithme ;-)