Probleme Boucle for

centaure59 Messages postés 43 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 10 juillet 2017 - 3 févr. 2009 à 21:31
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011 - 5 févr. 2009 à 08:31
Bonjour,
je débute en C, l'habitude je programme en visual basic.
Je suis en train de faire un programme pour un pic 16f88,
mon probleme je n'arrive pas a faire une boucle de 12 a 0
Quand je met for (i=12;i>=1;i++) tout va bien ca compte de 12 a 1 par contre,
quand je met for (i=12;i>=0;i++) rien ne va plus !!!
Je ne comprend pas mon erreur
un petit coup de main
Merci

PS : Quelqu'un connaitrais t'il un tutoriel ou un bouquin pour programmer le pic 16f88 avec le logiciel pcwh css

11 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
3 févr. 2009 à 21:44
salut

bizarre

for (i=12;i>=1;i++)

--> Boucle infini car la condition d'arret est toujours vrai
tour 1  -> i=12
tour 5  -> i= 17
....
tour n -> i = 12+n
-----> boucle infinie

il faut utiliser
i--;

attention les tableaux sont indexés sont sur une base 0
case 1 à l'index 0 soit tab[0]
case nb element à l'index length - 1

voila
0
centaure59 Messages postés 43 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 10 juillet 2017
3 févr. 2009 à 21:48
je suis desolé je me suis trompé dans ma question
j'avais bien mis --
Quand je met for (i=12;i>=1;i--) tout va bien ca compte de 12 a 1 par contre,
quand je met for (i=12;i>=0;i--) rien ne va plus !!!
le compilateur me dit que la condition est toujours vrai
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
3 févr. 2009 à 22:00
Moi j'ai pas de probleme en c#
le cpp a normalement le meme comportement

j'ai avec
 for (int i = 12; i >= 0; i--)
            {
                  System.Diagnostics.Debug.WriteLine(i);
            }
            System.Diagnostics.Debug.WriteLine("fin");

mais avec uint ca plante
 for (uint i = 12; i >= 0; i--)

            {

                  System.Diagnostics.Debug.WriteLine(i);

            }

            System.Diagnostics.Debug.WriteLine("fin");

car 0 -1 en unit = 4294967295 cool  ;-)
0
centaure59 Messages postés 43 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 10 juillet 2017
3 févr. 2009 à 22:20
Merci pour ta réponse
mais ça ne solutionne pas mon problème ça fait toujours pareille
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
3 févr. 2009 à 22:26
En passant en de uint en int ca ne fonctionne pas????
0
centaure59 Messages postés 43 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 10 juillet 2017
3 févr. 2009 à 22:37
non ça ne fonctionne pas, je suis dépassé, c'est vraiment bizarre.
Que de problème pour compté de 12 a 0 zéro y compris.
Merci du coup de main
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
3 févr. 2009 à 22:45
Ca compile?
Quel est le type de i?

Et en pas a pas avec le debugger?
0
centaure59 Messages postés 43 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 10 juillet 2017
3 févr. 2009 à 22:48
Ça compile mais en me disant a la ligne ou est le for que la condition est toujours vrai
Je compile avec pcwh c'est un compilateur pour pic, c'est un programme pour un pic 16f88 que je fait..
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
3 févr. 2009 à 23:03
Je n'ai pas d'idée

Si tu n'es pas sur un unit, quel est le résultat en pas à pas

Solution de secours pas propre tu décales les index

for (i=13;i>=1;i--){
int indx = i -1;
// travail avec indx à la place i

}
0
centaure59 Messages postés 43 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 10 juillet 2017
4 févr. 2009 à 09:56
Bonjour,
j'y avais pensez mais ça fait le bordel, mais bon en attendant.....
Je te remercie pour ton aide
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
5 févr. 2009 à 08:31
#include <stdio.h>

int main()
{
    int i = 12;
    while (i-- > 0) // affiche 11 à 0 (12 tours)
    {
        printf("%d\n", i);
    }
    puts("\n");
    for (i = 12; i > 0; i--) // affiche 12 à 1 (12 tours)
    {
        printf("%d\n", i);
    }
    return 0;
}

~(.:: NitRic ::.)~
0