【问题标题】:I want to give a string a value of one我想给一个字符串一个值
【发布时间】:2009-11-26 20:46:10
【问题描述】:

我正在将球队名称输入足球联赛。

我设置了一个阵列,这样联盟最多可以容纳 4 支球队,

我还有一个数组,表明联盟中的球队数量正好是 4 支球队。

所以我想设置一个计数器来阻止我输入太多团队名称。

这是我的一小部分代码

str 团队名称

for(int i = 0; i < leagueSize; i++)

cout << "Enter a Team Name"<<endl'
cin >> teamName; 

那么有没有办法让我给团队名称赋值 1,这样每次我输入团队名称时,它都会递减数组中的数字,直到我无法添加更多团队?

我是 C++ 新手,学习时间不长,所以我可能完全不在这儿了。

提前致谢。

【问题讨论】:

  • 也就是说,我没有选择毫无顾忌地进入另一个团队对吧?这意味着在我的代码中我不需要在 cin 语句之后添加任何内容?
  • 你的 for 循环不是已经计算到 max LeagueSize = 4 了吗?所以最后你只会被问4次?你能提供更多信息吗?何时何地出错?顺便说一下,给你的 for 循环括号,因为它现在只占用第一行。所以 for(){ cout > 队名; }
  • 根据我在这里看到的,这就是我所说的。每次调用“cin >> teamName”时,都会要求您填写姓名。由于只问了 4 次,所以我从这段代码中看到的只能通过 4 个团队。
  • 旁白:不使用数组,学习标准模板库向量类(比数组更灵活、更安全):#include vector teamName; teamName.push_back(aTeam); teamName.push_back( anotherTeam );

标签: c++


【解决方案1】:

你快到了,你只是缺少一些花括号,你需要为团队名称声明一个数组而不是单个字符串:

#include <iostream>
#include <string>

using namespace std;

int main(void)
{
 int leagueSize = 4;
 string teamNames[leagueSize];
 for (int i = 0; i < leagueSize; i++) {
  cout << "Enter a team name:" << endl;
  cin >> teamNames[i];
 }

 cout << endl;
 cout << "The following teams have been entered:" << endl;
 for (int i = 0; i < leagueSize; i++) {
  cout << "Team " << (i + 1) << ": " << teamNames[i] << endl;
 }
}

【讨论】:

    【解决方案2】:

    A for controls 结构(以及 if、else 和 while)执行下一个单个语句或块。所以在你的例子中:

    for(int i = 0; i < leagueSize; i++)
        cout << "Enter a Team Name"<<endl;
    cin >> teamName;
    

    只有输出语句是 for 循环的一部分,输入语句只在整个循环完成后发生一次。

    所以,你要做的就是把你的代码放在一个块中:

    for(int i = 0; i < leagueSize; i++)
    {
        cout << "Enter a Team Name"<<endl;
        cin >> teamName;
    }
    

    许多 C 和 C++ 编码风格建议您始终使用块,即使您只有一条语句:

    for (...)
    {
        one-statement;
    }
    

    【讨论】:

      【解决方案3】:

      好的,所以我已经对代码进行了一些编辑,

      确切的说明说: 编写一个函数来输入所有团队名称并设置所有其他变量

      所以我可以在一个函数中完成所有这些,不是吗?

      这是我想出的完整功能 void addTeam(T *T, char *teamName, int i) {
      str 队名[leagueSize];

      for(int i = 0; i < leagueSize; i++)
      
      {
      cout << "Enter a Team Name"<<endl'
      cin >> teamName[i]; 
      }
      
      cout << endl;
      cout << "The following teams have been entered:" << endl;
      for (int i = 0; i < leagueSize; i++) {
      cout << "Team " << (i + 1) << ": " << teamNames[i] << endl;
      
      
      T[i].name = teamName;
      T[i].numPoints = 0;
      T[i].numGoalsFor = 0;
      T[i].numGoalsAgainst = 0;
      T[i].numMatchesPlayed = 0;
      T[i].numMatchesWon = 0;
      T[i].numMatchesLost = 0;
      T[i].numMatchesDrawn = 0;  
      

      }

      【讨论】:

      • 您不应该用新问题来回答您的问题 - 我怎么知道要阅读它?但是要回答您的问题 - 是的,没关系,尽管将 Team 成员的初始化放入 Team 类构造函数中会更好。这就是构造函数的用途。
      猜你喜欢
      • 2019-08-27
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 2013-11-17
      相关资源
      最近更新 更多