저는 C++을 처음 접했을뿐입니다. 나는 올해 학습을 시작했습니다. 텍스트 문서를 가져 와서 배열에 저장하는 작은 프로그램을 작성하는 데 문제가 있습니다. 그 배열을 가져 와서 특정 방식으로 값을 랜덤 화하십시오. 라이더와 말을 적당한 위치에 배치하는 것은 수색 프로그램을위한 것입니다.규칙 집합으로 배열을 셔플하고 함수에서 값 반환
이 함수 (gen())에서 시도하려는 것은 [num2] 항목을 entry2 [num2]에 복사하는 것입니다. 여기서 num은 해당 항목의 양이고 num2는 임의로 생성 된 rand() 번호입니다. 나는 그 다음에 새로운 항목이 적어도 15 자리 이상 (이 경우에는 말의 라이더가 다음 이벤트 전에 휴식을 취할 수 있음)
정도로 추측 할 수 있도록 확인했습니다. 이 응용 프로그램은 작동하지 않습니다, 메신저 쉬운 방법이 있다고 생각하십니까? 변수를이 배열로 보내려면 어떻게해야합니까? 그리고이 함수가 배열을 내 메인으로 되돌릴 수있는 방법은 무엇입니까? 포인터를 통해 추측하고 있습니까?
아래에 전체 코드를 첨부했습니다. - 한, 그 사본을 랜덤 std::random_shuffle
를 사용
/* ________________________________________________________________________________
* | TITLE: main.cpp |
* | AUTHOR: Samuel Abbott ([email protected]) |
* | PURPOSE: to take camp draft data in, randomise it with certain values, |
* | and output the new roster as a text document |
* | DATE: may 1, 2012 |
* | LAST EDIT: may 3,2012 |
* |______________________________________________________________________________|
*/
#include <iostream>
#include <string>
#include <stdlib.h> //random number
#include <time.h> //random number
#include <fstream> //used for input/output of external files
using namespace std;
/*
* TITLE: gen
* PURPOSE: to randomise the entries , check to see if they are more then 15 units apart, and return a pointer to the randomised array
* string entry[] holds original values
* int num [] holds number of entries
*/
sting gen(string entry[], int num)
{
int count = 0;
string entry2[num]; //randomised array
/* initialize random seed: */
srand(time(NULL));
for (count =0; count < num)
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
/* a series of if checks to make sure the entry is no less then 15 positions from the previous entry */
if (entry2[num2]=entry[num-15])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-14])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-13])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-12])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-11])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-10])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-9])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-8])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-7])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-6])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-5])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-4])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-3])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-2])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else if (entry2[num2]=entry[num-1])
{
num2 = rand() % num; //generate random number
entry[num] = entry2[num2]; //copy number from array to a random position in the next array
}
else
{
entry[num] = entry2[num2];
}
}
string pointer* = entry2[]
return pointer
}
/*
* Title : Loading
* Purpose: This function generates a loading animation. in other words. just a fancy graphic.
* HAS NO LOADING PURPOSE
*/
void loading()
{
/* Declare loading variable, this variable is just the screen printout */
string loading = "...";
int time = 0;
int loadtime = 10;
/* print out loading animation */
while (time != loadtime)
{
cout << loading;
time++;
}
}
void loading();
/*
* Title: Main
* Purpose: this is the main function for the randomisation program
*/
int main()
{
//declare all variables
string fname = "";
int count;
string line;
ifstream inputfile;
char c;
int num=0;
/* introduction */
cout << "Roster Randomisation Generator" << endl;
/* Get input for roster name */
cout << "Enter a name for the roster, such as 13022012coolah:"<<endl;
cin>> fname;
/* Begin generating roster */
cout << "Roster Generation in progress." << endl;
loading();
/* get amount of lines in text file .. used to determine how many entries there are to avoid printing blank spaces*/
inputfile.open("output.txt");
while (inputfile.good())
{
c = inputfile.get();
if (c=='\n')
{
num++;
}
}
inputfile.close();
cout<<"Number of Entries counted is: "<<num<<endl;
string entry[num];
cout << "Grabbing entries from entry file..."<<endl;
/* open text file*/
inputfile.open("output.txt");
/* read all data into the array entry[] */
for (count = 0; count < num; count++)
{
getline(inputfile,line); //Gets a single line from example.txt
entry[count]=line;
// inputfile >> entry[count];
}
inputfile.close();
cout <<"Found the following entries: " <<endl;
/* output captured entries*/
for (count =0; count < num; count++)
{
cout <<entry[count] <<endl;
}
return 0;
}
다음 질문을 핵심 문제로 줄이십시오. –