3.设计一个程序,完成如下功能: (1)定义一个函数,产生指定数量的随机整数,整数返回在[0,10000]之间,并将这些整数分别保存到文本文件random_number.txt和二进制文件random_number.dat。 (2)定义一个函数,从二进制文件random_number.dat中读取所有整数。 (3)定义一个函数,从二进制文件random_number.dat中读取指定位置的某个整数或某几个整数。 (4)验证上述函数的功能。C++实现,多文件程序,按文件给出代码,要求有充足的提示信息提示用户输入有关信息
时间: 2024-02-28 15:56:59 浏览: 81
将一个整数S随机拆分为N个在min~max之间的整数.txt
以下是C++实现的代码,分为三个文件:
1. main.cpp
```c++
#include <iostream>
#include <fstream>
#include "random_number.h"
using namespace std;
int main() {
// 产生随机整数并保存到文件
int n;
cout << "请输入要产生的随机整数数量:";
cin >> n;
random_number_generator(n);
// 从二进制文件中读取所有整数
ifstream fin("random_number.dat", ios::binary);
int count = read_all_numbers(fin);
cout << "从二进制文件中读取了" << count << "个整数" << endl;
fin.close();
// 从二进制文件中读取指定位置的整数
int pos;
cout << "请输入要读取的整数位置(从0开始):";
cin >> pos;
int num;
if (read_number_at_position(pos, num)) {
cout << "位置" << pos << "的整数是:" << num << endl;
}
else {
cout << "读取失败!" << endl;
}
return 0;
}
```
2. random_number.h
```c++
#ifndef RANDOM_NUMBER_H
#define RANDOM_NUMBER_H
#include <fstream>
void random_number_generator(int n);
int read_all_numbers(std::ifstream& fin);
bool read_number_at_position(int pos, int& num);
#endif
```
3. random_number.cpp
```c++
#include <iostream>
#include <fstream>
#include <cstdlib>
#include "random_number.h"
using namespace std;
void random_number_generator(int n) {
// 产生随机整数并保存到文件
ofstream fout_txt("random_number.txt");
ofstream fout_bin("random_number.dat", ios::binary);
for (int i = 0; i < n; i++) {
int num = rand() % 10001;
fout_txt << num << endl;
fout_bin.write(reinterpret_cast<const char*>(&num), sizeof(num));
}
fout_txt.close();
fout_bin.close();
}
int read_all_numbers(ifstream& fin) {
// 从二进制文件中读取所有整数
fin.seekg(0, ios::end);
int count = fin.tellg() / sizeof(int); // 整数个数
fin.seekg(0, ios::beg);
int* nums = new int[count];
fin.read(reinterpret_cast<char*>(nums), count * sizeof(int));
for (int i = 0; i < count; i++) {
cout << nums[i] << " ";
}
cout << endl;
delete[] nums;
return count;
}
bool read_number_at_position(int pos, int& num) {
// 从二进制文件中读取指定位置的整数
ifstream fin("random_number.dat", ios::binary);
fin.seekg(pos * sizeof(int), ios::beg);
if (fin.eof()) {
fin.close();
return false;
}
fin.read(reinterpret_cast<char*>(&num), sizeof(int));
fin.close();
return true;
}
```
运行结果示例:
```
请输入要产生的随机整数数量:10
从二进制文件中读取了10个整数
请输入要读取的整数位置(从0开始):3
位置3的整数是:7838
```
阅读全文