IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

"a cessé de fonctionner"


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut "a cessé de fonctionner"
    Bonjour à tous.

    Me revoilà avec une nouvelle question.
    Je travaille sur des projets sous code ::blocks version 8.02, système d'exploitation windows vista (I know this is daube :s), dont les programmes main.c utilisent des fonctions random.

    Ces fonctions random sont dans une boucle for , jusqu'à N points.

    Pour certains programmes : lorsque le N points devient trop important, en lançant la compilation j'obtiens => "main.exe a cessé de fonctionner", puis plus rien.

    Pour d'autres ,même en diminuant fortement N (voire, réduit à 10), j'obtiens "main.exe a cessé de fonctionner".

    Savez-vous d'où cela provient, et que pourrais-je faire pour éviter cela et avoir des programmes qui compilent?

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Je pense qu'avec ton code on pourrais t'aider, mais sans ça me paraît compliqué
    Plus tu pédales moins fort, moins t'avances plus vite.

  3. #3
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Le problème c'est évidemment que ton code est buggé, il ne peut y avoir d'autre raison. Dommage qu'on ne peut pas le voir pour le corriger ...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Ah oui, bien sûr ^^ .
    Voilà le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
     
    main ()
    {
     
    int rm1_max, N1, i, Nt, eps;
    double Veff, Veff_t, abs_rs1, abs_rs2,V_espace,xs[Nt], ys[Nt], zs[Nt], xdiff;
     
     
    srand(time(NULL));
    Nt=100;
    rm1_max=10;
    V_espace=2.0*rm1_max*2.0*rm1_max*4.0*rm1_max;
     
    /* eps est la largeur du recouvrement; quand eps=2rm il y a recouvrement total, et pour eps=0 il ny a pas de recouvrement*/
    /*eps peut varier de 0 à 2rm1_max*/
    eps=0;
     
    N1=0; xdiff=4.0*rm1_max-eps;
     
    	for (i=0; i<=Nt; ++i){
    /* on lance les "cailloux" dans le volume totale*/
     
        xs[i]=-2.0*rm1_max + (((double) rand() / RAND_MAX) * 4.0 * rm1_max);
        ys[i]=-rm1_max + (((double) rand() / RAND_MAX) * 2.0 * rm1_max);
        zs[i]=-rm1_max + (((double) rand() / RAND_MAX) * 2.0 * rm1_max);
     
    /* on retranche pour que le zero soit au centre du systeme*/
     
    /* abs_rs1 est la distance entre la source et lhydrophone 1 qui se trouve initialement aux coordonnees x=-rm1_max, y=rm1_max et z=rm1_max*/
    /*au fur et a mesure que eps augmente, le centre des deux hydrophones se déplace de +eps/2 pour H1 en -rm1_max et -eps/2 pour H2 en +rm1_max*/
    	abs_rs1=sqrt((xs[i]-(-rm1_max+(eps/2.0)))*(xs[i]-(-rm1_max+(eps/2.0)))+ys[i]*ys[i]+zs[i]*zs[i]);
    	abs_rs2=sqrt((xs[i]-rm1_max-(eps/2.0))*(xs[i]-rm1_max-(eps/2.0))+ys[i]*ys[i]+zs[i]*zs[i]);
     
     
    	/* Simple signal*/
    	/*if (abs_rs1<=rm1_max && abs_rs2<=rm1_max)*/
    	{N1=N1+1;}
     
    Veff=V_espace*N1/Nt;
    printf("N1: %d \n", N1);
    printf("V1eff %lf \n", Veff);
     
    }
    }
    Fichiers attachés Fichiers attachés
    • Type de fichier : c main.c (1,5 Ko, 129 affichages)

  5. #5
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Regarde tes déclarations et dis moi si ça te paraît correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int rm1_max, N1, i, Nt, eps;
    double Veff, Veff_t, abs_rs1, abs_rs2,V_espace,xs[Nt], ys[Nt], zs[Nt], xdiff;
    Tu initialises des tableaux avec une variable non initialisée !
    De plus je te déconseille de faire comme ça (les non adeptes du C99 vont te sauter dessus )

    Fais un '#define Nt ' avec une valeur que tu auras définie, ou alors utilises l'allocation dynamique
    Plus tu pédales moins fort, moins t'avances plus vite.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Oui super!
    Avec le programme compile!
    Merci encore.

    ps : Je ne vous assure pas que je ne reviendrais pas pour d'autres questions, mais à l'avenir pour introduire des constante, je sais qu'il faudra utiliser #define

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ''explorateur exe a cessé de fonctionner ''
    Par bibiou dans le forum Windows Vista
    Réponses: 6
    Dernier message: 05/07/2008, 15h16
  2. Réponses: 1
    Dernier message: 31/08/2007, 13h19
  3. explorateur windows a cessé de fonctionner
    Par jeanmorel dans le forum Windows Vista
    Réponses: 3
    Dernier message: 09/07/2007, 21h02
  4. [D7] Appli qui "a cessé de fonctionner" sous certains Vista
    Par david_chardonnet dans le forum Delphi
    Réponses: 2
    Dernier message: 03/07/2007, 15h59
  5. Fonction Quoted printable qui ne fonctionne pas.
    Par leCcsympas dans le forum C
    Réponses: 3
    Dernier message: 13/01/2007, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo