• STATISTIQUES
  • Il y a eu un total de 1 membres et 12419 visiteurs sur le site dans les dernières 24h pour un total de 12 420 personnes!


    Membres: 2 433
    Discussions: 3 585
    Messages: 32 831
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking
    [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking
    [EN] Dare your mind
    JavaScript: 6, Crypto: 44, Stegano: 36, Logic: 13, Special: 27, Science: 11, Realistic: 7, Programming: 10, Crack It: 6,...
    Challenges
    [FR] Kalkulators
    Ce projet a plusieurs buts, le premier étant l’étude de toutes formes cryptographiques, le cot&ea...
    Cryptographie
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C] Besoin d'aide pour débugger mon code
20-03-2013, 20h59 (Modification du message : 22-03-2013, 01h12 par Polo.)
Message : #1
Polo Hors ligne
Benêt en chef
*



Messages : 110
Sujets : 4
Points: 25
Inscription : Mar 2013
[C] Besoin d'aide pour débugger mon code
+1 (0) -1 (0) Répondre
20-03-2013, 21h13 (Modification du message : 20-03-2013, 21h19 par supersnail.)
Message : #2
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,613
Sujets : 72
Points: 466
Inscription : Jan 2012
RE: [C] Besoin d'aide pour débugger mon code
Bonjour,

Déjà
Code :
&Phi[i]
ça te renvoie l'adresse en mémoire de la valeur Phi[i]: donc là tu affiches à l'écran l'adresse de ton pointeur interprété comme un double par printf :')

Un
Code C :
 printf("%le", Phi[i]);
suffirait ici Wink

Enfin (remarque purement "esthétique"), vaut mieux allouer avec malloc un tableau d'une certaine taille, et le réallouer que lorsque ça "déborde" plûtot que de realloc à chaque fois qu'on veut rajouter un truc du temps (realloc ça peut pomper au niveau perfs, donc autant en réduire l'usage Wink )

Edit: erreur du pow corrigée (ou presque) :')
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
20-03-2013, 22h03 (Modification du message : 20-03-2013, 22h03 par Polo.)
Message : #3
Polo Hors ligne
Benêt en chef
*



Messages : 110
Sujets : 4
Points: 25
Inscription : Mar 2013
RE: [C] Besoin d'aide pour débugger mon code
Merci pour toutes ces remarques je vais commencer par corriger tout ça Smile

Concernant mon epsilon j'ai corrigé l'erreur (cf en bas de mon premier post) c'était une erreur d'étourderie, comme bien souvent ^^

Par contre concernant ta remarque "estéthique", qui serait apparemment une solution à l'erreur que j'ai avec realloc (cf en bas du premier post ... ), j'en ai tenu compte et j'ai modifié mon code comme ceci :
Code C :

int main()
{
    double L = 1.00552653648, e = 0.08199188998;
    float pi = 3.141592654;
    int i = 10, n = 0; // n sert de compteur dans la boucle et i définit la taille de base du tableau de Phi
    double x = pow(10, -11);

    double *Phi = malloc(i * sizeof(double));
    if (Phi == NULL)
        exit(2);

    Phi[0] = 2 * atan( exp(L) ) - pi/2;
    printf("%le \n", Phi[0]);
    do
    {
        n++;
        if(sizeof(Phi) >= n) // si ça commence à déborder...
        {
            i += 10; // on en rajoute 10 d'un coup ...
            Phi = realloc(Phi, i * sizeof(double));
            if (Phi == NULL)
                exit(3);
        }


       // on continue ...

        Phi[i] = log( tan((pi/4) + (L/2)) * pow( ((1-e*sin(L)) / (1+e*sin(L))), e/2 ) );

        printf("%le", Phi[i]);

    } while(abs(Phi[i]-Phi[i-1]) < x); // tant que notre marge d'erreur n'est pas atteinte, on continue...

    //double Phi_f = Phi[i];

    free(Phi); // on libère la place en mémoire

    return 0;
}
 


Donc ça marche déjà mieux (façon de parler), mais je n'ai toujours pas les bons résultats ; j'obtiens ceci :
Code :
8.69343e-01
1.230778e+00

Donc là je comprends pas car il est apparement arrivé à la fin de la boucle et ... j'ai pas ce que je devrais avoir (cad : 0.872 664 626 00) oO
Correction : il est bien arrivé à la fin de la boucle mais n'itère qu'une seule fois... Je vais chercher pourquoi (vous pouvez vous aussi hein Tongue )...
+1 (0) -1 (0) Répondre
22-03-2013, 01h00 (Modification du message : 22-03-2013, 01h00 par notfound.)
Message : #4
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 272
Inscription : Sep 2012
RE: [C] Besoin d'aide pour débugger mon code
Je passe vite fait ! J'ai regardé 2 secondes ton truc, t'as FAIL au niveau de :

Code C :

 printf("%le", Phi[i]);
/* J'ai remplacé par %f par exemple */
 


Le résultat m'a l'air cohérent au détail près que :
Code BASH :

┌ NotFound@Debian_squeeze:/tmp$
└→  ./a.out
Résultat : 0.040996
 


Je n'obtiens que la moitié du résultat (0.040996 * 2 = 0,081991)
En espérant t'avoir aidé un minimum

Hackmicalement
+1 (0) -1 (0) Répondre
22-03-2013, 01h08 (Modification du message : 22-03-2013, 01h08 par Polo.)
Message : #5
Polo Hors ligne
Benêt en chef
*



Messages : 110
Sujets : 4
Points: 25
Inscription : Mar 2013
RE: [C] Besoin d'aide pour débugger mon code
Merci de ces conseils Smile

Hier MacYavel m'a apporté beaucoup d'aide sur IRC, et on a finalement réussit à aboutir à ce code (ça peut peut-être intéresser qqun Tongue ) :
Code C :

int main ()
{
    double L = 1.00552653648, e = 0.08199188998;
    double pi = 3.141592654;
    double x = 1e-11;
    double a, b = 0;

    b = 2 * atan( exp(L) ) - pi/2;

    do {

    a = b;
    // formule secondaire de calcul de b :
    // b = log( tan((pi/4) + (L/2)) * pow( ((1+e*sin(a)) / (1-e*sin(a))), e/2 ) );
    b = 2*atan( pow( ((1+e*sin(a)) / (1-e*sin(a))), e/2 ) * exp(L)) - pi/2;


    } while(abs(a-b) > x);

    printf("%le", b);
    return b;
}
 


Ce code est normalement fonctionnel. Smile
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [ASM] Interruption 2d, détection d'un debugger Dobry 5 1,700 14-04-2014, 22h21
Dernier message: Dobry
  [C]Un code compréhensible Trivial 5 1,978 26-08-2013, 09h54
Dernier message: Junky
  [C] Une idée de projet pour recommencer? Klepto 31 8,120 13-07-2013, 19h54
Dernier message: Trivial
  [C] Code ASCII InFamouZz 22 5,406 02-07-2013, 19h55
Dernier message: supersnail
  [C-AIDE] Fuzzer De Programme sakiir 2 1,097 16-05-2013, 11h21
Dernier message: Sh4dows
  [AIDE] Ajout d'une Lib en C sakiir 12 2,970 04-05-2013, 21h23
Dernier message: gruik
  [MASM] Extracteur de dll pour Backdoor.Win32.Papras Horgh 10 2,235 25-04-2013, 13h41
Dernier message: Kiwazaru
  [C + Gui] recherche d'une fonction pour listbox api Shark972 2 1,081 30-03-2013, 15h04
Dernier message: Shark972
  [C] Need help pour free en recursif... ark 3 994 27-11-2011, 00h57
Dernier message: walafc0

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut