C et "else if"

Bonjour,

Voici un code source :

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

int main()
{
int poids;
int taille;
int imc;
printf("\t\tCALCUL DE L'IMC by Hadrien\n\n\n\n");
printf("Quel est votre poids (en Kg) ? :\n");
scanf("%d",&poids);
printf("Quelle est votre taille (en cm) ? :\n");
scanf("%d",&taille);
printf("\n\n");
imc=poids/taille^2;
printf("Votre IMC est de :%d\n",imc);
if (imc<=0);
{
printf("Ton IMC est sous/ou egal a 0 ! Tu devrais etre mort(e) !\n");
}
else if (imc<=16);
{
printf("Ton IMC se trouve entre 1 et 16 ! Tu es en denutrition ! MANGE MIEUX !\n");
}
else if (imc<=19);
{
printf("Ton IMC se trouve entre 17 et 19 ! Tu es maigre !\n");
}
else if (imc<=25);
{
printf("Ton IMC se trouve entre 20 et 25 ! Tu es normal(e) !\n");
}
else if (imc<=30);
{

printf("Ton IMC se trouve entre 26 et 30 ! Tu es en surpoids !\n");
}
else if (imc<=35);
{
printf("Ton IMC se trouve entre 31 et 35 ! Tu es moderement obese !\n");
}
else if (imc<=40);
{
printf("Ton IMC se trouve entre 36 et 40 ! Tu es severement obese ! Fais gaffe...\n");
}
else (imc>=41);
{
printf("Ton IMC est spuperieur a 40 ! Tu es en obesite morbide ! MAIGRIS !\n");
}

getch();

return 0;

}

A la ligne en gras et les autres else if, j'ai cette erreur :
error: 'else' without a previous 'if'

Pourriez vous m'aider ? Merci c'est urgent !

5 réponses

  1. enlèves les points virgules en trop if(); else if(); ......
    2
    1. Contributeur
      Bonjour,

      imc=poids/taille^2;
      Attention taille^2 ne veut pas dire taille au carré en C. Il s'agit du Xor...
      Fais plutôt taille*taille;

      else if (imc<=16);
      Pas de point virgule (;) après ton else if. Tu as répété l'erreur plusieurs fois.

      else (imc>=41);
      Pourquoi tu mets else sans if alors que tu mets une condition ?
      De plus pas besoin de mettre de condition, si tu arrives dans le if, t'as la certitude que imc soit supérieur strictement à 40.
      Donc simplement : else (pas de point virgule non plus)

      De plus pourquoi avoir inclue math.h alors que tu ne te sers d'aucunes fonctions de ce header ?
      0
      1. else if (imc<=16);
        pas de ; à la fin de cette ligne
        0
        1. Contributeur
          Pas de point virgule dans les if, else et else if.
          else if (imc<=16); doit devenir
          else if (imc<=16)

          imc=poids/taille^2;
          Attention ^2 ne veut pas dire carré en C mais xor. Mets plutôt taille*taille;

          else (imc>=41);
          Pourquoi mettre une condition sans if ? En plus pas besoin de condition, si tu arrives dans le else c'est que imc est supérieur strictement à 40.
          Donc faut simplement mettre else (sans point virgule).

          Et enfin pourquoi utiliser math.h alors que tu ne t'en sers pas ?

          Cdlt,
          0
          1. il y a pas de ";" dans une condition
            if (condition)
            {

            };
            merci bye
            0
            1. Contributeur
              Pas plus qu'il n'y a pas de point virgule à la fin d'une accolade...
              0
            2. ou que oui
              0
            3. bonne continuation bye
              0