Вывести на экран фамилии и имена трех лучших по среднему баллу учеников - QBasic

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

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

На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит 100, каждая из следующих N строк имеет следующий формат: <Фамилия> <Имя> <оценки>, где <Фамилия> – строка, состоящая не более чем из 20 символов, <Имя> – строка, состоящая не более чем из 15 символов, <оценки> – через пробел три целых числа, соответствующие оценкам по пятибалльной системе. <Фамилия> и <Имя>, а также <Имя> и <оценки> разделены одним пробелом. Пример входной строки: Иванов Петр 4 5 4 Требуется написать программу, которая будет выводить на экран фамилии и имена трех лучших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трех лучших, то следует вывести и их фамилии и имена. Требуемые имена и фамилии можно выводить в произвольном порядке. 'К- макс это кол-во символов в строке
Листинг программы
  1. INPUT"Кол-во строк";N
  2. DIM A(N) as STRING
  3. DEFSNG S
  4. p=0
  5. s=0
  6. PRINT "Введите фамилии ";A$
  7. K%=LEN(A$)
  8. FOR i=1 to K
  9. INPUT A(i)
  10. Next i
  11. FOR i = 1 to K
  12. FOR j=1 to N
  13. A$=RIGHT(5)
  14. S=S+MID(A$,i,1)
  15. p=p+1
  16. IF S/3>=3 THEN SWAP A(j),A(j+1)
  17. Next j
  18. Next i
  19. FOR i=1 to K-5
  20. FOR j=N-3 to N
  21. PRINT A(i,j)
  22. Next i
  23. Next j
  24. END

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

textual
Листинг программы
  1. INPUT "vvedite n"; n
  2. DIM a$(n), d(n)
  3. FOR i = 1 TO n
  4.     INPUT "vvedite text"; b$
  5.     FOR j = LEN(b$) TO LEN(b$) - 4 STEP -1
  6.         IF MID$(b$, j, 1) <> " " THEN d(i) = d(i) + VAL(MID$(b$, j, 1))
  7.     NEXT
  8.     a$(i) = MID$(b$, 1, LEN(b$) - 6)
  9.     d(i) = d(i) / 3
  10. NEXT
  11. q = 10
  12. FOR i = 1 TO 3
  13.     max = -1
  14.     FOR j = 1 TO n
  15.         IF d(j) > max AND d(j) < q THEN max = d(j)
  16.     NEXT
  17.     q = max
  18. NEXT
  19. FOR i = 1 TO n
  20.     IF d(i) >= q THEN PRINT a$(i)
  21. NEXT

Объяснение кода листинга программы

В этом коде выполняется следующая последовательность действий:

  1. Пользователю предлагается ввести количество учеников (n).
  2. Создаются два массива: массив a$ для хранения имен учеников и массив d$ для хранения среднего балла учеников.
  3. Происходит два вложенных цикла, в которых пользователь вводит имена учеников и их средний балл.
  4. Внутренний цикл перебирает символы в строке с именем ученика, проверяет, является ли текущий символ числом, и если да, то добавляет его к сумме среднего балла текущего ученика.
  5. Внешний цикл перебирает имена учеников и сохраняет их в массиве a$.
  6. Средний балл каждого ученика вычисляется путем деления суммы его баллов на 3.
  7. Значение q устанавливается равным 10.
  8. Происходит еще два вложенных цикла, в которых находится три ученика с наибольшим средним баллом, не превышающим значение q.
  9. Выводятся на экран имена этих учеников.

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


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

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

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы