2010-04-23 7 views
1

J'ai un morceau de code ada ci-dessous qui est un cas simple interrupteur statements.Is t-il une meilleure façon de les convertir en C.Convertir le code ada à son C

  for I in 1..100 loop 
      case I is 
       when 100 => 
        Dollars := Dollars + 1; 
       when 25|50|75 => 
        Quarters := Quarters + 1; 
       when 10|20|30|40|60|70|80|90 => 
        Dimes := Dimes + 1; 
       when 5|15|35|45|55|65|85|95 => 
        Nickles := Nickles + 1; 
       when others => 
        Pennies := Pennies + 1; 
      end case; 
     end loop; 

Maintenant, en ajoutant le commutateur et le cas pour chaque valeur dans le cas, je peux faire cette conversion, mais il semble que le tyo fasse le code trop grand. Y at-il anywa autre manière simple et compacte. Veuillez me revenir si la question n'est pas claire?

Répondre

4

Essayez:

for(i=1;i<=100;i++) { 
    if(i == 100) { 
     dollars++; 
    }else if(i % 25 == 0) { 
     quarters ++; 
    }else if(i % 10 == 0) { 
     dimes ++; 
    }else if(i % 5 == 0) { 
     nickles ++; 
    }else{ 
     pennies ++; 
    } 
} 
+0

@ unicornaddict..Tout est une belle.Mais c'est là où nous pourrions le faire en utilisant des déclarations de commutateur et de cas. – maddy

+0

@maddy: Si vous voulez une réponse par commutateur, Marcelo Cantos en a un. Vous avez juste besoin d'ajouter un 'default: pennies ++;' ajouté. – codaddict

+0

Merci pour votre version.Ceci devrait être vraiment apprécié. – maddy

3
case 100: 
    ++Dollars; 
    break; 
case 25: case 50: case 75: 
    ++Quarters; 
    break; 
case 10: case 20: case 30: case 40: case 60: case 70: case 80: case 90: 
    ++Dimes; 
    break; 
// ... 

Pas tout à fait aussi jolie, mais toujours efficace. Si la performance est au premier plan, vous voudrez comparer l'efficacité de ceci avec la réponse de @ unicornaddict, qui est plus propre que la mienne.

+0

@Marcelo Cantos --THANK UI suppose que c'est ce dont j'ai besoin.Eh bien, je veux juste la conversion parfaite sans se soucier des performances etc. – maddy

+0

C'est la bonne réponse. Si j'étais la personne C, je mettrais toujours les cas sur leurs propres lignes pour plus de clarté, mais c'est la bonne formulation. –

2
for (i = 1; i <= 100; i++) 
{ 

    if (i == 100) 
    { 
     Dollars++; 
    } 
    else if (i % 25 == 0) 
    { 
     Quarters++; 
    } 
    else if (i % 10 == 0) 
    { 
     Dimes++; 
    } 
    else if (i % 5 == 0) 
    { 
     Nickles++; 
    } 
    else 
    { 
     Pennies++; 
    } 
} 
+0

oh trop lent à nouveau; ( – evilpie