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 :

Compilation mais bug à l'execution


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut Compilation mais bug à l'execution
    Bonjour,

    A la compilation, dev c++ ne me retroune pas d'erreur et pourtant à l'execution le programme bug, je ne sais pas d'où cela peut-il bien provenir ! peut être que c'est un problème de mémoire enfin je sais pas !
    Tout ce que je peux vous dire c'est que dès le début du programme quelque chose ne marche pas. j'ai mis chaque ligne en partant de la fin en commentaire pour arriver au début du code et cela bug mais je ne vois pas l'erreur surement un truc de noob ne fois de plus !

    Voici 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
    #include <stdlib.h>
    #include <stdio.h>
     
    int main (void)
    {
     
        float pas=0.1;
        int i=1,j=0,k=1;
        float x,y,r;
        float dAP[1365][610], dBP[1365][610], dCP[1365][610];
        float precision=0.00001;
     
        for (i;i<=1365;i++)
            {
                           for (j;j<=610;j++)
                               {
                                             x=i*pas*cos(60);
                                             r=x/cos(j*pas);
                                             y=r*sin(j*pas);
     
                                             dAP[i][j]=sqrt(x*x+y*y);
                                             dBP[i][j]=sqrt((x-273)*(x-273)+y*y);
                                             dCP[i][j]=sqrt((x-136,5)*(x-136,5)+(y-273*sin(60))*(y-273*sin(60)));
     
                                             for (k;k<=1365;k++)
                                                 {
                                                                if (     ( ((k-precision)<=dAP[i][j] )&&( (k+precision)>=dAP[i][j]) ) 
                                                                       &&( ((k-precision)<=dBP[i][j] )&&( (k+precision)>=dBP[i][j]) ) 
                                                                       &&( ((k-precision)<=dCP[i][j] )&&( (k+precision)>=dCP[i][j]) )     )
     
                                                                   {
                                                                       printf("dAP=%f\n",dAP[i][j]);
                                                                       printf("dAP=%f\n",dBP[i][j]);
                                                                       printf("dAP=%f\n",dCP[i][j]);
                                                                       getch();
                                                                   }
     
     
                                                             else  {
                                                                       printf("r=%f, x=%f, y=%f, dAP=%f, dBP=%f, dCP=%f FAILURE\n",r,x,y,dAP[i][j],dBP[i][j],dCP[i][j]);
                                                                   }
                                                 }
     
                               }
            }
     
    }
    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Citation Envoyé par darkwall_37 Voir le message
    A la compilation, dev c++ ne me retroune pas d'erreur et pourtant à l'execution le programme bug, je ne sais pas d'où cela peut-il bien provenir !
    La compilation et l'exécution sont deux choses complètement différentes. Si l'on prend l'erreur la plus classique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char * p_char;
    p_char = NULL;
    char character = *p_char;
    La compilateur ne va absolument rien te dire car pour lui, tout est correcte. Mais quand tu vas executer .. ca va crasher . 90% des crashs d'un executable, en C++, provienne de pointeur NULL..

  3. #3
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Dans ton cas, je pencherais pour un mauvais parcours de tes tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    float dAP[1365][610];
     
    for (i = 0;i<1365;i++)
    {
        for (j = 0;i<610;i++)     
        {
            ///.. dAP[i][j] ...
        }
    }
    Pour rappel, les index d'un tableau vont de 0 à n-1 .. pour un tableau de taille n.

    Pense à réinitialiser tes index de tes boucles for, car nottemment pour le j, rien n'indique qu'elle doit recommencer à zero

  4. #4
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    Pourtant au début j'ai initialisé i et j respectivement à 1 et 0.
    J'ai quand même fais les modifications proposées mais cela ne change pas !
    j'ai toujours ce satané "ne pas envoyer"!

    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
    int main (void)
    {
     
        float pas=0.1;
        int i=1,j=0,k=1;
        float x,y,r;
        float dAP[1366][611], dBP[1366][611], dCP[1366][611];
        float precision=0.00001;
     
        for (i=1;i<=1365;i++)
            {
                           for (j=0;j<=610;j++)
                               {
                                             x=i*pas*cos(60);
                                             r=x/cos(j*pas);
                                             y=r*sin(j*pas);
     
                                             dAP[i][j]=sqrt(x*x+y*y);
                                             dBP[i][j]=sqrt((x-273)*(x-273)+y*y);
                                             dCP[i][j]=sqrt((x-136,5)*(x-136,5)+(y-273*sin(60))*(y-273*sin(60)));
     
                                             for (k=1;k<=1365;k++)
                                                 {
                                                                if (     ( ((k-precision)<=dAP[i][j] )&&( (k+precision)>=dAP[i][j]) ) 
                                                                       &&( ((k-precision)<=dBP[i][j] )&&( (k+precision)>=dBP[i][j]) ) 
                                                                       &&( ((k-precision)<=dCP[i][j] )&&( (k+precision)>=dCP[i][j]) )     )
     
                                                                   {
                                                                       printf("dAP=%f\n",dAP[i][j]);
                                                                       printf("dAP=%f\n",dBP[i][j]);
                                                                       printf("dAP=%f\n",dCP[i][j]);
                                                                       getch();
                                                                   }
     
     
                                                             else  {
                                                                       printf("r=%f, x=%f, y=%f, dAP=%f, dBP=%f, dCP=%f FAILURE\n",r,x,y,dAP[i][j],dBP[i][j],dCP[i][j]);
                                                                   }
                                                 }
     
                               }
            }
     
    }

  5. #5
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Citation Envoyé par darkwall_37 Voir le message
    Pourtant au début j'ai initialisé i et j respectivement à 1 et 0.
    Y a t'il une raison particulière de faire commencer ton i et ton k par 1 ??


    Citation Envoyé par darkwall_37 Voir le message
    J'ai quand même fais les modifications proposées mais cela ne change pas !
    j'ai toujours ce satané "ne pas envoyer"!
    Qu'est que ton "ne pas envoyer" ???? Ton problème est un problème d'exécution genre crash ou "segmentation fault" ? ou un problème de comportement de ton code, il ne fait pas ce que tu veux ?

  6. #6
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    Ce programme est censé me trouvé les points appartenant à un triangle equilateral de coté 273 dont les distances aux trois sommets sont entières.
    J'opère dans le demi triangle equilatéral et puis par symétrie ...

    A la base si mais maintenant que j'y refléchis plus il faudrait que cela demarre à 0 : mauvais calcul de ma part ! donc i et k seront initialisés à 0 finalement !

    Quant au "ne pas envoyer" c'est l'erreur windows qui demande si l'on veut leur envoyer un rapport, et ne me dites pas que vous ne l'avez jamais eu cette erreur !

    En gros dès l'execution, l'invite apparait mais j'ai de suite après le rapport de windows comme quoi le programme a rencontré un problème et doit fermer. "Nous vous prions de nous excuser pour le désagrément encouru."
    Puis demande si l'on veut envoyer le rapport d'erreur ou non !

    J'ai bien répondu à votre question ?


    cordialement

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

Discussions similaires

  1. Paquetage bien compilé mais non executé.
    Par Flodelarab dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/12/2008, 20h23
  2. Réponses: 8
    Dernier message: 24/08/2007, 11h18
  3. dll qui compile mais qui bloque en appel
    Par darkman10 dans le forum Windows
    Réponses: 7
    Dernier message: 09/05/2006, 15h02
  4. Réponses: 4
    Dernier message: 08/01/2006, 18h26
  5. Réponses: 2
    Dernier message: 23/09/2003, 14h32

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