Программа
DECLARE SUB Process (FileName AS STRING)
DECLARE SUB GetStud (FamilyName$, Year%, Sex$)
DECLARE SUB MakeFile (FileName AS STRING)
FileName$ = "STUD" 'Имя файла студентов
DEF FNQuestion$ (St$) 'Функция получения ответа на вопрос
PRINT St$; " [Д/Н] "; ' Вывод вопроса
DO
S$ = INKEY$ 'Чтение нажатия клавиши
LOOP WHILE S$ <> "Д" AND S$ <> "д" AND S$ <> "Н" AND S$ <> "н"
' Выход из цикла при получении коректного ответа
IF S$ = "Д" OR S$ = "д" THEN 'Определение значения функции
FNQuestion$ = "YES"
ELSE
FNQuestion$ = "NO"
END IF
PRINT S$ ' Вывод ответа
END DEF
PRINT 'Пропуск строки
IF FNQuestion$("Создать файл STUD? ") = "YES" THEN CALL MakeFile(FileName$)
' Создание файла
PRINT 'Пропуск строки
CALL Process(FileName$) ' Обработка файла и вывод результатов
END
SUB GetStud (FamilyName$, Year%, Sex$) 'Процедура ввода данных студента
INPUT "Фамилия ", FamilyName$ 'Ввод фамилии
INPUT "Год рождения ", Year% 'Ввод года рождения
INPUT "Пол [М/Ж] ", Sex$ 'Ввод пола
WHILE Sex$ <> "М" AND Sex$ <> "м" AND Sex$ <> "Ж" AND Sex$ <> "ж"
'Цикл повторного ввода пола при неверном вводе
PRINT "Неверный ввод"; CHR$(7) 'Вывод сообщения об ошибке
INPUT "Пол [М/Ж] ", Sex$ 'Повторный ввод пола
WEND
'Переопределение строчных букв:
IF Sex$ = "м" THEN Sex$ = "М"
IF Sex$ = "ж" THEN Sex$ = "Ж"
END SUB
SUB MakeFile (FileName AS STRING) 'Процедура создания файла
OPEN FileName FOR OUTPUT AS #1 'Открытие файла под запись
PRINT 'Пропуск строки
WHILE FNQuestion$("Создать запись?") = "YES" 'Цикл создания записей
CALL GetStud(FamilyName$, Year%, Sex$) 'Ввод данных студента
PRINT #1, FamilyName$, ",", Year%, Sex$ 'Запись данных в файл
PRINT 'Пропуск строки
WEND
CLOSE #1 'Закрытие файла
END SUB
SUB Process (FileName AS STRING) 'Процедура обработки файла
SumAge% = 0 'Сброс суммарного возраста
Meter% = 0 'Сброс счетчика студентов
OPEN FileName FOR INPUT AS #1 'Открытие файла под чтение
WHILE NOT EOF(1) 'Цикл просмотра файла
INPUT #1, FamilyName$, Year%, Sex$ 'Чтение данных студента
IF Sex$ = "М" THEN 'Обработка данных студента
PRINT FamilyName$, 1997 - Year% 'Печать фамилии и возраста студента
Meter% = Meter% + 1 'Набор количества студентов мужского пола
SumAge% = SumAge% + 1997 - Year% 'Набор суммарного возраста
END IF
WEND
CLOSE #1 'Закрытие файла
IF Meter% <> 0 THEN
PRINT "Средний возраст "; SumAge% / Meter%
'Вывод среднего возраста
ELSE
PRINT "Студентов мужского пола нет в файле "
END IF
END SUB
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию