DEFINT A-Z
' То что запишем в файл
DATA "Petrov", 4, 3, 5
DATA "Sidorov", 3, 3, 2
DATA "Evseev", 4, 3, 4
DATA "Kotov", 2, 4, 2
DATA "Utkin", 5, 5, 5
DATA "Vasechkin", 2, 2, 2
' Студентов
CONST StudNum = 6
' Очистка экрана и запрос
CLS : PRINT "Rewrite file ? [ Y ] - yes / [ N ] - no / [ Esc ] - Exit"
' Цикл опроса клавиатуры
DO: kb$ = INKEY$
' Нажали "Y" - перезаписываем файл
IF UCASE$(kb$) = "Y" THEN
ON ERROR GOTO ErrEv: ' Сьавим обработчик ошибок
KILL "Students.txt" ' Удаляем старый файл если он был
ON ERROR GOTO 0 ' Снимаем обработчик
' Создаем файл для записи
OPEN "O", #1, "Students.txt"
' Цикл по студентам
RESTORE
FOR I = 1 TO StudNum
READ Name$ ' Читаем из DATA
PRINT #1, Name$ ' Пишем в файл
' Цикл по оценкам
FOR k = 1 TO 3
READ ocenk ' Читаем из DATA
IF k = 3 THEN
PRINT #1, ocenk ' Пишем в файл с пер. строки.
ELSE
PRINT #1, ocenk; ' Пишем в файл
END IF
NEXT
NEXT
' Закроем файл
CLOSE #1
EXIT DO
ELSEIF kb$ = CHR$(27) THEN END ' Выход по ESC
END IF
LOOP UNTIL UCASE$(kb$) = "N"
' Откроем файл для чтения
OPEN "I", #1, "Students.txt"
' Цикл по студентам
FOR I = 1 TO StudNum
INPUT #1, Name$ ' Читаем из файла
Nezdano = 0
' Цикл по оценкам
FOR k = 1 TO 3
' Читаем из файла
INPUT #1, ocenk
IF ocenk < 3 THEN Nezdano = Nezdano + 1
NEXT
IF Nezdano > 0 THEN
PRINT Name$; " ne zdal"; Nezdano; " ekzamena"
END IF
NEXT
' Закроем файл
CLOSE #1
END
ErrEv: RESUME NEXT
Тестирование выполнено в программе QB64 ( Скачать )