• STATISTIQUES
  • Il y a eu un total de 0 membres et 27901 visiteurs sur le site dans les dernières 24h pour un total de 27 901 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Kalkulators
    Ce projet a plusieurs buts, le premier étant l’étude de toutes formes cryptographiques, le cot&ea...
    Cryptographie
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités
    [EN] Hack This Site
    Hack This Site est considéré comme un réel terrain d'entraînement légal pour le...
    Hacking
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    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,609
Sujets : 71
Points: 465
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: 271
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 317 14-04-2014, 22h21
Dernier message: Dobry
  [C]Un code compréhensible Trivial 5 610 26-08-2013, 09h54
Dernier message: Junky
  [C] Une idée de projet pour recommencer? Klepto 31 1,881 13-07-2013, 19h54
Dernier message: Trivial
  [C] Code ASCII InFamouZz 22 1,195 02-07-2013, 19h55
Dernier message: supersnail
  [C-AIDE] Fuzzer De Programme sakiir 2 212 16-05-2013, 11h21
Dernier message: Sh4dows
  [AIDE] Ajout d'une Lib en C sakiir 12 586 04-05-2013, 21h23
Dernier message: gruik
  [MASM] Extracteur de dll pour Backdoor.Win32.Papras Horgh 10 551 25-04-2013, 13h41
Dernier message: Kiwazaru
  [C + Gui] recherche d'une fonction pour listbox api Shark972 2 215 30-03-2013, 15h04
Dernier message: Shark972
  [C] Need help pour free en recursif... ark 3 243 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