Создать файл ,содержащий фамилии студентов и их экзаменационные оценки по трем предметом. выбрать студентов имеющих хотя бы одну задолженность .напечатать их фамилии и количество не сданных экзаменов- QBasic(Бейсик)

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 ( Скачать )

Leave a Comment