gpt4 book ai didi

c++ - boolean 函数没有给出正确答案

转载 作者:行者123 更新时间:2023-11-28 03:26:19 25 4
gpt4 key购买 nike

我的 boolean 函数 check_gift 有问题。当礼物在商店中时,它给出的值是错误的...

我做错了什么?

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cstdlib>
#include <string>
#include <cassert>
using namespace std;

typedef vector<string> Wishes;

int size(Wishes& w){ return static_cast<int>(w.size()); }


struct Wishlist
{
double budget;
Wishes wishes;
};


struct Gift
{
double price;
string name;
};

typedef vector<Gift> Giftstore;

int size(Giftstore& g) { return static_cast<int>(g.size()); }



void read_wishlist_into_struct(ifstream& infile, Wishlist& wishlist)
{
double b;
infile>>b;
wishlist.budget=b;

int i=0;
string name;
getline(infile,name);

while(infile)
{
wishlist.wishes.push_back(name);
i++;
getline(infile,name);
}
infile.close();
}


void show_wishlist(Wishlist wishlist)
{
cout<<"Budget: "<<wishlist.budget<<endl<<endl;
cout<<"Wishes: "<<endl;
for(int i=0; i<size(wishlist.wishes); i++)
{
cout<<wishlist.wishes[i]<<endl;
}
cout<<endl;
}



void read_giftstore_into_vector(ifstream& infile, Gift& gift, Giftstore& giftstore)
{
double p;
string name;
int i=0;
infile>>p;

while(infile)
{
gift.price=p;
getline(infile,name);
gift.name=name;

giftstore.push_back(gift);
i++;
infile>>p;
}
infile.close();
}

void show_giftstore(Giftstore giftstore)
{
cout<<"All possible gifts in giftstore: "<<endl<<endl;

for(int i=0; i<size(giftstore); i++)
{
cout<<giftstore[i].price<<"\t"<<giftstore[i].name<<endl;
}
cout<<endl;
}

bool check_gift(Giftstore giftstore, string giftname)
{
int i=0;

while(i<size(giftstore))
{
if(giftstore[i].name==giftname)
{
return true;
}
else
{
i++;
}
}
return false;
}


void clear(Wishlist& b)
{
b.budget=0;

while(!b.wishes.empty())
{
b.wishes.pop_back();
}
}

void copy(Wishlist a, Wishlist& b)
{
b.budget=a.budget;

for (int i=0; i<size(b.wishes); i++)
{
b.wishes.push_back(a.wishes[i]);
}
}



int main ()
{

ifstream infile2("giftstore.txt");


Gift gift;
Giftstore giftstore;

read_giftstore_into_vector(infile2, gift, giftstore);
show_giftstore(giftstore);



string giftname;
giftname=("dvd Up van Pixar");
bool x;

x=check_gift(giftstore, giftname);
cout<<"in store?: "<<x<<endl;


return 0;
}

最佳答案

您忘记在 check_gift 函数结束时返回 false

bool check_gift(Giftstore giftstore, string giftname)
{
int i=0;

while(i<size(giftstore))
{
if(giftstore[i].name==giftname)
{
return true;
}
else
{
i++;
}
}
return false;
}

关于c++ - boolean 函数没有给出正确答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13819714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com