Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Alex1000
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 17
#1

помогите создать класс - C++

14.01.2012, 13:09. Просмотров 388. Ответов 1
Метки нет (Все метки)

нужно создать класс который будет организовывать турнирную таблицу.
т.е нам в файле дан список результатов команд : "команда1 - команда2 ,2-1"
а нам нужно исходя из этих результатов упорядочить команды по сумме набраных очков.
за победу дается 3 очка за поражение 0 , а за ничью 1.
P.S "заранее спасибо"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2012, 13:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос помогите создать класс (C++):

Помогите создать класс с именем ZARPLATA - C++
1.Создать класс с именем ZARPLATA, содержащий следующие поля: •табельный номер; •фамилия И.О. работника; •оплата за один час...

Помогите пожалуйста создать класс треугольник - C++
Добрый день, помогите пожалуйста создать класс треугольник, члены класса - длины трех сторон, предусмотреть в классе методы проверки...

Создать класс Man (человек), с полями: имя, возраст, пол и вес. Создать производный класс Student ... - C++
Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить методы задания имени, возраста и веса. Создать производный класс...

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями - C++
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать абстрактный базовый класс Тройка чисел с...

Создать класс - данные - абстрактный базовый класс. Создать производные классы - C++
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа...

Создать класс Элемент списка (Node), а затем класс Список (List) - C++
Задание: Создать класс Элемент списка (Node), а затем класс Список (List). В зависимости от варианта список должен быть одно или...

1
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
14.01.2012, 19:56 #2
Формат входящего файла -- записи, разделенные символом ';', строка заканчивается переводом каретки.
Код
team one;team two;2;1;
team three;team one;1;0;
team three;team two;1;1;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <map>
#include <vector>
#include <algorithm>
#include <iterator>
 
class Team {
 public:
  Team(const std::string &name) : name_(name) {}
  const std::string &getName() const { return name_; }
 private:
  std::string name_;
};
 
class GameResult {
 public:
  GameResult()
    : a_(""), b_(""), scoreA_(0), scoreB_(0) {}
  GameResult(const Team &a, const Team &b, int scoreA, int scoreB)
    : a_(a), b_(b), scoreA_(scoreA), scoreB_(scoreB) {}
  const Team &getTeamA() const { return a_; }
  const Team &getTeamB() const { return b_; }
  int getScoreA() const { return scoreA_; }
  int getScoreB() const { return scoreB_; }
  bool isValid() const {
    return getTeamA().getName().size() > 0 && getTeamB().getName().size() > 0;
  }
  bool isDraw() const { return scoreA_ == scoreB_; }
  const Team &getWinner() const { return (scoreA_ >= scoreB_) ? a_ : b_; }
  friend std::istream &operator>>(std::istream &stream, GameResult &gameResult) {
    std::string line;
    getline(stream, line);
    std::string buffer;
    std::istringstream lineBuffer(line);
    getline(lineBuffer, buffer, ';');
    gameResult.a_ = Team(buffer);
    getline(lineBuffer, buffer, ';');
    gameResult.b_ = Team(buffer);
    getline(lineBuffer, buffer, ';');
    std::stringstream(buffer) >> gameResult.scoreA_;
    getline(lineBuffer, buffer, ';');
    std::stringstream(buffer) >> gameResult.scoreB_;
    return stream;
  }
 private:
  Team a_;
  Team b_;
  int scoreA_;
  int scoreB_;
};
 
bool operator<(const Team &a, const Team &b) {
  return a.getName() < b.getName();
}
 
std::ostream &operator<<(std::ostream &stream, const Team &team) {
  return stream << team.getName();
}
 
std::ostream &operator<<(std::ostream &stream, const GameResult &result) {
  return stream << result.getTeamA() << " - " << result.getTeamB() <<
    " : " << result.getScoreA() << " - " << result.getScoreB();
}
 
std::ostream &operator<<(std::ostream &stream,
  const std::pair<Team, int> &result) {
  return stream << result.first << ": " << result.second;
}
 
bool operator<(const std::pair<Team, int> &a, const std::pair<Team, int> &b) {
  return a.second < b.second;
}
 
int main(int argc, char *argv[]) {
  std::ifstream file("имя файла с данными");
  std::map<Team, int> teamsPlayed;
 
  while (file.good()) {
    GameResult result;
    file >> result;
    if (result.isValid()) {
      std::cout << result << std::endl;
      if (result.isDraw()) {
        teamsPlayed[result.getTeamA()] += 1;
        teamsPlayed[result.getTeamB()] += 1;
      } else {
        teamsPlayed[result.getWinner()] += 3;
      }
    }
  }
  
  std::vector<std::pair<Team, int> > results;
  std::copy(teamsPlayed.begin(), teamsPlayed.end(),
    std::back_inserter(results));
  std::sort(results.begin(), results.end());
  std::copy(results.begin(), results.end(),
    std::ostream_iterator<std::pair<Team, int> >(std::cout, "\n"));
 
};
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 19:56
Привет! Вот еще темы с ответами:

Создать класс Point и производный класс ColoredPoint (цветная точка) - C++
Создайте класс Point (точка на плоскости), характеризующийся двумя координатами. Создайте производный класс ColoredPoint (цветная точка), в...

Класс: создать класс Fraction для работы с дробными числами - C++
Необходимо создать класс Fraction для работы с дробными числами. Число должно быть представлено двумя полями: целая часть – длинное целое...

Создать Класс Coins (монеты). Класс сохраняет массив из 3 монет ... - C++
Помогите написать програмку, где: Нужно создать Класс Coins (монеты). Класс сохраняет массив из 3 монет и общее количество лицевых сторон...

Создать класс Pair(пара чисел) и класс-наследник Fraction - C++
Создать класс Pair (пара чисел); определить методы изменения полей и сравнения пар: пара p1 больше пары p2, если (first.p1&gt;first.p2) или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru