Задача. Сортировка массива.

Ответить
Iwan_91
Сообщения: 9
Зарегистрирован: 21 май 2009, 21:38
Контактная информация:

21 май 2009, 21:43

Задача следующая

На вход программе подаются сведения о номерах школ учащихся, участвовавших в олимпиаде. В первой строке сообщается количество учащихся N, каждая из следующих N строк имеет формат: <Фамилия> <Инициалы> <номер школы>, где <Фамилия> – строка, состоящая не более чем из 20 символов, <Инициалы> – строка, состоящая из 4-х символов (буква, точка, буква, точка), <номер школы> – не более чем двузначный номер. <Фамилия> и <Инициалы>, а также <Инициалы> и <номер школы> разделены одним пробелом.
Пример входной строки: Иванов П.С. 57
Требуется написать как можно более эффективную программу которая будет выводить на экран информацию, из какой школы было меньше всего участников (таких школ может быть несколько). При этом необходимо вывести информацию только по школам, пославшим хотя бы одного участника.
Следует учитывать, что N>=1000.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
CLS
INPUT "Kovichestvo y4inicov", n
DIM a$(1 TO n)
DIM a(1 TO n)
DIM b(1 TO n)
DIM c$(1 TO n)
FOR i = 1 TO n
INPUT "Famali U.O. N shool", a$(i)
a(i) = VAL(RIGHT$(a$(i), 2))
b(i) = LEN(a$(i))
c$(i) = LEFT$(a$(i), b(i) - 2)
NEXT i
NEXT j
DIM o(1 TO 99)
FOR i = 1 TO 99
o(i) = o(i) + 1
NEXT i
DIM kol(1 TO 99)
FOR j = 1 TO 99
FOR i = 1 TO n
IF a(i) = o(j) THEN
kol(j) = kol(j) + 1
End if
next i
next j


А как из k вернуть a(i) не знаю.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Оказалось задачу надо читать внимательнее.
Ренение:
INPUT "Kovichestvo y4inicov", n
DIM a(1 TO n)
FOR i = 1 TO n
INPUT "Famali U.O. N shool", a$
a(i) = VAL(RIGHT$(a$, 2))
NEXT i
DIM k(1 TO 99)
FOR j = 1 TO 99
FOR i = 1 TO n
IF a(i) = j THEN
k(j) = k(j) + 1
END IF
NEXT i
NEXT j
l = n
FOR i = 1 TO 99
IF k(i) <> 0 AND k(i) < l THEN
l = k(i)
END IF
NEXT i
FOR i = 1 TO 99
IF k(i) = l THEN
PRINT i
END IF
NEXT i
Ответить