文件输入输出和Visual studio 对拍技巧

19 篇文章 0 订阅
5 篇文章 0 订阅

以前一直是用控制台cv输入输出的,有些题这样真的太麻烦了,首先是debug完要重新粘贴,而且比对输出和答案太麻烦了(打cf的时候多是一个样例一个输出,输入和输出混在一起)。

所以研究了两天文件输入和比对,还熟悉了一下visual studio的操作。这里总结一下。

1.文件输入输出

在源文件中创建txt文本即可直接用相对路径访问。

此处的correct文本为正确答案用于比对输出

#pragma warning(disable:4996);
//visual studio有时候会报安全错误,这个可以无视
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);

2.visual studio 2022对拍

可以先暴力写一个测试函数保证答案正确 。

随机数据用<random>里的mt19937

#include<iostream>
#include<random>
using namespace std;
#pragma warning(disable:4996);
mt19937 rnd(time(0));//种子
long long   random(long long  s, long long e) {
    long long  t = (int)((1.0 * rnd() / UINT_MAX) * (e - s + 1) + s);
    return t;
}
#define r(a,b) random(a,b)
int main() {
    freopen("in.txt", "w", stdout);
    
}
//可以取到2^19973-1

 ①新建一个cpp文件暴力写进去用来测试

--对暂时不需要的cpp文件可以右键属性

 出现×说明改文件暂时不起作用

 

-----------------------------------------------------------------------------------------------------------

 随机数生成的文件里打入自定义的随机数格式代码

#include<iostream>
#include<random>
using namespace std;
#pragma warning(disable:4996);
mt19937 rnd(time(0));
long long   random(long long  s, long long e) {
    long long  t = (long long)((1.0 * rnd() / UINT_MAX) * (e - s + 1) + s);
    return t;
}
#define r(a,b) random(a,b)
int main() {
    freopen("in.txt", "w", stdout);
    int t1 = r(1, 20) ;int  t2 = r(1, 20);
    cout << t1<<" "<< t2<<endl;
    for (int j = 1; j <= t1; j++) {
        cout << r(1, 20) << endl;
    }
}

 输入文件就准备好了

 然后运行对拍标准程序

 

correct文件中出现结果

然后运行主程序(记得关闭原程序)

对比得到,对拍成功!

 3.文件差异比对

win+r打开cmd

 输入

fc "文件地址" "文件地址"

比对两文本。

这是有差异的情况;

这是无差异的情况。 

 visual studio内部也有cmd命令,而且更加方便

 视图—其他窗口-命令窗口

 输入以下命令(他会有智能提示)

 他会指名错误

 

 

总结:

对拍最好有这些文件——

 Test就是你本题的正确解法

in,out输入输出

correct.txt为答案

random.cpp产生随机数输入

answer.cpp为暴力但正确的解法

不过visual studio还是比较麻烦,建议使用vscode

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值