简单的解码程序C ++

时间:2013-11-26 17:28:48

标签: c++ decoding

我正在做一个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;
}

这是我到目前为止写的,第二个功能不起作用。 它无法编译。

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:3)

您正在访问函数“fileintoarray”中的变量“sum”,但它不在您在“countletters”中声明的范围内。

学习如何返回值以及如何将参数传递给函数 - 或者,如果您尚未学习并且应该相处 - 请使用全局变量,因为这有点像面向对象的版本将是