Erreur 'expected while before if'

Fermé
YoungDev - Modifié par baladur13 le 5/10/2016 à 18:21
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 7 oct. 2016 à 17:08
Bonjour, j'ai récemment développé un programme en c.
Seulement, lorsque j'essaie de le build, clode::blocks m'indique "expected while before if" aux lignes 50 et 57. Quelqu'un pourrait-il (ou elle :p ) m'expliquer ce qui ne va pas ?
Merci !
PS : je suis encore débutant

#include <stdlib.h>
#include <stdio.h>

int main ()
{
  long hpmoi = 0;
  long hpadv = 0;
  long fatiguemoi = 0;
  long fatigueadv = 0;
  long i = 1;
  long m = 0;
  long murlocpair = 0;
  long murlocimpair = 0;

  printf ("Mes hp :\n");
  scanf ("%ld", &hpmoi);
  printf ("Hp adverses :\n");
  scanf ("%ld", &hpadv);
  printf ("Mes dégats de fatigue :\n");
  scanf ("%ld", &fatiguemoi);
  printf ("Les dégats de fatigue de l'adversaire :\n");
  scanf ("%ld", &fatigueadv);
  printf ("\n");
  printf ("\n");

  do
    {
      hpmoi = hpmoi - fatiguemoi;
      hpadv = hpadv - fatigueadv;

      printf ("PIOCHE %ld\n",  i);
      printf ("Mes hp %ld\n",  hpmoi);
      printf ("Hp adverses %ld\n", hpadv);
      printf ("\n");
      printf ("\n");

      fatiguemoi++;
      fatigueadv ++;
      i++;
    }
  while (hpadv >= 0 && hpmoi >= 0) ;

  m = i/2;

  do
    {
     murlocpair = i/2;
  printf ("%ld coldlight orac\n",  murlocpair);
    }
  if (m ! 0) ;

    do
    {
     murlocimpair = (i-1)/2;
    printf ("%ld coldlight orac + fatigue\n",  murlocimpair);
    }
  if (m == 0) ;

  return EXIT_SUCCESS;
}

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 oct. 2016 à 18:24
Bonjour

Je ne fais pas de c ...mais...les ";" derrière tes if..à mon avis ce n'est pas bon
0
merci :)
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 330
5 oct. 2016 à 18:34
do
{
....
}
if (m ! 0) ;
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
7 oct. 2016 à 17:08
Bonjour,

En plus cette erreur, le compilateur a dû signaler de nombreux warnings, il est important de les corriger aussi.
Un warning c'est un message du compilateur revenant à dire de sa part "demande saugrenue, j'essaie quand même d'interpréter la suite".
if ( );
correspond à "vérifier c'est vrai et dans ce cas je ne fais rien". Alors pourquoi tester?!
do { ...} 
doit être suivi d'un while() qui indique à quelle conditon le bloc doit être refait.
Et ici, ne faut-il pas ramener les 2
if
à la place des
do
.
0