我正在完成本学期的最后一次编程工作(我的最后一个计算机程序,我想看到我改变了专业),并且遇到了一些障碍。赋值要求我们编写两个程序,一个程序从文件中读取一些信息并创建一个哈希表,并将其保存到输出文件中。第二个程序应该允许用户输入密钥,程序将在该输出文件中搜索密钥,并在找到时返回它包含的信息。
我还处于这个计划的计划阶段,我喜欢在实际开始编码之前将它们全部写在纸上,因为出于某种原因它有助于我弄清楚发生了什么更好,但我认为我的程序创建哈希表应该工作,因为它几乎与我们几周前编写的程序完全相同,只是创建了哈希表(手指交叉),但我在搜索程序上遇到了问题。我的搜索程序实际上只有一种方法来搜索文件以查找用户输入的密钥。如果我包含我在上面提到的仅创建哈希表的程序中使用的搜索功能的代码,可能更容易解释我的具体问题。
void Hash::findItem(int key) {
int index = hash(key);
bool wasFound = false;
record* ptr = hashTable[index];
while(ptr != NULL) {
if(ptr->key == key) {
wasFound = true;
key = ptr->key;
}
ptr = ptr->next;
}
if(wasFound == true) {
cout << key << " " << name << " " << code << " " << cost << " " << index << endl;
}
else {
cout << "The key " << key << " was not found in the table." << endl;
}
}
Hash是我在程序中用于创建表的类的名称,而record是用于保存每条记录信息的结构的名称。其他一切都应该是不言自明的。
所以这就是我遇到麻烦的地方。几乎这个代码中的所有东西都是在我的第一个程序中实际声明和定义的,但是这个方法/函数(不确定正确的术语,我正在用3种不同的语言编写3个编程类,所以我一直处于混乱状态)只会在我的搜索程序中使用。我不知道如何连接两个程序(如果这是有道理的)。比如,如何让我在第一个程序中创建的内容可用于我的搜索程序?
我为漫无边际而道歉,我在编程方面的表现并不比我更好。希望这很清楚。如果我需要包含任何其他信息,请告诉我,我很乐意帮忙。提前感谢您提供的优质人员帮助。
注意 我使用“继承”作为这篇文章的标签之一,我不确定这是继承的问题,但我觉得它可能是。如果您不这么想请告诉我,我可以删除它,因为我想确保这不会在错误的地方结束并浪费任何人的时间。
答案 0 :(得分:2)
假设您有4个文件:
所有cpp文件都应包含common.h
现在您可以按如下方式编译:如果要调试,可以向每行添加-g
。
g++ -c common.cpp -o common.o
g++ -c main1.cpp -o main1.o
g++ -c main2.cpp -o main2.o
g++ main1.o common.o -o main1
g++ main2.o common.o -o main2
前3行是编译源文件到目标文件。
最后2个是将对象链接到可执行文件。
请注意,您只需要有4个文件......