题目描述记得不是很清楚了,大概意思就是给你一个.exe,对应的也有mac和linux的可执行文件,给定一个输入会有一个输出,输入限制在[0,1)之间,可以精确到小数点后6位,当时只想到是调用.exe文件,只想到了用system()或者execl()函数,没有解决cin和cout的问题。最近了解了重定向之后,找到了解决办法。
直接放代码,只需要把输入写入到in.txt文件中即可,对于这道题,有效输入时0.000000到0.999999之间,把所有输入写到in.txt中,然后通过雷火给的可执行文件就可以得到对应的结果,并输出到out.txt中去。
#include<iostream>
#include <stdio.h>
#include <unistd.h>
using namespace std;
int main()
{
cout << "test" <<endl;
freopen("D:\\code\\QT\\CASE1\\case1\\in.txt","r",stdin);//重定向输入流
freopen("out.txt","w",stdout);//重定向输出
execl("C:\\Users\\yu408\\Desktop\\leihuo_2019_guess\\guess_windows.exe","guess_windows.exe",NULL);
fclose(stdin);
fclose(stdout);
return 0;
}
接下来的就很简单了,可以把输入输出存为键值对,直接查map即可,也可以吧in.txt和out.txt用matlab做拟合,得到拟合方程,写入到代码也能解决。
https://download.csdn.net/download/wuyiyong8023/11573798文中可执行文件的链接,这上面好像必须要C币或者积分才能下载,自己随便这个类似的测试一下就行。