我正在做一个C ++课程,并在学年开始我们得到一个模拟cw /练习。它没有标记,只是为了练习。 基本上,我们必须这样做
(a)从文件中读取文本并将其内容存储在任何数组中 字符A.(b)计算出现次数和次数 A中的每个字母使用两个并行数组(B和C):一个包含 26个字母和另一个包含其对应的字母 发生的百分比。 (c)使用排序算法(例如, 冒泡排序算法)对上面两个并行数组进行排序 发生百分比的降序。 (d)申请(b)和(c) 培训和编码文本。存储两组并行 数组(用于训练和编码文本)以供进一步使用。 (e)使用上面两组排序的并行数组来查找和 在训练中显示字母的一对一映射并进行编码 文本。 (f)用编码信息中的字母代替字母 它们代表(g)以交互方式询问用户一对字符, 将它们存储在两个字符变量中(例如,X和Y)和 将所有出现的字母X替换为数组中的字母Y. 字符。 (h)保存存储在字符数组中的解码文本 到一个文件。 (i)能够重复(f),(g)和(h)多次 用户的意愿。
我们首先要做一个程序代码,然后是面向对象的。
#include <fstream> //for file I/O
#include <iostream> //for cout, endl
#include <string> //for countletters
using namespace std;
int countletters(/*in*/ int& sum) //counting the number of letters contained in the file
{
string line;
ifstream inData ;
inData.open("encoded.txt");
while(!inData.eof())
{
getline(inData,line);
int numofChars= line.length();
for (unsigned int n = 0; n<line.length();n++)
{
if (line.at(n) == ' ')
{
numofChars--;
}
}
sum=numofChars+sum;
}
inData.close();
//sum is the number of letters inside the encoded.txt file
}
void fileintoarray(int& sum)
{
int arraysize = sum;
char myArray[arraysize];
char current_char;
int num_characters = 0;
int i = 0;
ifstream myfile ("encoded.txt");
if (myfile.is_open())
{
while (!myfile.eof())
{
myfile >> myArray[i];
i++;
num_characters ++;
}
for (int i = 0; i <= num_characters; i++)
{
cout << myArray[i];
}
system("pause");
}
}
int main()
{
int sum=0;
countletters();
fileintoarray();
return 0;
}
这是我到目前为止写的,第二个功能不起作用。 它无法编译。
有人可以帮我这个吗?
答案 0 :(得分:3)
您正在访问函数“fileintoarray”中的变量“sum”,但它不在您在“countletters”中声明的范围内。
学习如何返回值以及如何将参数传递给函数 - 或者,如果您尚未学习并且应该相处 - 请使用全局变量,因为这有点像面向对象的版本将是