[c] énigme ....

Résolu/Fermé
Maxg59 Messages postés 275 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 7 octobre 2006 - 20 juin 2006 à 22:58
LAVACHENENETTE Messages postés 1 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 20 juin 2008 - 20 juin 2008 à 16:44
Salut !
Je voudrais résoudre une énigme mathématique en faisant un programme en C... le probléme, c'est que mon prog ne marche pas !
voici l'énigme :
Vous êtes face à une grande rangée de 12486 diodes bleues.
Au début, seule celle située complètement à gauche est allumée. Ensuite, toutes les secondes, l'opération suivante est réalisée:
Chaque diode change d'état si et seulement si celle située à sa gauche était allumée une seconde avant.
La diode située le plus à gauche reste allumée tout le temps. Le processus s'arrête lorsque la diode située à l'extrémité droite s'allume pour la première fois.
Combien de diodes sont alors allumées ? 

voici mon code :
#include <stdio.h>
#include <stdlib.h>

#define ALLUME 1
#define ETEIN 0
#define MAX 12486
int main(void)
{
    long i=0;
    int diodes[MAX];
    int dim1[MAX];
    int x=0,y=0,z=0,nb=0;
    
    for(x=0;x!=MAX;++x){
                       diodes[x]=0;
                       dim1[x]=0;}
    diodes[0]=ALLUME;
    dim1[0]=ALLUME;
    while(diodes[12485] != ALLUME)
                        {
                                  z=0;
                                 while(z!=12486)
                                 {
                                           if(z!=0 && dim1[z-1] == ALLUME)
                                           {
                                                   if(diodes[z] == ALLUME)
                                                                diodes[z] = ETEIN;
                                                   if(diodes[z] == ETEIN)
                                                             diodes[z] = ALLUME;
                                           }
                                           ++z;
                                 }
                                 for(x=0; x<= 12486;++x)
                                     dim1[x] = diodes[x];
                                  
                                  
                        }
    while(y!=12486)
    {
                   if(diodes[y] == ALLUME)
                                ++nb;
     ++y;
     }                
     printf("%d\n", nb);                                 
    system("pause");
}
    

Merci à ceux qui auront le courage de lire et de m'aider ;) !
Merci !

22 réponses

Maxg59 Messages postés 275 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 7 octobre 2006 27
3 juil. 2006 à 09:32
Ok, merci !
je vais pouvoir partir en vacances l'esprit trankil ;)
0
LAVACHENENETTE Messages postés 1 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 20 juin 2008
20 juin 2008 à 16:44
kikou reponse 56 DE CHRISTOPHE JE BUTE DEPUIS PLUS 1 HEURE
0