我对图书馆的程序有疑问
I have a problem with a program for a library
我有一个 class 正在创建书籍,还有一个 class 用于将书籍保存在一个数组中,但我必须创建一个打印所有书籍的方法书名相同但年份不同,我碰巧这种代码失败是因为它复制了一些书,有没有办法防止这种情况发生在我身上?
void buscarNombre(string elemento){
int i, j;
int largo = 0;
bool primeraVez = true;
largo=contadorLibros();
for(i=0;i<largo-1;i++){
if (vec[i].getTitulo() == elemento){
for(j=i+1;j<largo;j++){
if (vec[j].getTitulo() == elemento){
if(vec[i].getAnnioImpresion() != vec[j].getAnnioImpresion()){
if(primeraVez == true){
cout<<vec[i].toString()<<endl;
primeraVez = false;
}
else{
cout<<vec[j].toString()<<endl;
}
}
}
}
primeraVez = true;
}
}
}
我不懂你的母语,但如果我能正确理解代码:
假设您有三本书,书名相同但出版日期不同,我们称这些书为 A,B,C.
第一个循环遇到A,开始循环第二个循环。遇到B时设置primeraVez = false
防止遇到C时再次打印;但是在第二个循环完成后,你重置了primeraVez = true
,所以当你在第一个循环中遇到B时,你在第二个循环中遇到[=21时重新打印书名=]C.
您可以通过从列表中删除您打印的书籍或制作一个 std::set
您想要打印的书籍并在搜索完成后打印来防止这种情况。
是否打印同名同年的书籍?以及为什么在 if 条件下打印标题可能 'cout' 在 else 条件内导致重复。
我有一个 class 正在创建书籍,还有一个 class 用于将书籍保存在一个数组中,但我必须创建一个打印所有书籍的方法书名相同但年份不同,我碰巧这种代码失败是因为它复制了一些书,有没有办法防止这种情况发生在我身上?
void buscarNombre(string elemento){
int i, j;
int largo = 0;
bool primeraVez = true;
largo=contadorLibros();
for(i=0;i<largo-1;i++){
if (vec[i].getTitulo() == elemento){
for(j=i+1;j<largo;j++){
if (vec[j].getTitulo() == elemento){
if(vec[i].getAnnioImpresion() != vec[j].getAnnioImpresion()){
if(primeraVez == true){
cout<<vec[i].toString()<<endl;
primeraVez = false;
}
else{
cout<<vec[j].toString()<<endl;
}
}
}
}
primeraVez = true;
}
}
}
我不懂你的母语,但如果我能正确理解代码:
假设您有三本书,书名相同但出版日期不同,我们称这些书为 A,B,C.
第一个循环遇到A,开始循环第二个循环。遇到B时设置primeraVez = false
防止遇到C时再次打印;但是在第二个循环完成后,你重置了primeraVez = true
,所以当你在第一个循环中遇到B时,你在第二个循环中遇到[=21时重新打印书名=]C.
您可以通过从列表中删除您打印的书籍或制作一个 std::set
您想要打印的书籍并在搜索完成后打印来防止这种情况。
是否打印同名同年的书籍?以及为什么在 if 条件下打印标题可能 'cout' 在 else 条件内导致重复。