Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
1 / 1 / 0
Регистрация: 10.05.2016
Сообщений: 16
1

Вывести список фамилий участников в порядке убывания набранных ими очков

24.05.2016, 17:49. Показов 2587. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Имеется таблица результатов шахматного турнира с N участниками.(Выигрыш-1 очко,ничья -0.5 очка,проигрыш -
0 очков )Вывести список фамилий участников в порядке убывания набранных ими очков,сопроводив его указанием
для каждого участника суммы очков,занятого места и числа побед.Исходная информация вводится с клавиатуры .

Есть также программа.
QBasic/QuickBASIC
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
CLS 
 
TYPE ChessTable 'Создем тип для таблицы: 
Uchastnik AS STRING * 10 'Фамилия участника 
Ochki AS SINGLE 'Число очков 
Pobed AS SINGLE 'Число побед 
END TYPE 
 
INPUT "Vvedite chislo uchastnikov: ", n 'Ввод числа участников 
 
DIM Table(n) AS ChessTable 'Наша таблица 
 
FOR i = 1 TO n 
INPUT "Vvedite familiyu uchastnika: ", Table(i).Uchastnik 'Ввод фамилий участников 
NEXT i 
 
'Цикл для ввода набранных очков 
FOR i = 1 TO n - 1 'i - первый участник в партии, 
FOR j = i + 1 TO n 'j - второй 
 
flag = 0 'Обнуляем флаг 
 
DO 
IF flag = 1 THEN COLOR 4: PRINT "Nevernij vvod": COLOR 7 'Если цикл повторяется не в перый раз, сообщаем о неверном вводе 
 
PRINT "Skolko ochkov nabral uchastnik "; RTRIM$(Table(i).Uchastnik); " v partii s uchastnikom "; RTRIM$(Table(j).Uchastnik); 
INPUT Ochki 'Собственно, ввод числа очков 
 
flag = 1 
 
LOOP UNTIL Ochki = 0 OR Ochki = .5 OR Ochki = 1 'Проверка валидности введенных очков 
 
Table(i).Ochki = Table(i).Ochki + Ochki 'Присуждаем первому участнику его очки 
Table(j).Ochki = Table(j).Ochki + (1 - Ochki) 'А второму - разность между единицей и очками первого 
 
IF Ochki = 1 THEN Table(i).Pobed = Table(i).Pobed + 1 'Если у первого 1 очко, присуждаем ему победу 
IF Ochki = 0 THEN Table(j).Pobed = Table(j).Pobed + 1 'А если 0 - значит победил второй, и победу присуждаем ему 
 
NEXT j 
NEXT i 
 
'Цикл для упорядочения участников по очкам 
FOR i = 1 TO n - 1 
 
max = 0: jmax = 0 'Обнуляем максимальное число очков 
 
FOR j = i TO n 'Начиная с i-ого участника ищем участника с максимальным числом очков 
 
IF Table(j).Ochki > max THEN max = Table(j).Ochki: jmax = j 
 
IF Table(j).Ochki = max AND Table(j).Pobed > Table(jmax).Pobed THEN jmax = j 'Если у участников равное число очков, присуждаем 
'преимущество тому, у кого больше побед 
NEXT j 
 
SWAP Table(i), Table(jmax) 'Меняем i-ого участника с тем, у кого максимальное число очков 
 
NEXT i 'Увеличиваем i на единицу и повторяем цикл, пока не дойдем до последнего участника 
 
'Вывод упорядоченной таблицы на экран 
CLS 
PRINT "Mesto", "Uchastnik", "Ochki", "Chislo pobed" 
FOR i = 1 TO n 
 
IF i <= 3 THEN COLOR 2 ELSE COLOR 7 'Первую тройку выделим зеленым цветом 
 
PRINT i, Table(i).Uchastnik, Table(i).Ochki, Table(i).Pobed 
 
NEXT i
 
PRINT
PRINT "Press any key to continue..."
DO
LOOP WHILE INKEY$ = ""
Если есть возможность ,то можете описать ход решения для того,чтобы проще ориентироваться и читать программу ?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2016, 17:49
Ответы с готовыми решениями:

Вывести список фамилий участников в порядке убывания набранных ими очков
Имеется таблица результатов шахматного турнира с N участниками. (Выигрыш - 1 очко, ничья - 0.5...

Вывести на печать номера участников в порядке возрастания набранных ими очков
Имеются результаты некоторого шахматного турнира, в котором участвовало n шахматистов. Таблица...

Необходимо отсортировать список участников олимпиады по количеству набранных ими баллов
Во время проведения олимпиады каждый из участников получил свой идентификационный номер –...

Вывести список неуспевающих студентов в порядке убывания количества пропущенных ими занятий
Сама задача: Группе студентов в результате полусеместровой аттестации были выставлены оценки по...

6
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
24.05.2016, 20:14 2
Леонидфлот
Ваша программа значительно выиграет в читабельности
если вы будете делать отступы.
Самое непонятное место - это строки 18-40. (Сложно объяснить)
Я бы сделал иначе.
1. Ввел бы турнирную матрицу.
2. Вот ее бы и заполнял
3. По ней легко вычислить число очков и число побед.
(надо просто суммировать числа по строкам - это очки)
(А суммировать единички - это победы)

По моему код в строках 43-57 работает неверно.
Вы полагаете, что это

SWAP Table(i), Table(jmax) (строка 55)

будет работать?
я не уверен...

Добавлено через 46 минут
Я извиняюсь. Строка 55 работает.
1
1 / 1 / 0
Регистрация: 10.05.2016
Сообщений: 16
24.05.2016, 20:41  [ТС] 3
Цитата Сообщение от geh Посмотреть сообщение
Я бы сделал иначе.
1. Ввел бы турнирную матрицу.
2. Вот ее бы и заполнял
3. По ней легко вычислить число очков и число побед.
(надо просто суммировать числа по строкам - это очки)
(А суммировать единички - это победы)
А если вам не сложно,можете это реализовать ,также с пояснениями?
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
25.05.2016, 09:16 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Программа проверена

QBasic/QuickBASIC
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
CLS
 
TYPE ChessT
   Uchas AS STRING * 10  ' имена участников
   Ochki AS SINGLE           ' число очков
   Pobed AS SINGLE           ' число побед
END TYPE
 
INPUT "N = "; n         ' Ввод числа участников  
 
DIM Table(n) AS ChessT    ' Наша таблица
DIM Turn(n, n)             ' Турнирная таблица
 
FOR i = 1 TO n
   INPUT "NAME = "; Table(i).Uchas  ' Ввод имён участников
NEXT i
 
REM  Заполнение турнирной таблицы
REM ---------------------------------------------
 
FOR i = 1 TO n        ' i - первый участник в партии
FOR j = i TO n        ' j - второй
   IF i >= j THEN 100
 
   PRINT "CHISLO Ochkov Uchastnika"; i; "s"; j;
   INPUT Ochki          '
   IF Ochki = .5 THEN
      Turn(i, j) = Ochki
      Turn(j, i) = Ochki
   ELSE
      Turn(i, j) = Ochki
      Turn(j, i) = 1 - Ochki
   END IF
100
NEXT j, i
 
REM  Подсчет очков и побед
 
FOR i = 1 TO n
FOR j = 1 TO n
   Table(i).Ochki = Table(i).Ochki + Turn(i, j)      ' подсчет очков
   IF Turn(i, j) = 1 THEN                            '  подсчет побед
      Table(i).Pobed = Table(i).Pobed + Turn(i, j)
   END IF
NEXT j, i
 
REM  Сортировка участников по количеству очков
REM  -------------------------------------------
 
FOR i = 1 TO n - 1
FOR j = i + 1 TO n
   IF Table(i).Ochki < Table(j).Ochki THEN
      SWAP Table(i), Table(j)
   END IF
NEXT j, i
 
REM  Вывод на экран
CLS
 
FOR i = 1 TO n
   IF i <= 3 THEN COLOR 11 ELSE COLOR 13
   PRINT Table(i).Uchas; USING "#.#    #"; Table(i).Ochki; Table(i).Pobed
NEXT i
END
1
1 / 1 / 0
Регистрация: 10.05.2016
Сообщений: 16
25.05.2016, 17:01  [ТС] 5
geh, а мне выдает ошибку на 62 строке .
"C:\FreeBasic\FBIDETEMP.bas(62) : error 13: Expected 'NEXT', found: 'USING'
PRINT Table(i).Uchas; USING "#.# #"; Table(i).Ochki; Table(i).Pobed
"
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
25.05.2016, 17:08 6
Леонидфлот
Нет проблем. У меня QBasic. Значит на FreeBasic нет
оператора USING. Тогда удалите его. Точнее USING "#.# #";
И запустите вновь...
0
1 / 1 / 0
Регистрация: 10.05.2016
Сообщений: 16
25.05.2016, 19:55  [ТС] 7
geh, спасибо за помощь!
0
25.05.2016, 19:55
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2016, 19:55
Помогаю со студенческими работами здесь

Сформировать список номеров команд, участвовавших в чемпионате, в порядке невозрастания количества набранных очков
Добрый день , ребята помогите решить задачу.В последнем цикле выдает ошибку , не могу никак...

Напечатать список абитуриентов в порядке убывания суммы набранных баллов
имеются следующие сведения о абитуриентах: номер в списке, ФИО, сумма набранных баллов на...

Матрицы: распределить участников турнира по убыванию набранных очков
при записи данных о соревнованиях по шахматам формируется матрица турнирного особого вида....

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru