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


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


  • ANNUAIRE
  • [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [EN] Astalavista
    Un site aux ressources incontournable depuis plusieurs années, Astalavista est réellement devenue un cl...
    Hacking
    [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [FR] Secuser
    Actualité de la sécurité informatique, fiches virus et hoax, alertes par email, antivirus gratui...
    Hacking
    [EN] Defcon
    Lancé en 1992 par Dark Tangent, DEFCON est la plus ancienne et la plus grande conférence underground de...
    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 En ligne
Éleveur d'ornithorynques
*******



Messages : 1,614
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,702 14-04-2014, 22h21
Dernier message: Dobry
  [C]Un code compréhensible Trivial 5 1,979 26-08-2013, 09h54
Dernier message: Junky
  [C] Une idée de projet pour recommencer? Klepto 31 8,139 13-07-2013, 19h54
Dernier message: Trivial
  [C] Code ASCII InFamouZz 22 5,414 02-07-2013, 19h55
Dernier message: supersnail
  [C-AIDE] Fuzzer De Programme sakiir 2 1,099 16-05-2013, 11h21
Dernier message: Sh4dows
  [AIDE] Ajout d'une Lib en C sakiir 12 2,976 04-05-2013, 21h23
Dernier message: gruik
  [MASM] Extracteur de dll pour Backdoor.Win32.Papras Horgh 10 2,250 25-04-2013, 13h41
Dernier message: Kiwazaru
  [C + Gui] recherche d'une fonction pour listbox api Shark972 2 1,083 30-03-2013, 15h04
Dernier message: Shark972
  [C] Need help pour free en recursif... ark 3 995 27-11-2011, 00h57
Dernier message: walafc0

Atteindre :


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