你如何使用这个数组而不是要求输入?

时间:2012-10-25 13:36:52

标签: c++ arrays

在课堂上学习数组。尝试通过使用我的数组而不是下面的示例来使用下面的代码来理解它们。

数组示例:

string[16] = {"Toelle","Red Lightning","Penguins","Tigers","You Know It","VP4LIFE","OG      WOW","Indy","Ok","NOSER","LAK State","THE State","NY","Ks","Tahaa","Fosda"};

代码:

#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;

// This program inputs a list of team names and runs a random tournament to find the winner.

void print_teams(string *ptr, int size)
{
    for(int team = 0; team < size; team++)
    {
        cout << "Team "<<team<<"="<<ptr[team]<<endl;
    }
}
int main()
{
    const int NTEAMS=4;
    string *teams = new string[NTEAMS];

    // Get input from the user for the teams
    for(int team = 0; team < NTEAMS; team++)
    {
        cout <<"Enter the name for team #"<<team<<":";
        getline(cin, teams[team]);
    }
    print_teams(teams, NTEAMS);

    int teams_left = NTEAMS;
    string *team_ptr = teams;

    for(int round = 0; teams_left > 1; round++) {
        // Allocate space for the winners
        int new_size = teams_left/2;
        string *new_teams = new string[new_size];
        // Run a round of the tournament
        for(int team = 0; team < teams_left; team+=2) 
        {
            // Pick a winner
            int winner = rand()%2;
            //update the winners array
            new_teams[team/2] = team_ptr[team+winner];
        }
        cout << "Round "<<round<<endl;
        print_teams(new_teams, new_size);
        // Update the size and team pointer for the next round
        teams_left = new_size;
        // Free up the space for the old teams list
        delete[] team_ptr;
        team_ptr = new_teams;
    }
    system("pause");

}

1 个答案:

答案 0 :(得分:0)

您需要将使用数组的代码移动到一个单独的函数,该函数接收数组作为参数。该数组可以从cin,或硬编码,或从任何其他来源读取。这样,您可以在两种情况下重用代码。这里的关键概念是将输入与实际计算分离。