boucle for qui plante ?? tab[i2] et non tab[ib] ou Recep_bruteb[ib]
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

boucle for qui plante ?? tab[i2] et non tab[ib] ou Recep_bruteb[ib]



  1. #1
    forumfutura

    boucle for qui plante ?? tab[i2] et non tab[ib] ou Recep_bruteb[ib]


    ------

    Bonjour à tous,

    Quelqu'un peut me dire pourquoi est ce que ma boucle for suivant ne s'exécute pas jusqu'à la fin?

    La boucle s'exécute que 2 fois et après le programme s'arrête.

    l'affichage me donne : 0 puis 1 ; preuve que la boucle s'exécute une fois, puis une deuxième fois et puis le programme s'arrête.

    l'affiche de toute les cases des var_N°[ 0] , premier ou dernier donne 0 alors que tab[i] est bien plein (plus de 50 caractères ) et les et tout les éléments recherché sont dedans

    Mer pour votre aide





    Code:
    for(ib=0 ; ib <= i ; ib++)                                
                  { 
      print( ib);   // affichage du nombre de fois 
                    
                    switch(tab[ib])                              
                          {
                           case '[':                                    
                                                                   
                                    Premier = tab[ib];  
    
                                   i2=ib;  
                                   i2++;                        
                                   i3=0; 
                                    
                                   while( tab[i] != 'F' )         
                                         {
                                           Var_1[i3] = tab[i2];
                                           i3++
                                           i2++;                                
                                         }
                                     break;
    
                          case 'L': 
                                   i2=ib;  
                                   i2++;                        
                                   i3=0;                                                          
        
                                   while(tab[i2] != 'F' )         
                                         {                                      
                                           var_2[i3]=tab[i2];
                                           i3++;
                                           i2++;                                
                                         }
                                    break;                         
                         
                          case 'Q': 
                                   i2=ib;  
                                   i2++;                        
                                   i3=0;                           
                                   
                                   while(tab[i2] != 'F' )         
                                        {
                                          var_3[i3]=tab[i2];
                                          i3++;
                                          i2++;                                
                                        }
                                    break;   
                             
                          case 's': 
                                   i2=ib;  
                                   i2++;                        
                                   i3=0;  
        
                                   while(tab[i2] != 'F' )         
                                        {
                                          var_4[i3]=tab[i2];
                                          i3++;
                                          i2++;                                
                                        }
                                   break;                          
                             
                             
                          case 'T':                                                      
                                   i2=ib;  
                                   i2++;                        
                                   i3=0; 
    
                                   while(tab[i2] != '/' )         
                                        {
                                          var_5[i3]=tab[i2];
                                          i3++;
                                          i2++;                                
                                        }
                                   break; 
                           
                           case ']':                                      
                                   Dernier = 1;                                   
    
                                   break;
                     }

    -----
    Dernière modification par yoda1234 ; 02/03/2012 à 05h07.

  2. #2
    invite4492c379

    Re : boucle for qui plante ?? tab[i2] et non tab[ib] ou Recep_bruteb[ib]

    Hello,

    Ton code est illisible (merci de rajouter des balises code et d'indenter le code).
    Ton code est incomplet pour un diagnostique, que vaut i avant la boucle ?
    Il y a une possibilité de boucle infinie sur le premier while.

  3. #3
    polo974

    Re : boucle for qui plante ?? tab[i2] et non tab[ib] ou Recep_bruteb[ib]

    le bug est là: while( tab[i] != 'F' )
    mais veux-tu vraiment relire les caractères que tu as déjà rangé dans une de tes variables...
    un truc plus propre (on vire le hideux):
    Code:
    ...
        case 'Q':
            for(ib++,i3=0; ib <= i && tab[ib] != 'F'; i3++,ib++ )
            {
                var_3[i3]=tab[ib];
            }
            ib++;
            break;
    ...
    mais si tu veux rester avec i2, tu modifies un poil, mais reste dans l'idée...

    le premier ib++ permet de dépasser le 'Q', le second d'incrémenter dans la boucle et le dernier de dépasser le 'F'

    et on sort si on dépasse i (très mauvais choix de nom de variable...)



    d'ailleurs en C les tests sont souvent de la forme:
    for(cur=0; cur<len ; cur++) ...
    test strictement inférieur, donc voir ce qu'il y a dans i (index du dernier char (<= ok ) ou taille de la chaine (< ok) ???)


    edit: la prochaine fois évite le doublon...
    Jusqu'ici tout va bien...

  4. #4
    yoda1234

    Re : boucle for qui plante ?? tab[i2] et non tab[ib] ou Recep_bruteb[ib]

    Citation Envoyé par photon57 Voir le message
    Hello,

    Ton code est illisible (merci de rajouter des balises code et d'indenter le code).
    C'est fait.

    Citation Envoyé par polo974 Voir le message
    edit: la prochaine fois évite le doublon...
    Je m'en suis occupé.
    Là où l'ignorance est un bienfait, c'est de la folie d'être sage (Thomas Gray).

  5. A voir en vidéo sur Futura
  6. #5
    forumfutura

    Re : boucle for qui plante ?? tab[i2] et non tab[ib] ou Recep_bruteb[ib]

    Polo 974

    tableau = [AL2583FQ345.232Fs654.982FT679] ( WHILE devrait s'arreter quand on trouve les F du tableau ???)

    (je ne suis pas en C directement mais un de IDE à base de C, toute fois je pense que c pas un probleme d'IDE à ce niveau c'est, je demande de
    de savoir où est le probleme dans la boucle

    Merci

  7. #6
    Xoxopixo

    Re : boucle for qui plante ?? tab[i2] et non tab[ib] ou Recep_bruteb[ib]

    Bonjour,

    Citation Envoyé par Polo974
    le bug est là: while( tab[i] != 'F' )
    Je plussois.

    Citation Envoyé par Forumfutura
    tableau = [AL2583FQ345.232Fs654.982FT679] ( WHILE devrait s'arreter quand on trouve les F du tableau ???)
    Non, la denière boucle ne s'arrete pas à cause de ça :
    Code:
    while(tab[i2] != '/' )
    En bon vivant, rien ne vaut un bonne logique ternaire.

  8. #7
    forumfutura

    Re : boucle for qui plante ?? tab[i2] et non tab[ib] ou Recep_bruteb[ib]

    Bonjour à tous,

    Merci pour vos intervention; je suis parti avec l'idée de POLO974 et après beaucoup de peine, l' endurance a fini par payer, mon petit code est maintenant fonctionnel.

    J'ai une autre question par contre, je me dit qu'il vaut mieux la poser ici pour ne pas surcharger le forum avec plusieurs sujet, ma question est celle-ci :

    EXISTE -T-IL DES LOGICIEL POUR CONVERTIR UN CODE (C ou autre) EN ORGANIGRAMME COMME IL Y EN A QUI FONT L'INVERSE ( ORGANIGRAMME EN CODE)?

    SI OUI LE QUEL? ( LICENCE FREE)

    Merci

    Forumfutura

Discussions similaires

  1. fb user tab module
    Par lahmed dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 19/04/2011, 17h15
  2. Réponses: 8
    Dernier message: 14/04/2010, 11h36
  3. tab dymamique en c++
    Par invite591b481e dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 11/03/2010, 11h44
  4. Touche TAB
    Par Antikhippe dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 09/02/2004, 10h01