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 に答える