Erreur 'expected while before if'

YoungDev -  
Dalfab Messages postés 638 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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour

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