生成随机.txt文件,10行,10列。充满随机:"*"、"#"、"@"。然后将随机字符替换为'P'
Generate random .txt file, 10 rows, 10 columns. Filled with randomised: "*","#","@". Then replace random character with 'P'
我是C++的初学者。主要从YouTube课程中学习。当我遇到阻止我完成的问题时,我正在做这项任务。我想在代码部分寻求帮助。
#include#include<时间>#include<马斯>#include #include<串>#include<流>#include<流>#include<流>使用命名空间标准; int main(( { 斯兰德(时间(0((; 流文件; cout<<"任务"<<""; file.open("TASK.txt", fstream::in | fstream::out | fstream::trunc (; if(file.good(( == true( { cout<<"TRUE"<<""; char ch[] = {'#','@','*'};三个字符的数组。 for(int i=0; i<10; i++( { for(int j=0; j<10; j++( { file<<ch[rand((%3];随机字符 } 文件<<endl; } file.seekp(rand((%120(; file.put('P'(; file.close((; } else cout<<"FALSE"<<""; 返回 0; }流>流>流>串> 马斯>时间>
我做了什么:
-
打开一个文件并从任务描述中创建了 3 个字符的数组。
-
创建了 2 个用于写入和格式化文件数据的循环。
-
通过使用 file.seekp(0,file.end( 发现文件中的字符数等于 120。
-
使用字符数的知识 file.seekp(rand((%120( 将输出序列中的位置设置为随机位置。
-
使用 file.put('P'( 将字符放置在该位置。
-
关闭的文件。
我不知道的:
-
如何摆脱(或做其他事情(这 20+ 个字符以仅更改这些字符:"#"、"@"、"*"。
-
要可视化问题,请执行以下操作:
输出:当它按预期工作时。
@#*#*##@*@
@@*##*@@@*
@@**@#*@##
#@@*@##P**
****##@@*#
#@#@*@####
**#@#@#@*@
@*#*@###*#
*@###*#@*#
@@*#@@#@@@
当它没有按预期工作时:
@@@#@@@*#*
##*##*@@#*
@@##@#*#*@P
*@@@**###*
##*@*#*@**
**##@#*@**
@###@*#***
@#@**##@@*
#@*###@@@*
@#@#*#*#@#
如果我不够清楚,我可以尝试解释更多。
解决方案(感谢 Rustyx(
int r_number = 0;
for(int i=0; i<=120; i++)
{
int r_number2 = rand()%120;
if((r_number2%12)>=10)
{
r_number2 = rand()%120;
}
else r_number=r_number2;
}
谢谢。
问题是每行末尾都有CR,LF字符(rn
(,不应该被触摸。但是您生成一个介于 0 和 119 之间的随机数,这可能会击中这些并损坏文件。
我可以想到2种可能的解决方案:
- 循环并得到一个新的随机数,如果除以 12 的余数是>= 10(你知道为什么吗?
- 获取一个介于 0 和 99 之间的随机数,并将其填充为 CR,LF:
x += (x/10)*2
我不知道VC++如何在文本模式下处理文件位置,它可能会将CR,LF视为单个位置。在这种情况下,将填充逻辑从 12 调整为 11。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 为什么 Serial.println(<char[]>);返回随机字符?
- 字符串-C++后显示的随机字符
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 循环中的随机函数
- 在c++构造函数中使用随机字符串生成器
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- boost::asio如何生成多个协同程序,然后加入它们
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 生成随机.txt文件,10行,10列。充满随机:"*"、"#"、"@"。然后将随机字符替换为'P'
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- C++读取大文件并将其保存到字符串中,然后删除特定的随机单词
- 将集合的随机元素添加到列表中,然后将其从原始集合中移除
- SDL_Mixer再次播放时,从随机位置开始一段时间,然后从头开始
- 随机选择一个 0 到 8 之间的数字,直到没有数字可以选择,然后重新开始
- 输入文件中的单词列表,然后选择一个随机单词
- 从txt文件中读取一个随机行,然后在QT SDK中对其进行修剪
- 生成一个随机文件名,然后创建文件,在c++中
- 视频AR无人机的随机帧为空,然后无法使用OpenCV获取新图像