Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
SPV
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 10
#1

Автоматическое составление расписания чемпионата - C++

18.10.2009, 16:08. Просмотров 2964. Ответов 11
Метки нет (Все метки)

Доброго времени суток. Кто чем может помогите, либо направьте в нужное русло. Вот такая вот задачка у меня:

Чемпионат проводится по двух круговой системе (каждый с каждым).
В каждом туре участвуют все команды, если их четное количество, или одна команда отдыхает.
В каждом туре команда проводит только 1 игру.
Пара команд, которая уже встречалась, может сыграть только во втором круге, поменявшись полями (например ЦСКА – Зенит -> Зенит – ЦСКА).

Входные данные:
Текстовый файл содержит названия команд (от 4 до 20, количество может быть четным и нечетным).

Выходные данные:
Расписание (выходной текстовый файл) имеет следующую структуру:
Строка с номером тура
Несколько строк с парами команд, разделенных « – ».

Пример:
ВХОД:
ЦСКА
Зенит
Спартак
Динамо

ВЫХОД:
1 тур
ЦСКА – Зенит
Динамо – Спартак
-------------------------------------
2 тур
Зенит – Динамо
Спартак – ЦСКА
-------------------------------------
3 тур
ЦСКА – Динамо
Зенит – Спартак
-------------------------------------
4 тур
Динамо – Зенит
ЦСКА – Спартак
-------------------------------------
5 тур
Спартак – Динамо
Зенит – ЦСКА
-------------------------------------
6 тур
Динамо – ЦСКА
Спартак – Зенит
-------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2009, 16:08     Автоматическое составление расписания чемпионата
Посмотрите здесь:

Составление суточного расписания - C++
Известно время начала и окончания работы некоторого пригородного автобусного маршрута с одним автобусом на линии, а также протяженность...

Таблица футбольного чемпионата - C++
Всем привет, нужна помощь. Таблица футбольного чемпионата задана в виде двумерного массива из n строк и n столбцов, в котором все...

Таблица футбольного чемпионата - C++
Ребята! Пожалуйста помогите в Turbo C++ сделать! Очень прошу... Таблица футбольного чемпионата задана квадратной матрицей порядка n, в...

Жеребьевка футбольного чемпионата - C++
Хочу написать программу для расчета, допустим, футбольных матчей Что должно быть в программе: Выбор количества команд (от 10 до 20)....

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

Анализ расписания докладов на конференции - C++
Работа научной конференции обычно разделена на несколько одновременно проходящих секций. Очевидно, одновременная работа нескольких...

Помогите составить программу расписания занятий. - C++
Условие:Требуется создать расписание уроков на любые два дня(понедельник,вторник).Уроки можно взять произвольные.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
18.10.2009, 19:53     Автоматическое составление расписания чемпионата #2
Если N - число команд, то общее число встреч равно 2*(N-1)!
В данном случае N=4, встреч=2*3!=12
Понятно что в одном туре может быть только N/2 игр.
Значит будет 6 туров.
Задача аккуратно сгенерировать все варианты встреч.
SPV
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 10
18.10.2009, 19:55  [ТС]     Автоматическое составление расписания чемпионата #3
а можешь на примере?
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.10.2009, 20:18     Автоматическое составление расписания чемпионата #4
Предлагаю вариант: например команд 4
Создаем список команд в массиве
Создаем массив:
индексы 0 1 2 3
0 -1 0 0 0
1 0 -1 0 0
2 0 0 -1 0
3 0 0 0 -1
После первого прохода:
индексы 0 1 2 3
0 -1 1 0 0
1 0 -1 0 0
2 0 0 -1 1
3 0 0 0 -1
Условие изменения значений массива будет чтобы индексы не повторялись
После второго прохода
индексы 0 1 2 3
0 -1 1 2 0
1 0 -1 0 2
2 0 0 -1 1
3 0 0 0 -1
После третьего прохода
индексы 0 1 2 3
0 -1 1 1 3
1 0 -1 3 1
2 0 0 -1 1
3 0 0 0 -1
ну и т.д.
а потом только остается:
Первый тур: (ищем элементы массива равные 1)
если i>j то Зенит - ЦСКА, если i<j то ЦСКА-Зенит
Для второго тура элементы равные 2 и т.д.
i и j здесь будут являться индексами для массива со списком команд
SPV
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 10
18.10.2009, 20:23  [ТС]     Автоматическое составление расписания чемпионата #5
а если команды записывать в каждую строчку, то тогда что делать?
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.10.2009, 20:27     Автоматическое составление расписания чемпионата #6
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Создаем список команд в массиве
Здесь я имел ввиду, что создаем массив размером = количеству команд
Затем заполняем его из входного файла.
SPV
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 10
18.10.2009, 21:04  [ТС]     Автоматическое составление расписания чемпионата #7
может кому не трудно напишите код?
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.10.2009, 06:12     Автоматическое составление расписания чемпионата #8
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string *sp_kom;
int **mas, n, i,j, tur;
bool *kom, temp, y;
int main ()
{
    ifstream input("in_file.txt");
    ofstream output("out_file.txt");
    input>>n; 
    mas=new int*[n]; 
    for(i=0; i<n; i++)
       mas[i]=new int[n];
    kom=new bool[n];
    sp_kom=new string[n];
    for(i=0; i<n; i++)
       for(j=0; j<n; j++)
           mas[i][j]=0;
    for(i=0; i<n; i++)
    {
        input>>sp_kom[i];
        kom[i]=false;
        mas[i][i]=-1;
    }
    temp=true;
    tur=1;
    y=true;
    while(temp)
    {       
        temp=false;
        for(i=0; i<n; i++)
            kom[i]=false;
        for(i=0; i<n; i++)
            for(j=0; j<n; j++)
                if(mas[i][j]==0 && !kom[i] && !kom[j])
                {
                    if(y)
                    {
                        output<<tur<<"  ГІГіГ°"<<endl;
                        y=false;
                    }
                    mas[i][j]=-1;
                    kom[i]=kom[j]=true;
                    temp=true;
                    if(i>j)
                        output<<sp_kom[i]<<" - "<<sp_kom[j]<<endl;
                    else
                        output<<sp_kom[j]<<" - "<<sp_kom[i]<<endl;
                }
        if(temp)
            output<<"---------------------"<<endl;
        y=true;
        tur++;
    }
 
    return 0; 
}
Входной файл выглядит так (первое значение - кол-во команд, затем названия самих команд:
4
ЦСКА
Зенит
Спартак
Локомотив

Да, еще учтите что на экране ничего не увидите.

Добавлено через 12 минут
Немного упустил - в строке 57 моего кода вставьте:
C++
1
input.close(); output.close()
SPV
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 10
19.10.2009, 06:51  [ТС]     Автоматическое составление расписания чемпионата #9
небольшая корректировочка
C++
1
input.close(); output.close();
точку с запятой ещё надо поставить
а так спасибо огромное!
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.10.2009, 13:22     Автоматическое составление расписания чемпионата #10
Цитата Сообщение от SPV Посмотреть сообщение
точку с запятой ещё надо поставить
Это я набегу дописывал.
anime
0 / 0 / 0
Регистрация: 08.06.2010
Сообщений: 9
10.06.2010, 11:23     Автоматическое составление расписания чемпионата #11
мне надо создать расписание на Java.Задача такая: Разработать программу для работы с БД, которая обеспечивает автоматизированную продажу авиабилетов на месяц вперед. Программа проверяет правильность каждой даты, делает возможным менять расписание. В типизированных файлах хранятся входные данные: номера рейсов, маршруты, количество свободных мест, дата вылета, ФИО.
При введении нового пункта расписания не разрешается вводить прошедшую дату (дата на данный момент времени высвечивается).
При покупке билета также проверяется дата и номер рейса. Не разрешается покупать билеты более, чем на месяц вперед.
заранее спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2010, 11:24     Автоматическое составление расписания чемпионата
Еще ссылки по теме:

Алгоритм составления расписания занятий ВУЗа - C++
Дорогие друзья, сейчас у меня на руках задание по составлению расписания в ВУЗе. Пока определилась только со структурами и вводом,...

Генетический алгоритм для составления расписания - C++
В генетическом алгоритме для составления расписаний что берется в качестве особи, хромосомы и гена. Как происходит скрещивание? Если...

Разработка программы составления расписания занятий - C++
Исходные данные: Наименование дисциплин Количество лекций, семинаров и лабораторных занятий по каждой дисциплине на неделе Фамилии...

Вычисление дней недели для составления расписания - C++
Доброе время суток! Буквально несколько дней назад начал жадно вгрызаться в мануалы по С++ и сейчас меня посетила идея: А что, если я...

Нужно написать программу для составления расписания - C++
всем привет) нужно сделать программу для составления расписания в универе, к примеру для одной - двух групп на неделю, и все это потом...


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

Или воспользуйтесь поиском по форуму:
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
10.06.2010, 11:24     Автоматическое составление расписания чемпионата #12
anime, Java?
Вам сюда: http://www.cyberforum.ru/java/
Yandex
Объявления
10.06.2010, 11:24     Автоматическое составление расписания чемпионата
Ответ Создать тему
Опции темы

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