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

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Вывести список фамилий участников в порядке убывания набранных ими очков»

textual
Листинг программы
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. Объявление переменных и типа данных:
    • n - количество участников (целое число)
    • Table - массив структур типа ChessT (имена участников и их очки)
    • Turn - матрица для турнирной таблицы
  2. Ввод данных:
    • Задается количество участников (n)
    • Вводятся имена участников и их очки
  3. Заполнение турнирной таблицы:
    • Происходит расчет значений для матрицы Turn на основе введенных очков
  4. Подсчет очков и побед:
    • Происходит подсчет общего количества очков и побед для каждого участника
  5. Сортировка участников по количеству очков:
    • Применяется алгоритм сортировки пузырьком для сортировки участников по убыванию очков
  6. Вывод на экран:
    • Выводится список участников, отсортированный по убыванию очков
    • Для каждого участника выводится его имя, количество очков и побед, разделенные символом #

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы