1

以下に示す単純なswitchcaseステートメントであるadaコードがあります。これを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;

ケース内の値ごとにスイッチとケースを追加することで、その変換を行うことができますが、コードが大きくなりすぎるようです。他に簡単でコンパクトな方法はありますか。質問がない場合は、私に戻ってください。クリア?

4

3 に答える 3

4

試す:

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 ++;
    }
}
于 2010-04-23T11:05:20.923 に答える
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;
// ...

それほどきれいではありませんが、それでも効率的です。パフォーマンスが非常に重要な場合は、これの効率を@unicornaddictの回答と比較することをお勧めします。これは私のものよりもクリーンです。

于 2010-04-23T11:07:27.790 に答える
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++;
    }
}
于 2010-04-23T11:11:03.650 に答える