首页 > 解决方案 > 协助 getRandomCode

问题描述

任何人都可以帮我处理我的代码,如下所述,我需要创建一个名为 getRandomCode 的函数来从文本文件中获取 10 个代码,读取它们,然后随机选择一个作为密码。我开始了,但我坚持需要一些帮助才能继续前进

一个函数 (getRandomCode),它将一个四元素整数数组(代码)作为输入。然后该函数将继续打开文件 codes.txt 并尝试读取最多 10 个四位数代码。如果文件无法打开,该函数应返回 false。否则,该函数将按如下方式进行: – 读取文件的每一行并将其放入一个数组中(我推荐一个包含 10 个字符串的数组)。– 读取代码后,您应该播种随机数生成器 (srand(time(0))) 并使用 rand() 在 0 和您读取的代码数之间选择一个随机数。提示:考虑一下您的文件处理循环将如何跟踪读取的代码数量。

– 一旦您选择了一个随机代码,您必须将数字复制到四元素数组代码的相应元素中。为此,您需要

将字符转换为数字。例如,由于每个字符都是一个数字,我们只需从所选代码字符串的零位字符中减去“0”,并将结果分配给 code[0]。– 填充代码数组后,我们返回 true 表示成功。您可以放心地假设该文件的格式设置为每行只有一个代码。但是,您可能不会假设文件中正好有 10 个代码。

这是我到目前为止所拥有的:

int getRandomCode(int code[4])
{
ifstream inFile;
inFile.open("codes.txt");
int getCode[10];
int a = 0;

if(!inFile){
    cout<<"Error opening output file"<< endl;
    return -1;
}
while(!inFile.eof())
{
    getline(inFile, getCode[a], '');
    srand(time(0));
    int randomInt = (rand(getCode));
}

}

标签: c++

解决方案


读取多个整数的首选方法

这是一个用于读取多个整数、空格或换行符分隔并放入数据库的代码片段:

int value;
std::vector<int> database;
while (inFile >> value)
{
  database.push_back(value);
}

您可以将std::vector其视为一个数组,例如value = database[3];. 该std::vector作品也很好std::sort

限制输入数量

您可以添加一些额外的代码来限制读取的数字数量:

const size_t MAXIMUM_INTEGERS = 10;
size_t quantity = 0;
int value;
std::vector<int> database;
while ((quantity < MAXIMUM_INTEGERS) && (inFile >> value))
{
  database.push_back(value);
  ++quantity;
}

读入数组

如果一定要使用数组(因为赋值限制),代码类似上面的限制代码:

const size_t MAXIMUM_INTEGERS = 10;
size_t quantity = 0;
int value;
int array[MAXIMUM_INTEGERS];;
while ((quantity < MAXIMUM_INTEGERS) && (inFile >> value))
{
  array[quantity] = value;
  ++quantity;
}

读取字符串

读取字符串而不是整数使用相同的方法/模式:

std::string number_as_text;
size_t quantity_read = 0;
std::vector<std::string> database;
while (std::getline(inFile, number_as_text))
{
  database.push_back(number_as_text);
  ++quantity_read;
}

推荐阅读