1

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

数组示例:

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");

}
4

1 回答 1

0

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

于 2012-10-25T13:57:52.787 回答