gpt4 book ai didi

C++ 读取 .txt 文件 + 二进制搜索 + 排序;上课有问题

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

所以我需要从一个input.txt文件中读取10,000个数字,然后搜索它是否在数组中,如果不在,则将其插入并递增频率数组中的频率值。然后我需要按频率数组对数组进行降序排序。我知道我仍然缺少很多......但我的主要问题是在 main.cpp 中找到的。当我引用 TermTable.BinarySearch 和 TermTable.Sort 时,我得到“错误:需要一个标识符”。这是我的 main.cpp 文件。所以我最大的问题是:为什么我不能访问类 TermTable 中的方法??

#include <cstdlib>
#include <iostream>
#include <fstream>
#include "TermTable.h"

using namespace std;

int main(){
const int size = 10000;
int termArray[size];
int frequencyArray[size];
char * charArray = new char[size];
int position = 0;
ifstream fin("input.txt");
if (fin.is_open())
{
cout << "Open" << endl;
while (!fin.eof() && position < size){
fin.get(charArray[position]);
position++;
}
charArray[position - 1] = '\0';
for (int i = 0; charArray[i] != '\0'; i++)
{
termArray[i] = charArray[i];
}
for (int i = 0; termArray[i] != '\0'; i++){
int searchValue = termArray[i];
TermTable.BinarySearch(int termArray, int size, int searchValue);
if (position != -1){ frequencyArray[i] += 1; }
else if (position == -1){
frequencyArray[i] = 0;
}

}
TermTable.Sort(int termArray, int size);
}
else
{
cout << "couldn't open" << endl;
}
return 0;
}

这是我的规范 .cpp 文件。

#include <iostream>
#include <cstdlib>
#include "TermTable.h"
using namespace std;


int TermTable::BinarySearch(int array[], int size, int searchValue){
int first, last, middle, position; bool found; first = 0; last = size - 1; found = false; position = -1;
while (!found && first <=last)
{
middle = (first + last) / 2;
if (array[middle] == searchValue)
{
found = true;
position = middle;
}
else if (array[middle] > searchValue)
last = middle - 1;
else
first = middle + 1;
}
return position;
}

void TermTable::Sort(int array[], int size){
int temp; bool swapOccurred;
do{
swapOccurred = false;
for (int count = (size-1); count > 0; count--)
{
if (array[count] < array[count - 1])
{
temp = array[count];
array[count] = array[count - 1];
array[count - 1] = temp;
swapOccurred = true;
}
}
} while (swapOccurred);
}

这是我的类(class)文件。

#include <cstdlib>
#include <iostream>
using namespace std;

//class specification
class TermTable {

public:
//constructor
TermTable();

//member functions
int BinarySearch(int array[],int size, int searchValue);
void Insert(int value);
void Sort(int array[],int size);

//destructor
~TermTable();

private:
//data
int currentAmount;

};

最佳答案

我发现了两件事:

  1. 方法 BinarySearch()Sort() 是类 TermTable成员函数,而不是 < em>静态方法。因此,您需要实例化 TermTable,然后使用该对象调用这些方法。

main() 中:

TermTable termTableObj;
termTableObj.BinarySearch(...);
...
termTableObj.Sort(...);
  1. 调用方法时,只需要传变量名,不传变量类型,如:

    TermTable termTableObj;
    termTableObj.BinarySearch(termArray, size, searchValue);
    termTableObj.Sort(termArray, size);

关于C++ 读取 .txt 文件 + 二进制搜索 + 排序;上课有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27977421/

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