Pb while en c
huricane
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 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
A voir également:
- Pb while en c
- Application error: a client-side exception has occurred while loading www.leboncoin.fr (see the browser console for more information). - Forum Services en ligne
- Error code 1309 mac while copying ✓ - Forum MacOS
- Accès impossible à mon compte Bon Coin ✓ - Forum Réseaux sociaux
- While fscanf ✓ - Forum C
- Can't use mobile hotspot while data saver is on ✓ - Forum Wiko
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
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.
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");
}
#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");
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
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
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