0

私がやろうとしているこの課題には、いくつかのねじれがあります。基本的に、メニューと 4 つのオプションが必要です。そのうちの 2 つは、基数と指数の形式でユーザーからの入力を受け入れます。3 番目はベース レイズの答えをべき乗で出力し、4 番目はプログラムを終了します。

getNum(); を介してユーザー入力を取得するのに問題があります。正しい使い方がよくわかりません。私のコードを少しうまく機能させる方法に関するいくつかのヒントを見ているだけです。

ヘルプを探しています:

  1. 2 つの異なる関数からユーザー入力を受け取り、それを使用して回答を出力する
  2. メニューオプション選択時の無限ループ問題の解決
  3. 各機能が完了した後にプログラムをメイン メニューにループバックし、メニュー オプション 4 が選択された場合にのみプログラムを終了します。

    int main(void)
    {
        int option = 0;
        do
        {
            loadMenu();
                while (option<1 || option>4)
                {
                    printf("\nChoose an option between 1 and 4:");
    
                    option = getNum();
                    while (getNum() != '\n');
                }
                switch (option)
                {
                    case 1:
                        baseChange();   //Gets base number
                        break;
                    case 2:
                        powerChange();  //Gets exponent
                        break;
                    case 3:
                        calcMath(); //Calculates the answer
                        break;
                    default:
                        break;
                }
        }
    
            while (option != 4);
            printf("Goodbye!\n");
    }
    void loadMenu()                      //Menu choices
    {
        printf("Power Menu:\n" );
        printf("  1. Change base\n");
        printf("  2. Change exponent\n");
        printf("  3. Calculate\n");
        printf("  4. Exit\n");
        printf("Option?\n");
    }
    
    int baseChange(int base)
    {   
        printf("What is your base?: ");
    
        base = getNum();
        while (getNum() != '\n');
    
        return base;
    }
    
    int powerChange(int power)
    {
    
        printf("What is the power?: ");
    
        power = getNum();
        while (getNum() != '\n');
    
        return power;
    }
    
    int calcMath(int base, int power)
    {
        int index = 0;
        long answer = 1.00;
    
        for(index = 1; index <= power; index++) answer = answer * base;
        {
            printf("%d raised to the power of %d is %ld.\n\n", base, power, answer);
        }
    
        return answer;
    }
    
4

2 に答える 2

0

getNum(); を介してユーザー入力を取得するのに問題があります。正しい使い方がよくわかりません。

この関数について何も教えてくれませんでした。C 標準の一部ではありません。

私のコードを少しうまく機能させる方法に関するいくつかのヒントを見ているだけです。ヘルプを探しています:

それには少し早いと思います。問題の解決にもっと力を入れてから、具体的な質問があれば戻ってきてください。このようなもの:

メニューオプション選択時の無限ループ問題の解決

ループの 2 回目のオプションでプログラムが何をするかを見てください。

于 2012-10-08T23:15:53.810 に答える
0

以下のように、main() の前に getnum() 関数を宣言してください。

/* declare getnum() prior to its first use */
float getnum(void)
{
  float x;

  printf("Enter a number: ");
  scanf("%f", &x);
  return x;
}
于 2013-08-04T11:38:13.110 に答える