我的作业要求我编写一个读取标题的函数,并将相应的费用返回给调用函数。如果标题不在列表中,请返回-1.0
。
这就是我现在所拥有的:
struct eventType
{
string title;
double fees;
};
eventType eventTable[10];
int findFees (string newTitle, string newFees)
{
int Index = 0;
int flag;
while (Index < 9) && (eventTable[Index].title != newTitle))
Index = Index + 1;
if (eventTable[Index].title == newTitle)
{
eventTable[Index].fees = newFees;
flag = 0;
}
else
flag = -1;
return flag;
}
什么都不见了?
double findFees (string title)
{
for (int Index = 0 ; Index < 10 ; Index++)
{
if (eventTable[Index].title == title)
{
return eventTable[Index].fees;
}
}
return -1.0;
}
我不确定这是否正确,但我不需要新的标题或新费用,因为这些值可以在eventTable中找到,然后返回。
修正?
答案 0 :(得分:1)
我不想为你泄露答案,但这里有两点你应该记住:
如果有条件或循环,则需要在{和}中括起语句,以便编译器知道哪些语句进入循环内。
其次,C ++是一种类型安全的语言,这意味着如果要将变量分配给不同类型的值,程序将无法编译,查看代码并查看是否可以在前面找到任何错误
答案 1 :(得分:0)
应该是:
while (Index < 10)
你说它应该退还费用,但是找到后会返回0。 (这没关系,因为你要收费,为什么还要退还?)
我还会将函数的签名更改为:
int findFees (const string &newTitle, const string &newFees)
当你在它的时候,让它返回一个“bool”而不是一个标志来表示成功,因为:
if(findFees(blahTitle, blahFees))
听起来好多了:
if(findFees(blahTitle, blahFees) == 0)
检查是否找到了标题。
答案 2 :(得分:0)
在我看来,正如您所描述的那样,您的功能不会返还费用。 看起来它更新了eventTable,更改了存储在那里的费用,并在更新成功完成后返回一个标志。
请澄清。您想查找存储在eventTable中的费用并将其退回吗?或者您想用新数据更新eventTable?或者是两者的混合。
不过,对于一个菜鸟,你的代码结构合理,编写得相当好。
答案 3 :(得分:0)
我看到的唯一错误是
while (Index < 9) && (eventTable[Index].title != newTitle))
应该是:
while ((Index < 10) && (eventTable[Index].title != newTitle))
注意缺少'('。否则你错过了匹配数组中的最后一个条目。
我可能会写一下这样的函数:
double findFees (const string& title, double newFee)
{
for (int i = 0; i < 10; i++)
{
if (eventTable[i].title == title)
{
eventTable[i].fees = newFee;
return newFee;
}
}
return -1.0;
}
这样,如果您已找到要搜索的项目,则不会遍历整个数组。
答案 4 :(得分:0)
你会这样简化它。
int flag = -1;
int Index = 0;
while(Index <= 9)
{
if(eventTable[Index].title == newTitle)
{
eventTable[Index].fees = newFees;
flag = 0
break;
}
}
return flag;
答案 5 :(得分:0)
eventTable[Index].fees = newFees;
这不起作用,因为费用是双倍而newFees是一个字符串。你也没有说过改变费用,所以我对这条线感到困惑。
如果您想要返回找到的项目的费用,您应该将return eventTable[Index].fees;
放在该位置,并将该函数的返回值更改为浮动。
答案 6 :(得分:0)
您的描述(退还费用,如果没有找到-1.0)与您的代码不符:
struct eventType
{
string title;
double fees;
};
eventType eventTable[10];
double findFees (string newTitle)
{
for (int Index = 0 ; Index < 10 ; Index++)
{
if (eventTable[Index].title == newTitle)
{
return eventTable[Index].fees;
}
}
return -1.0;
}