Pb while en c
huricane
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j 'ai un petit probleme en C,
j'essai de cree une boucle de type: while ( var1 >0 OU var2 > 0 ){.......}
Et le "ou" me bloque , jai essayer de mettre ||, | et ca ne marche pas...
Quand je met une seul condition la boucle marche niquel, et quand il y a les 2 (avec || au milieu) la boucle continue a l'infinit.
Bon je viens de commancer le C donc c peut etre ultra simple^^
merci
j 'ai un petit probleme en C,
j'essai de cree une boucle de type: while ( var1 >0 OU var2 > 0 ){.......}
Et le "ou" me bloque , jai essayer de mettre ||, | et ca ne marche pas...
Quand je met une seul condition la boucle marche niquel, et quand il y a les 2 (avec || au milieu) la boucle continue a l'infinit.
Bon je viens de commancer le C donc c peut etre ultra simple^^
merci
Configuration: Windows Vista Firefox 3.0.7
6 réponses
-
Salut,
Peut-être tout simplement que tu as mis une mauvaise condition. ;-)).
Sinon l'opérateur OU en C, est bien || (double barre). L'opérateur | (simple barre) est utilisée pour le OU bit à bit.
Poste ton exemple de boucle infinie qu'on puisse voir ce qui ne va pas.
Cdlt -
L'opérateur logique du OU en C est bien || , donc le problème doit plutôt venir de l'intérieur de ta boucle, au niveau de ton algo'
Au pire fais voir ton code.
-
Voila mon super programe de console de combar pokemon ^^
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
//les pv
long pikachu = 100;
long salameche = 100;
//variable des attaque
long attaque = 1;
long attaque1 = 0;
//aleatoire, et min max attaque pour les attaque
const long MAX = 100, MIN = 1;
srand(time(NULL));
printf("Tu est un dresseur de pokemon ,et par ambition tu veut devenir le plus grand de tous!!!!!!!!ton premier pokemon est pikachu: un petit pokemon jaune\n");
printf("ton pokemon a %ld point de vie et possede 4 attaque diferrente!\n",pikachu);
system("PAUSE\n");
printf("pikachu ce fait attaquer!!!! par un pokemon de feu : salameche et il te surprend donc tu perd 3 pv\n");
pikachu-=3;
printf("pika a %ld pv\nsalameche a %ld\n",pikachu,salameche);
system("PAUSE\n");
while ( salameche!=0 | pikachu!=0)
{
printf("Tu peut riposter\n 1:Vive-Attaque (attaque qui ne fait pas beacoup de degats...) \n 2:coup de tete (fait moyennement des degat) \n 3:Tonnerre (fait pas mal de degat mais ca peut rater) \n 4:Fatal-Foudre (tout ou rien) \n");
scanf("%ld", &attaque);
switch (attaque)
{
case 1:
printf("Vive attaque \n");
attaque1 = (rand() % (30 - 20 + 1)) + 1;
break;
case 2:
printf("Coup de tete \n");
attaque1 = (rand() % (40 - 30 + 1)) + 1;
break;
case 3:
printf("Tonnerre \n");
attaque1 = (rand() % (60 - 20 + 1)) + MIN;
break;
case 4:
printf("Fatal-Foudre \n");
attaque1 = (rand() % (100 - 0 + 1)) + MIN;
break;
default:
printf("ta louper ton attaque, boulet\n");
attaque1=0;
break;
}
salameche = salameche - attaque1;
if (salameche <0 || pikachu<0) //le pb
{
salameche=0;
}
if (pikachu <0)
{
pikachu=0;
}
printf("salamche perd %ld pv il est donc a %ld pv\n",attaque1,salameche);
system("PAUSE\n");
attaque1 = (rand() % (60 - 20 + 1)) + MIN;
pikachu= pikachu -attaque1;
printf("salamche t'attaque,il te fait perdre %ld donc pikachu a encore %ld pv\n",attaque1,pikachu);
system("PAUSE\n");
}
if (salameche=0){
printf("salameche est donc mort , tu a gagner\n" );
}
else {
printf("tu a perdut....\n");
}
system("PAUSE\n");
} -
C'est un double | , chez moi ça marche avec ça...
Edit : Ah bah nan ça marche pô ^^
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut,
if (salameche <0 || pikachu<0) //le pb { salameche=0; } if (pikachu <0) { pikachu=0; }
Ca ne serait pas plutôt if (salameche <0)
Si salameche est négatif alors, on l'affecte à 0.
Ca ne serait pas while ( salameche!=0 && pikachu!=0) ?
Tant que les deux ont encore de la vie, on continue le jeu ?
if (salameche=0){
Voilà une condition toujours fausse. Tu mets 0 dans salameche qui renvoie la valeur 0.
Si tu veux comparer avec 0, il s'agit d'un double égal ==.
De plus, tu as oublié de faire return 0 à la fin du programme.
Cdlt -