【问题标题】:Convert the ada code to its C将 ada 代码转换为其 C
【发布时间】:2010-04-23 10:58:57
【问题描述】:

我有一段如下所示的 ada 代码,它是一个简单的 switch case 语句。有没有更好的方法将其转换为 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;

现在通过为 case 中的每个值添加 switch 和 case,我可以进行转换,但似乎 tyo 使代码太大。还有其他简单而紧凑的方法。如果问题不清楚?

【问题讨论】:

    标签: c switch-statement ada


    【解决方案1】:

    试试:

    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 ++;
        }
    }
    

    【讨论】:

    • @unicornaddict..这是一个不错的选择。但是无论如何我们可以使用 switch 和 case 语句来做到这一点。
    • @maddy:如果你想要一个基于开关的答案,Marcelo Cantos 有一个。你只需要添加一个default: pennies ++; 添加。
    • 感谢您的版本。应该非常感谢。
    • i == 100 应该是dollars++ 而不是dollars = 1
    【解决方案2】:
    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 的答案进行比较,这比我的更干净。

    【讨论】:

    • @Marcelo Cantos --谢谢。我想这就是我需要的。好吧,我只想要完美的转换,而不用担心性能等。
    • 这是正确的答案。如果我是 C 人,为了清楚起见,我仍然会将案例放在自己的位置上,但这是正确的表述。
    【解决方案3】:
    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++;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 2012-06-04
      相关资源
      最近更新 更多