0

私は正しい方向に進んでおり、必要なすべての要素を持っていると思いますが、クラス/トークンの使用方法がよくわからず、他のもののフォーマットが間違っている可能性があります。

 #include <string>
 #include <iostream>
 #include <vector>


 using namespace std;

 class token {
 public:
            int value;
            string unit;

            }


 int main() {

 token t;
 vector<token> v;
 string unit = ""

 cin>>x;
 while (x!=0) {
    t.value=x%10;
    if (unit==" "}
        t.unit = "ones";
    else if (unit == "ones")
        t.unit = "tens"
    else if (unit = "tens")
        t.unit = "hundreds"
    else if (unit = "hundreds")
        t.unit = "thousands"

    v.pushback(t);
    x=x/10;
 }
  v_t.push_back("zero")
  v_t.push_back("one")
  v_t.push_back("two")
  v_t.push_back("three")
  v_t.push_back("four")
  v_t.push_back("five")
  v_t.push_back("six")
  v_t.push_back("seven")
  v_t.push_back("eight")
  v_t.push_back("nine")

  cout<< "This is ";
  for(int i = v.size()-1; i>=0, i--) {
        cout<<v_t[v[i].value]<<" "<< v[i].unit << " "}


 }

ここにあるものはすべてメモから取ったものですが、順序が異なります。実行しようとすると、「新しいタイプは新しいタイプで定義されていない可能性があります」というエラーメッセージが表示されます

4

3 に答える 3

2

多くのコンパイル エラーがあります。最初のエラーに対処するには、クラスの最後にセミコロンを置きます。

class token {
 public:
            int value;
            string unit;

            };

2 つ目は、unit の宣言の最後にセミコロンを追加します。

string unit = "";

3 つ目は、「x」を定義します。

int x;

4 番目に、ここで「}」を「)」に変更します。

if (unit==" ")

他にもたくさんあります、すみません。すべてのステートメントの末尾にセミコロンを追加して開始します。

于 2012-10-13T23:40:58.413 に答える
0

ここでタイプミスですか、それともセミコロンをすべて忘れていますか? unit = "tens"それに加えて、比較のためunitに書いています"tens"か?そうあるべきではないunit == "tens"ですか?空の文字列をチェックするには、次のように置き換えif( unit = " " )ますif( unit.empty() )

于 2012-10-14T00:27:52.367 に答える
0

この割り当てでは、std::vectorではなく、固定長の配列を使用します。

C言語の用語で(考えを示すために)

struct Text_Entry
{
    unsigned int value; // Don't deal with negatives with words.
    const char * const text;
};

// Here's the table
struct Text_Entry  conversion_table[] = 
{
    {0, "zero"},
    {1, "one"},
    {2, "two"},
//...
    {10, "ten"},
    {11, "eleven"},
//...
    {20, "twenty"},
    {30, "thirty"},
    {40, "forty"},
};

コンパイラは、プログラムが開始する前にテーブルをロードするpush_backため、すべてのケースで使用する必要がなくなります。このvalueフィールドでは、エントリを任意の順序で並べることができます。

許可されている場合は、 を優先してstd::mapください。

すべての組み合わせにテーブルを使用しないでください。たとえば、21 は 20 のエントリと 1 のエントリを使用します。135 の場合も同様です。

HTH。

于 2012-10-14T05:17:33.157 に答える