带有随机字符的“Transposed .txt文件”是否可能?

时间:2011-03-08 23:55:29

标签: c++

  

可能重复:
  Creating “transposed” files with random characters

嘿人,

我正在编写一个程序,用随机字符创建“.txt”文件,我想创建转置的“.txt”文件,其中包含以前以随机方式写入的相同数据。在这里,我添加了两个“.txt”文件的示例,正​​如我打算做的那样。 认为每个字母或数字都是随机字符串,例如“A”将是“ih65ds8ds69”

FILE1

A|B|C|D|E|F|G|
H|I|J|K|L|M|N|
O|P|Q|R|S|T|U|
V|W|Z|1|2|3|4|


FILE2 (FILE1 transpossed)

A|H|O|V|
B|I|P|W|
C|J|Q|Z|
D|K|R|1|
E|L|S|2|
F|M|T|3|
G|N|U|4|

我附加的程序最简单的事情是:

FILE2 (FILE1 transpossed)

A|B|C|D|
E|F|G|H|
I|J|K|L|
M|N|O|P|
Q|R|S|T|
U|V|W|Z|
1|2|3|4|

所以现在我附上我写的代码,这样你就可以看看并给我一些关于如何修改它以获得我想要的想法。

#include<iostream>
#include<fstream>
#include<stdio.h>
#include<string>
#include<ctime>

using namespace std;

int main()
{
int rows, columns, element1; 

char word[10];

    ofstream myfile ("File 1.txt");
    if(myfile)
    srand(1);
    for(rows=0;rows<10;rows++)
    {
        for(columns=0;columns<30;columns++)
        {
            element1 = rand() % 100000 + 1;
            int len = rand () % 4 + 4;
            word [len] = 0;
            while (len) word [--len] = 'A' + rand () % 58;

            myfile<<element1<<word;
            myfile<<"|";
        }
        myfile<<endl;

    }
    myfile.close();


    ofstream myfileS ("File 2.txt");
    if(myfileS)
    srand(1);
    for(columns=0;columns<30;columns++)
    {
        for(rows=0;rows<10;rows++)
        {

            element1 = rand() % 100000 + 1;
            int len = rand () % 4 + 4;
            word [len] = 0;
            while (len) word [--len] = 'A' + rand () % 58;

            myfileS<<element1<<word;
            myfileS<<"|";
        }
        myfileS<<endl;
    }
    myfile.close();



system("pause");
return 0;

}

非常感谢你的帮助! :d

2 个答案:

答案 0 :(得分:3)

使用二维数组 - 并更改打印顺序:)。

答案 1 :(得分:0)

最简单的做法可能是将输入文件中的字符串加载到二维数组(MxN)中。然后,创建输出文件将涉及简单地向下迭代列和跨行。

您的代码似乎为文件1和文件2生成随机数据。请发布生成您发布的输出的代码。如果没有看到你做了什么,就很难给你任何具体的建议。

编辑:没关系,我错过了您用于强制在两个循环中生成相同随机数据的srand(1)

不是生成随机数据并立即将其打印到文件,而是使用随机数据值填充MxN数组。然后,迭代该数组两次,随时打印数据。一个循环将遍历行之前的列和列之前的其他行。