Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Помогите с алгоритмом сортировки

Вс ноя 12, 2006 19:24:08

Есть некая задача: машинки ездят по кругу, нужно подсчитывать кол-во пройденных кругов и определять победителя. Время заезда задано.

Подсчет кругов осуществляется в ручном режиме, т.е. нажатием соответствующей кнопки.

А затруднение вызвал следущий вопрос: допустим, две машины проехали заезд с одинаковым кол-вом кругов. Тогда мы сравниваем время, за которое эти самые круги были пройдены.

Что мы имеем: два массива. Один содержит кол-во пройденных каждой машиной кругов. Второй - время в секундах, прошедшее с момента старта до сигнала о прохождении последнего круга.

А теперь самое интересное. Как теперь правильно отсортировать результаты гонки? Вот ломаю голову, а ничего умного не получается..

Может быть вы поможете??

Вс ноя 12, 2006 22:35:28

что-то я не очень понял условие.
время заезда задано и если за это время машины проехали одинковое кол-во кругов, то по какому критерию определяется победитель? Общее время-то одинаковое будет. и кол-во кругов одинаковое.

про массивы тоже не очень понятно. по идее это не массивы а простые переменные (или сохраняется время прохождения каждого круга для каждой машины?).

Вс ноя 12, 2006 22:52:45

Да, время заезда задано. Но если за это время несколько участников проехали одинаковое количество кругов - это не значит, что они ЭТИ круги проехали за одно и то же время.

Просто один может на момент окончания заезда находиться практически у финишной черты (пересечение которой добавило бы ему круг), а другой только пересечь ее. Естественно, у первого время прохождения кругов будет меньше, чем у второго.

А насчет массивов - да, можно считать, что просто переменные.

Ух.. Надеюсь, внятно объяснил :) Я старался :)

Пн ноя 13, 2006 00:32:42

тогда не хватает еще данных - нужно знать расстояние, оно как-то измеряется?

потому что если основываться только на времени прохождения целых кругов - вывод кто выиграл сделать нельзя. При условии, что победитель - тот, кто дальше всех проехал.

P.S. не для картинга устройство?

Пн ноя 13, 2006 13:43:12

xelos, расстояние никак не измеряется. Программа должна определять победителя именно по времени прохождения целого количества кругов. Ведь очевидно, что если один человек проехал, скажем, 4.8 круга, а другой 4.2 круга за отведенное время, то 4 целых круга первый проехал быстрее.

Понимаю, что не совсем корректно, но приходится идти на упрощение.

А приборчик для детского кружка меня попросили сделать. Они на радиоуправляемых машинках катаются. Существуют специализированные "засечки" для таких соревнований, то тут не тот масштаб.

Пн ноя 13, 2006 15:28:36

Дональд Кнут "Библия для программистов" :) или Искусство програмирования для ЭВМ - том № не помню точно "Сортировка и поиск".

Вт ноя 14, 2006 00:45:07

да не, тут все намного проще. просто нужно найти минимальное значение в массиве.
алгоритм такой:
пусть есть массив Время[х]
создаем переменную А=Время[0]
создаем переменную В=0
потом в цикле i=1;i++;i<x
if A<Время[i]
{
А=Время[i]
В=i
}
конец

по выходу из программы в А будет лучшее время, в В номер машины.
Ответить