0

配当金を表示させて、手間をかけずにコードを解読できるようにしました。一度は動作しましたが、動作を停止するために何をしたのかわかりません。正の整数に対して完全に機能します。ユーザー入力に関連付けられた番号を表示することになっています。

#include <iostream>                                        // Necessary header
using namespace std;

int main()
{
   signed int Input, Divisor, Dividend, MSD;

   cout << "Input:";
   cin >> Input;

   Divisor = 1;
   Dividend = Input;
   if (Input < 0)
   {
       Dividend *= -1;
       cout << "minus ";
   }

   cout << Dividend;
   while (Dividend > 9)
   {
       Divisor = Divisor * 10;
       Dividend = Dividend / 10;
   }

   while (Divisor != 0)
   {
       MSD = Input / Divisor;
       switch (MSD)
       {
           case 0:
           cout << "zero ";
           break;
           case 1:
           cout << "one ";
           break;
           case 2:
           cout << "two ";
           break;
           case 3:
           cout << "three ";
           break;
           case 4:
           cout << "four ";
           break;
           case 5:
           cout << "five ";
           break;
           case 6:
           cout << "six ";
           break;
           case 7:
           cout << "seven ";
           break;
           case 8:
           cout << "eight ";
           break;
           case 9:
           cout << "nine ";
           break;
       }
    Input = Input - (MSD * Divisor);
    Divisor /= 10;
   }
   return 0;
}
4

3 に答える 3

5

変化する

if (Input < 0)
{
    Dividend *= -1;
    cout << "minus ";
}

if (Input < 0)
{
    Input *= -1;
    cout << "minus ";
}

しかし、本当に、デバッグしましたか?:)

于 2012-10-15T21:42:02.487 に答える
2

あなたのコードは負の数では機能しないと思います。この行を見てください:

while (Divisor != 0) {
    MSD = Input / Divisor;
    // switch statement
}

ユーザーが に負の値を入力するInputと、switch ステートメントでケースがヒットしません。Inputユーザーが入力したものではなく、絶対値を使用するようにしたいと思います。

于 2012-10-15T21:42:09.687 に答える
0

動作します!ありがとう。

#include <iostream>                                        // Necessary header
using namespace std;
const int DIV = 10;                                        // Avoid Magic Numbers
const int REM = 9;

int main()
{
   signed int Input, Divisor, Dividend, MSD;               // Signed because negative values need to be read

   cout << "Input:";
   cin >> Input;
   cout << "Output: ";

   if (Input < 0)                                          // If the input is negative, make it positive
   {
      Input = -Input;
      cout << "minus ";
   }

   Divisor = 1;                                            // Initialize Divisor to 1
   Dividend = Input;                                       // Dividend is equal to input number
   while (Dividend > REM)
   {
      Divisor *= DIV;
      Dividend /= DIV;
   }

   while (Divisor != 0)                                    // While the Divisor is not 0
   {
      MSD = Input / Divisor;                               // The most significant digit is obtained
      switch (MSD)
      {
         case 0:                                           // Multiple cases to print all digits 0 to 9
            cout << "zero ";
            break;
         case 1:
            cout << "one ";
            break;
         case 2:
            cout << "two ";
            break;
         case 3:
            cout << "three ";
            break;
         case 4:
            cout << "four ";
            break;
         case 5:
            cout << "five ";
            break;
         case 6:
            cout << "six ";
            break;
         case 7:
            cout << "seven ";
            break;
         case 8:
            cout << "eight ";
            break;
         case 9:
            cout << "nine ";
            break;
      }
      Input -= MSD * Divisor;                              // Change input so next digit can be obtained
      Divisor /= DIV;
   }
   return 0;
}                                                          // End main method
于 2012-10-16T00:21:24.473 に答える