我认为我在正确的轨道上并拥有我需要的所有元素,但我不太确定如何使用类/令牌,并且可能还有其他一些格式错误的东西。
#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 << " "}
}
我在这里得到的一切都取自我的笔记,但是按照不同的顺序排列。当我尝试运行它时,我得到错误消息:“新类型可能没有在新类型中定义”
答案 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_back
。 value
字段允许您按任意顺序排列条目。
如果您被允许,请选择std::map
。
不要将表格用于每种组合。例如,21将使用20的条目和1的条目。类似于135.
HTH。