Вывести на экран фамилии и имена трех лучших по среднему баллу учеников - QBasic
Формулировка задачи:
На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов
некоторой средней школы. В первой строке сообщается количество учеников N, которое
не меньше 10, но не превосходит 100, каждая из следующих N строк имеет следующий
формат: <Фамилия> <Имя> <оценки>, где <Фамилия> – строка, состоящая не более чем
из 20 символов, <Имя> – строка, состоящая не более чем из 15 символов, <оценки> –
через пробел три целых числа, соответствующие оценкам по пятибалльной системе.
<Фамилия> и <Имя>, а также <Имя> и <оценки> разделены одним пробелом. Пример
входной строки:
Иванов Петр 4 5 4
Требуется написать программу, которая будет выводить на экран фамилии и имена трех
лучших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот
же средний балл, что и один из трех лучших, то следует вывести и их фамилии и имена.
Требуемые имена и фамилии можно выводить в произвольном порядке.
'К- макс это кол-во символов в строке
Листинг программы
- INPUT"Кол-во строк";N
- DIM A(N) as STRING
- DEFSNG S
- p=0
- s=0
- PRINT "Введите фамилии ";A$
- K%=LEN(A$)
- FOR i=1 to K
- INPUT A(i)
- Next i
- FOR i = 1 to K
- FOR j=1 to N
- A$=RIGHT(5)
- S=S+MID(A$,i,1)
- p=p+1
- IF S/3>=3 THEN SWAP A(j),A(j+1)
- Next j
- Next i
- FOR i=1 to K-5
- FOR j=N-3 to N
- PRINT A(i,j)
- Next i
- Next j
- END
Решение задачи: «Вывести на экран фамилии и имена трех лучших по среднему баллу учеников»
textual
Листинг программы
- INPUT "vvedite n"; n
- DIM a$(n), d(n)
- FOR i = 1 TO n
- INPUT "vvedite text"; b$
- FOR j = LEN(b$) TO LEN(b$) - 4 STEP -1
- IF MID$(b$, j, 1) <> " " THEN d(i) = d(i) + VAL(MID$(b$, j, 1))
- NEXT
- a$(i) = MID$(b$, 1, LEN(b$) - 6)
- d(i) = d(i) / 3
- NEXT
- q = 10
- FOR i = 1 TO 3
- max = -1
- FOR j = 1 TO n
- IF d(j) > max AND d(j) < q THEN max = d(j)
- NEXT
- q = max
- NEXT
- FOR i = 1 TO n
- IF d(i) >= q THEN PRINT a$(i)
- NEXT
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Пользователю предлагается ввести количество учеников (n).
- Создаются два массива: массив a$ для хранения имен учеников и массив d$ для хранения среднего балла учеников.
- Происходит два вложенных цикла, в которых пользователь вводит имена учеников и их средний балл.
- Внутренний цикл перебирает символы в строке с именем ученика, проверяет, является ли текущий символ числом, и если да, то добавляет его к сумме среднего балла текущего ученика.
- Внешний цикл перебирает имена учеников и сохраняет их в массиве a$.
- Средний балл каждого ученика вычисляется путем деления суммы его баллов на 3.
- Значение q устанавливается равным 10.
- Происходит еще два вложенных цикла, в которых находится три ученика с наибольшим средним баллом, не превышающим значение q.
- Выводятся на экран имена этих учеников.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д