需要编写一个至少包含4位数字(3453)的程序并打印出来:“三千四百五十几十三”

时间:2012-10-13 23:37:48

标签: c++

我认为我在正确的轨道上并拥有我需要的所有元素,但我不太确定如何使用类/令牌,并且可能还有其他一些格式错误的东西。

 #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 << " "}


 }

我在这里得到的一切都取自我的笔记,但是按照不同的顺序排列。当我尝试运行它时,我得到错误消息:“新类型可能没有在新类型中定义”

3 个答案:

答案 0 :(得分:2)

有许多编译错误,要照顾第一个错误,将分号放在类的末尾:

class token {
 public:
            int value;
            string unit;

            };

对于第二个,在单位声明的末尾添加一个分号:

string unit = "";

第三个,定义“x”:

int x;

第四,在这里改变'}''''':

if (unit==" ")

还有更多,抱歉。 在所有语句的末尾添加分号以开始。

答案 1 :(得分:0)

这里是错误输入还是忘记了所有的分号?除此之外,你写unit = "tens"来比较unit"tens"?不应该是unit == "tens"吗?并使用if( unit = " " )

检查空字符串替换if( unit.empty() )

答案 2 :(得分: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_backvalue字段允许您按任意顺序排列条目。

如果您被允许,请选择std::map

不要将表格用于每种组合。例如,21将使用20的条目和1的条目。类似于135.

HTH。