必要なデータのみを画面に出力するフィルターを作成しようとしています。これが私が話していることです:
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 の曜日のみを印刷したい場合、月曜日を印刷するだけで、金曜日も印刷しません。私はどこで間違っていますか?コントローラーの FilterSum 関数で、c? を返します。私はすべてを試しましたが、まったく機能しませんでした...多分あなたは私を助けることができます! :)