2016-04-07 1 views
-3

J'ai créé un programme pour imprimer l'équivalent romain d'une année, mais mon programme affiche une erreur de compilation. Mon programme dit:Comment résoudre "expected"; ' avant '{' jeton "en C?

33 4 C: \ Utilisateurs \ ABC \ Desktop \ c.c [Erreur] attendu ';' avant '{' jeton

Voici mon code:

#include<stdio.h> 
main() 
{ 
    int a,rom; 
    printf("Enter the year."); 
    scanf("%d",&a); 
    rom=reverse(a); 
    printf("Roman equivalent of %d is:",a); 
} 
reverse(int a) 
{ 
    int i,rev=0,rem; 
    for(i=a;i>0;i=i/10) 
    { 
     rem=i%10; 
     rev=rev*10+rem; 
    } 
    roman(a); 
} 
roman(int a) 
{ 
    int c=0,i,j,k,l,m; 
    for(i=a;i>0;i=i/10) 
    { 
     m=i%10; 
     for(j=1;j>0;j--) 
     { 
      if(c==0) 
      { 
       printf("m\n"); 
      } 
      elseif(c==1) 
      { 
       printf("d\n"); 
       for(l=m-5;l>0;l--) 
        printf("c"); 
       printf("\n"); 
      } 
      elseif(c==2) 
      { 
       printf("l\n"); 
       for(l=m-5;l>0;l--) 
       { 
        printf("x"); 
       } 
       printf("\n"); 
      } 
      elseif(c==3) 
      { 
       printf("v\n"); 
       for(l=m-5;l>0;l--) 
       { 
        printf("i"); 
       } 
       printf("\n"); 
      } 
     } 
     c++; 
    } 
} 
+1

Avez-vous lu les erreurs que le compilateur vous a données? –

+0

oui le compilateur gcc dit: c.c: 33: 4: erreur attendue ';' avant '{' jeton { –

+3

Certes, le message d'erreur est un peu trompeur ... – Ctx

Répondre

7

utilisation else if au lieu de elseif.

+0

Merci, je suis tellement stupide –

+0

@SnehilGupta arrive à chacun de nous .. se détendre :) –

+0

merci l'homme ... !! –

3

Vous avez manqué un espace dans votre else if .. ce ne est pas elseif mais else if

2

est l'utilisation d'erreur faute de frappe d'autre si au lieu de elseif

#include<stdio.h> 
main() 
{ 
    int a,rom; 
    printf("Enter the year."); 
    scanf("%d",&a); 
    rom=reverse(a); 
    printf("Roman equivalent of %d is:",a); 
} 
reverse(int a) 
{ 
    int i,rev=0,rem; 
    for(i=a;i>0;i=i/10) 
    { 
     rem=i%10; 
     rev=rev*10+rem; 
    } 
    roman(a); 
} 
roman(int a) 
{ 
    int c=0,i,j,k,l,m; 
    for(i=a;i>0;i=i/10) 
    { 
     m=i%10; 
     for(j=1;j>0;j--) 
     { 
      if(c==0) 
      { 
       printf("m\n"); 
      } 
      else if(c==1) 
      { 
       printf("d\n"); 
       for(l=m-5;l>0;l--) 
        printf("c"); 
       printf("\n"); 
      } 
      else if(c==2) 
      { 
       printf("l\n"); 
       for(l=m-5;l>0;l--) 
       { 
        printf("x"); 
       } 
       printf("\n"); 
      } 
      else if(c==3) 
      { 
       printf("v\n"); 
       for(l=m-5;l>0;l--) 
       { 
        printf("i"); 
       } 
       printf("\n"); 
      } 
     } 
     c++; 
    } 
} 
1

Il n'y a pas elseif en C. Vous devez écrire else if (2 mots séparés). Mais il est vrai que le message d'erreur est quelque peu trompeur, mais à un second coup d'œil, c'est en fait tout à fait normal.

Explication:

if(c==0) 
{ 
    printf("m\n"); 
} 
elseif(c==1) 
{ 
    ... 
} 

Le compilateur suppose elseif est le nom d'une fonction prenant un int comme argument, donc il attend un ; après la parenthèse de fermeture du elseif;

C'est ce que le compilateur pense que vous voulez:

if (...)   
{ 
    printf("m\n");  // normal conditional statement 
} 

elseif(c==1) ;  // call to some function elseif 

{     // unconditional {} block 
    ... 
} 

Si vous avez compilé avec tous les avertissements activés, le compilateur aurait émis un avertissement tel que

déclaration de fonction implicite de « elseif '