-2

私はC ++でのプログラミングにかなり慣れていないので、表示したい

表示方法は、この形式の output.txt ファイルを生成します。

ABCDEFGHIJKLMNOPQRSTU VWX YZ

TWGXZRLLNHAIAFLEWGQHV RNVDU

テキストファイルに含まれていますが、なぜゴミとして表示されるのかわかりません。

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream> 
using namespace std;


void random (std::ostream& output)
{
     int letter[26];
     int i,j,temp;

    srand(time(NULL));


        for(i=0; i<26; i++)
            {
                 letter[i] = i+1;
                 output<<(char)(letter[i]+'A'-1)<<" "; 
//by ending endl here i am able to display but the letter will display in horizontal which is not what i wanted     

            }    

        for(i=0; i<26; i++)
        {
            j=(rand()%25)+1; 
            temp = letter[i];
            letter[i] = letter[j];
            letter[j] = temp;
             output<<((char) (letter[i]+'A'-1))<<" ";
        }



}
4

1 に答える 1

0
void random (std::ostream& output)
{
     int letter[26];
     int i,j,temp;

    srand(time(NULL));


        for(i=0; i<26; i++)
        {
             letter[i] = i+1;
             output<<(char)(letter[i]+'A'-1)<<" ";      

        }    
        output << "\n";        //that's all what you need
        for(i=0; i<26; i++)
        {
            j=(rand()%25)+1; 
            temp = letter[i];
            letter[i] = letter[j];
            letter[j] = temp;
             output<<((char) (letter[i]+'A'-1))<<" ";
        }



}

将来的には、std::endl を使用しないでください。これは、望ましくない可能性があるストリーム バッファーもフラッシュするためです。代わりに「\n」を使用してください。しかし、関数全体はもっと簡単にできます:

void random (std::ostream& output)
{
    srand(time(NULL));


        for(int i = 65; i < 91; ++i)            // i == 65, because it's A in ASCII
            output << (char)i << " ";
        output << "\n";        //that's all what you need

        for(int i=0; i<26; i++)
        {
             output <<((char)(rand()%26 + 65))<<" ";
        }
}
于 2012-07-17T16:30:51.190 に答える