Erreur 'expected while before if'

YoungDev -  
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour

Je ne fais pas de c ...mais...les ";" derrière tes if..à mon avis ce n'est pas bon
0
YoungDev
 
merci :)
0
NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
do
{
....
}
if (m ! 0) ;
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
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