2013-03-04 2 views
1

Ceci est une question de devoirs, mais je demande seulement de l'aide pour le débogage. Je ne suis pas sûr de ce qui cause ces erreurs pour moi.Pratique avec des boucles en programmation C

int CalculateResult(int High, int Low) 
{ 
    int Result; 
    int count = 0; 
    int check; 
do 
    { 
    printf("Enter the value to check within the range: "); 
    scanf("%d",&Result); 

    if (Result == 0) 
    { 
    printf("Error! Positive value only!\n"); 
    } 

    else if (Result < -1) 
    { 
    printf("Error! Positive value only!\n"); 
    } 

    else if (Result>= 1); 
    { 
    for (check = Low ; check <= High;check++) 
     { 
     if (check%Result==0) 
      { 
      (count++); 
      } 
     } 
    } 
    while (Result != -1); 
    return (count); 
    } 
} 

J'ai deux erreurs: 174: 1 --- attendus avant tout} jeton puis il y a 174: 1 --- déclarations prévues à la fin de l'entrée

Quelqu'un voit ce qui est faux? Désolé que ce soit désordonné, je suis un noob.

+6

Ceci n'est pas une question de débogage. C'est une question d'erreurs de syntaxe. –

+2

Faites correspondre vos '{' et '}'. Vous verrez facilement l'erreur. Astuce: il y a une instruction 'do {statements} while (contition)' et un argument différent while (condition) {statements} '. – pmg

+0

quelle ligne de votre extrait de code correspond à la ligne 174? – SirPentor

Répondre

1

Si vous indentez votre code correctement, vous pouvez facilement voir où l'erreur est:

int CalculateResult(int High, int Low) 
{ 
    int Result; 
    int count = 0; 
    int check; 
    do 
    { 
    printf("Enter the value to check within the range: "); 
    scanf("%d",&Result); 

    if (Result == 0) 
    { 
     printf("Error! Positive value only!\n"); 
    } 

    else if (Result < -1) 
    { 
     printf("Error! Positive value only!\n"); 
    } 

    else if (Result >= 1); 
    { 
     for (check = Low ; check <= High; check++) 
     { 
      if (check%Result == 0) 
      { 
       (count++); <-------- The() are OK, but not necessary. 
      } 
     } 
    } 
    } <--------------------------- Moved this brace up from below. 
    while (Result != -1); 

    return (count); 
} 
+0

Je ne dirais pas que l'ajout d'un indentation supplémentaire dans un if-block est "correct", cependant .. une question de goût –

+0

Je pense qu'il s'attend à 'return (count)' après que la boucle do-while soit terminée. Selon votre réponse, cela ne fonctionnera pas. –

+0

@Nicklas C'est le style Allman. Il a la vertu de vous permettre d'aligner vos accolades d'ouverture et de fermeture à des fins de comparaison. L'OP semble utiliser le style Whitesmiths (plus ou moins). –

1

Ajouter "}" avant pendant que l'instruction. Vous avez perdu une parenthèse :) Maintenant, "while" est pour la dernière instruction "else if". Correct schéma: do {
//Some code here
} while (clause);

+0

BEAUCOUP D'OCCASIONS lol merci à tous. J'ai corrigé le code pour toutes vos instructions, je l'apprécie. – Liquidmetal

1

changement

 } 
    while (Result != -1); 
    return (count); 
    } 
} 

à

 } 
    } 
    while (Result != -1); 
    return (count); 
} 
0

seulement va dire deux choses:
1. Vérifiez si vous avez tous les supports nécessaires
2. Vérifiez s'il vous manque un ";" ou s'il y a un ";" où il ne devrait pas
Ceci est une question de devoirs je ne vais pas vous donner la réponse directement
:) Ok, quelques conseils: 1.
tiret toujours votre code
2. Un if ou sans else if un bloc pour faire n'importe quoi est probablement inutile if ou else if;)