Page 120 of 190

Re: La Bombe !

Posted: Sun Feb 27, 2011 6:18 pm
by Tenderz
2953??

Re: La Bombe !

Posted: Sun Feb 27, 2011 7:21 pm
by LoveMetal
Yihaa, et une page entière de C !
jeuDeLaBombe(*pointeurNumber, 1)

Re: La Bombe !

Posted: Sun Feb 27, 2011 8:59 pm
by PluMGMK
Euh, arrêtons pendant un moment. La fonction ajoute 2902 et "antiDessy", oui ? Comment est-ce supposé marcher si "antiDessy" est remis à 0 chaque fois que la fonction est appelé ? Je suppose que j'ai mal compris, mon C/C++ n'est pas très avancé.

Sinon, 2955.

Re: La Bombe !

Posted: Sun Feb 27, 2011 9:21 pm
by DesLife
2956 ! :D

Re: La Bombe !

Posted: Sun Feb 27, 2011 9:29 pm
by PluMGMK
2957

Re: La Bombe !

Posted: Sun Feb 27, 2011 11:08 pm
by LoveMetal
PluMGMK wrote:Euh, arrêtons pendant un moment. La fonction ajoute 2902 et "antiDessy", oui ? Comment est-ce supposé marcher si "antiDessy" est remis à 0 chaque fois que la fonction est appelé ? Je suppose que j'ai mal compris, mon C/C++ n'est pas très avancé.
Regardes bien, antiDessy n'est pas remis à 0, il est juste initialisé, c'est realNumber qui vaut 0. Cependant, il se peut qu'il y ait une p'tite erreur dans le code, je ne suis pas allé le compiler. Mais normalement ça devrait marcher.
jeuDeLaBombe(*pointeurNumber, 3);

Re: La Bombe !

Posted: Sun Feb 27, 2011 11:36 pm
by PluMGMK
Je l'ai compilé et je reçois le même résultat chaque fois que j'appele la fonction, mais c'est différent chaque fois que je ferme et réouvre la programme.

Ceci marcherait peut-être plus bien :

- main.c :

Code: Select all

#include "main.h"

int main()
{
     const int number = 2958;
     int *pointeurNumber = &number;
}

void jeuDeLaBombe(int *pointeurNumber, int NombreDeMessagesSansNumber)
{
     int realNumber = 0;
     for(NombreDeMessagesSansNumber; NombreDeMessagesSansNumber == 1 /* Avec 0, la fonction comptait deux à deux */; NombreDeMessagesSansNumber--)
     {
          antiDessy++;
     }
     realNumber = *pointeurNumber + antiDessy;
     antiDessy++;
     printf("%d", realNumber);
}
- main.h :

Code: Select all

#ifndef DEF_MAIN
#define DEF_MAIN

int antiDessy = 0;
void jeuDeLaBombe(int *pointeurNumber, int NombreDeMessagesSansNumber);

#endif

Code: Select all

jeuDeLaBombe(pointeurNumber, 1)

Re: La Bombe !

Posted: Mon Feb 28, 2011 12:04 am
by DesLife
LOVY EST UN LOSER.

2960 !

Re: La Bombe !

Posted: Mon Feb 28, 2011 1:54 am
by LoveMetal
PluMGMK wrote:Ceci marcherait peut-être mieux :

- main.c :

Code: Select all

#include "main.h"

int main()
{
     const int number = 2958;
     int *pointeurNumber = &number;
}

void jeuDeLaBombe(int *pointeurNumber, int NombreDeMessagesSansNumber)
{
     int realNumber = 0;
     for(NombreDeMessagesSansNumber; NombreDeMessagesSansNumber == 1 /* Avec 0, la fonction comptait deux à deux */; NombreDeMessagesSansNumber--)
     {
          antiDessy++;
     }
     realNumber = *pointeurNumber + antiDessy;
     antiDessy++;
     printf("%d", realNumber);
}
- main.h :

Code: Select all

#ifndef DEF_MAIN
#define DEF_MAIN

int antiDessy = 0;
void jeuDeLaBombe(int *pointeurNumber, int NombreDeMessagesSansNumber);

#endif
Merci pour l'amélioration du comptage 2 à 2, j'avais pas fais gaffe (pour tout à fait être honnête, je ne savais même pas que ça allait le faire), mais sinon ton programme a quelques petits défauts :
- les variables dans les headers : c'est sale. Ça marche mais c'est sale : quand on met du code dans les headers, en général c'est uniquement les prototypes, les constantes, les defines et les structures. Si tu met une variable dans un header, ça devient une variable globale, une saloperie qu'il faut éviter à tout prix. Les pointeurs sont fait pour ça.
- antiDessy n'est plus initialisé dans la fonction. Si je l'avais fait, c'était le but de ce programme, pour que DesLife ne la réinitialise pas à zéro à chaque post. En plus tu le fais par toi même en l'initialisant à zéro à chaque exécution du programme ^^. Mais bon apparement il ne l'a pas vu, donc chut :mrgreen:
PluMGMK wrote:Je l'ai compilé et je reçois le même résultat chaque fois que j'appele la fonction, mais c'est différent chaque fois que je ferme et réouvre la programme.
Une petite explication s'impose :

Je suppose que tu le sais déjà, mais un rappel ne fait pas de mal : chaque variable est une valeur stockée dans la RAM à une adresse qui lui est propre. Un shéma :

Image

Et ça stocke comme ça :
- Imaginons que tu ouvres le programme du jeu de la bombe (je vais prendre ma version, tu vas voir pourquoi je ne prends pas la tienne).
- On arrive à la fonction jeuDeLaBombe. On initialise antiDessy à l'adresse n°1 (on va dire que tu n'a fait aucun programme avant donc l'ordinateur te donne l'accès à la première adresse), et la valeur par défaut est 0. Bon, le programme s'est déroulé normalement, ça a compté comme il faut, et maintenant antiDessy vaut 1 (pour 1 appel de fonction).
- Tu fais autre chose (disons que tu joue à Medal of Duty:Modern Dawn of War 8), donc ce programme utilise obligatoirement des variables, qu'il stocke à des adresses (logique).
- Tu reviens à mon programme, tu le lance, et arrivé à la fonction jeuDeLaBombe, on reinitialise la variable antiDessy. Seulement voilà, on ne vas pas te redonner l'ancienne variable, on va t'en donner soit une nouvelle (dans ce cas sa valeur sera 0), soit on réutilise une fonction usagée de Medal of Duty qui aura une valeur quelconque (puisque je n'ai pas initialisé antiDessy), donc ton programme sera faussé.

Donc que ce soit ton programme (antiDessy est initialisé à zéro à chaque lancement, et il est placé à un point où de toutes façons, DesLife pourrait quand même le modifier), ou le mien (il utilise une variable non initialisée qui prend la valeur de ce qui passe), il y a un défaut, et réaliser un programme qui compterait et empêcherait Des de réinitialiser n'existe pas (évidemment sinon ça serait le modèle même d'ordinateur parfait, il n'y aurait plus aucun virus).

Mais, en fait mon programme peut réussir cette tâche, si on le met sur un ordinateur qui utiliserait ce programme et aucun autre (ce qui est un peu con, puisqu'il n'y aurait même pas de système d'exploitation). Pourquoi ? Parce que vu qu'aucun programme ne tourne à part celui ci, on nous donnerait toujours la même adresse, donc on se trouverait bien avec une variable qui se modifierait à chaque tour du programme. Cependant, tu as quand même réglé le problème du compteur qui faisait son boulot 2 par 2.

CQFD :mrgreen:

Et je viens de remarquer qu'on avait presque tout le temps oublié le ';' à la fin de nos instructions :mrgreen: .

Donc voici le code final du programme, qui marcherait sur un serveur FTP dédié (ou plutôt machine virtuelle, les serveurs ont un système d'exploitation) :

main.c :

Code: Select all

    #include "main.h"

    int main()
    {
         const int number = 2902;
         int *pointeurNumber = &number;
    }

    void jeuDeLaBombe(int *pointeurNumber, int NombreDeMessagesSansNumber)
    {
         int antiDessy, realNumber = 0;
         for(NombreDeMessagesSansNumber; NombreDeMessagesSansNumber == 1; NombreDeMessagesSansNumber--)
         {
              antiDessy++;
         }
         realNumber = number + antiDessy;
         antiDessy++;
         printf("%d", realNumber);
    }
main.h :

Code: Select all

    #ifndef DEF_MAIN
    #define DEF_MAIN

    int antiDessy = 0;
    void jeuDeLaBombe(int *pointeurNumber, int NombreDeMessagesSansNumber);

    #endif
jeuDeLaBombe(*pointeurNumber, 1);
DesLife wrote:LOVY EST UN LOSER.
Merci pour les tings :mrgreen:

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:15 am
by Matyuv
2962 or something.

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:20 am
by DesLife
2963 ou quelque chose.

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:21 am
by Matyuv
2964, what? English please.

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:24 am
by DesLife
2965, quoi ? En français s'il te plaît.

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:25 am
by Matyuv
2966, whatever!

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:27 am
by DesLife
2967, quoi qu'il en soit !

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:31 am
by Matyuv
2968 :mefiant:

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:32 am
by DesLife
2969 :mefiant:

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:36 am
by Matyuv
2970, damn it.

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:37 am
by DesLife
2971, bordel de merde.

Re: La Bombe !

Posted: Fri Mar 04, 2011 12:39 am
by Matyuv
You better stop copying me or I'll take a billion tings from you! 2972! :pascontent: