我正在尝试制作一个仅在屏幕上打印我想要的数据的过滤器。这就是我所说的:
Cost* FilterSum(Controller* ctrl, int n)
{
int i;
DynamicVector* CostList=getAll(ctrl->repo);
for(i=0;i<getLen(CostList);i++)
{
Cost* c=getElementAtPosition(CostList,i); //returns the element on one position
if((c->sum)<n)
{
return c; //if the element(Cost in my case) has the sum<20 return it
}
}
return 0;
}
所以,我有以成本为元素的动态数组。如果成本总和小于 n(从键盘给出 n),我只想在屏幕上打印这些成本。:) 这是控制台中的打印功能:
void PrintCost(Cost* c) //this function prints one cost
{
printf("\nID: %d\n", getID(c));
printf("Day: %s\n", getDay(c));
printf("Type: %s\n", getType(c));
printf("Sum: %d\n\n", getSum(c));
}
void PrintCosts(Console* console) //this one prints all the costs in the list
{
DynamicVector* CostList=getAllCosts(console->ctrl);
if (getLen(CostList))
{
int i;
for(i=0;i<getLen(CostList);i++)
{
Cost *c=(Cost*)getElementAtPosition(CostList,i);
PrintCost(c);
}
}
else printf("No cost in the list!");
}
这是控制台中控制器的调用函数:
void FilterCostsBySum(Console* console)
{
int n;
printf("See the costs that have the sum less than: ");
scanf("%d",&n);
Cost* c = FilterSum(console->ctrl,n);
PrintCost(c);
}
现在,问题来了。如果我有 sum=10 的星期一,sum=20 的星期五和 sum=40 的星期六,并且我只想打印 sum<30 的那些日子,它只打印星期一,仅此而已,它也不打印星期五。我在哪里做错了?在我返回 c 的控制器的 FilterSum 函数中?我尝试了一切,但它根本没有用......也许你可以帮助我!:)