C 类变量整数具有不同的值

  • 本文关键字:类变量 整数 c++
  • 更新时间 :
  • 英文 :


嗨,我正在尝试制作一个简单的库服务程序

类代码

class bookEntry {
public:
int copies;
char name[30];
char author[30];
};
class library {
public:
bookEntry database[50];
int numBooks = 0;
void insertBook (char bookName[], char author[], int c); // Add
void deleteBook (char bookName[]);  // Delete
//bookEntry *search(char bookName[]);   // Not worked yet
void print(void);     // Print_List
};

主代码

void library::insertBook(char bookName[], char author[], int c) {   // AddBook
int i, j;
cout << bookName << author << c;
for (i = 0; i < numBooks+1; i++) {
    string a = (database[i].name);      // Compare Book Title
    if ((a.compare(bookName)) == 0) {           // If it's same
        database[i].copies += c;                // add to copies and pass
        break;
    }
    else {
        database[numBooks].copies = c;
        strcpy(database[numBooks].name, bookName);       // Add New Book
        strcpy(database[numBooks].author, author);
    }
}
numBooks += 1;
}
void library::print(void) {                     // Print Books
cout << "BookName        Author        Copies" << endl;
for (int i = 0; i <= numBooks; i++) {
    cout << database[i].name << "   " << database[i].author << "   " << database[i].copies << endl;
    }
}

Numbooks =不同类型的书籍的总数

我得到的结果是在bookEntry阵列上的第一个值。但是,当我放置另一个值时,数字(copies(的数字不同,然后我插入了。另外,当我提出之前插入的值时,表现良好。喜欢结果

为什么会发生这种情况?我把变量错了吗?

来源:main_file

逐步浏览代码应与调试器一起向您展示:

您正在检查每本书是否匹配您要添加的书,然后,对于比较失败的每个迭代,更新新输入的书的名称和副本。

这意味着,您将与第一本书进行比较,它失败了,因此添加了第二本书。然后,您将其与(新添加的(第二本书进行比较,请参阅它确实匹配并再次更新副本数。第二本书显示的副本数量完全是您输入的数字的两倍。

您需要做的是检查每个现有副本,然后,只有在检查了所有现有书籍后才找到本书,然后添加新书。

相关内容

  • 没有找到相关文章