C语言中的算法-谁是赢家

时间:2019-03-04 11:49:13

标签: c arrays string algorithm data-structures

我需要存储比赛数据。我需要知道有多少支球队可以参加(n),以及他们要参加的比赛数量(n!)。然后,团队的名称及其结果。像这样:

const fetchEmployees = async () => {
  try {
    const response = await fetch("http://localhost:6873/api/values", {
      method: "GET",
      headers: {
        "content-type": "application/json"
      }
    });

    const names = await response.json();

    return names;
  } catch (error) {
    return error;
  }
};

输出将类似于:

Input: 
3 6
TeamX
TeamY
TeamZ
TeamX 0 - TeamY 3
TeamX 1 - TeamZ 0
TeamY 1 - TeamX 0
TeamY 0 - TeamZ 0
TeamZ 0 - TeamX 0
TeamZ 3 - TeamY 1

EDIT2: 这就是我到目前为止所拥有的。但这在scanf上不起作用。...我无法在球队和比赛的数量之后输入球队的名称。您可以运行它并尝试理解吗?


指南:我有游戏和团队结构,首先将团队名称添加到Teams结构数组,然后将游戏添加到游戏结构数组。然后,如果/其他阻止进行胜利,失败等的数学运算,最后看到并打印出获胜者。

This winner is TeamY, with 7 point(s)
Won 2 game(s), tied 1 game(s) e lost 1 game(s)
Scored 5 goal(s) e suffered 3 goal(s)

2 个答案:

答案 0 :(得分:4)

C语言和字符串不存在“问题”;你想做什么,就可以做什么。它比其他语言的责任要多。

您似乎需要一个结构数组,是的。我建议将其建模为只是玩过的一系列游戏,其中每个游戏都记录了参加比赛的团队及其得分。无需先记录“可用”团队列表,之后再从游戏数据中提取就更容易了。

struct game {
  const char *teamA;
  int scoreA;
  const char *teamB;
  int scoreB;
};

struct game game_new(const char *teamA, int scoreA, const char *teamB, int scoreB)
{
  struct game g;
  g.teamA = strdup(teamA);
  g.scoreA = scoreA;
  g.teamB = strdup(teamB);
  g.scoreB = scoreB;
  return g;
}

,然后在man程序中:

int main(void)
{
  struct game games[100];
  size_t num_games = 0;
  for (size_t i = 0; i < sizeof games / sizeof *games; ++i)
  {
    char teamA[100], teamB[100];
    int scoreA, scoreB;
    if (scanf(" %s %d - %s %d", teamA, &scoreA, teamB, &scoreB) != 4)
      break;
    games[++num_games] = game_new(teamA, scoreA, teamB, scoreB);
  }
}

答案 1 :(得分:1)

像所有编程语言一样,C仅与您为数据建模所制定的计划一样好

为此,可以使用存储数据的数组数组。

可能还需要考虑一个基于团队的关系数据库。然后,您还可以添加元数据等(例如时间戳)。尽管只有在不介意将应用程序外部化为C之外,这才是好选择。