Пример использования записи с вариантами

Задача: 

Создать каталог из журнал и статей. Выдавать информацию о публикациях, удовлетворяющих тому или иному критерию, например, изданных с 2000 года.

Программа на языке Паскаль: 

type
    t_pub = record
        author: string[40];
        title: string[100];
        year: integer;
        case t: char of
            'b': (publ:string[20]);
            'j': (jour:string[30]; num:byte);
    end;
var
    catalog: array[1..20] of t_pub;
    n,i: integer;
begin
    write('Количество записей: ');
    readln(n);
    for i:=1 to n do begin
        write('Книга или журнал: ');
        readln(catalog[i].t);
        write('Автор: ');
        readln(catalog[i].author);
        write('Название: ');
        readln(catalog[i].title);
        write('Год издания: ');
        readln(catalog[i].year);
        case catalog[i].t of
            'b': begin
            write('Издательство: ');
            readln(catalog[i].publ);
            end;
            'j': begin
            write('Журнал: ');
            readln(catalog[i].jour);
            write('Номер: ');
            readln(catalog[i].num);
            end;
        end;
        writeln;
    end;
 
    for i:=1 to n do
        with catalog[i] do
            if (year >= 2000) and (t = 'b') then
                writeln(author,' ',title,' ',publ,' ',year);
    for i:=1 to n do
        with catalog[i] do
            if (year >= 2000) and (t = 'j') then
                writeln(author,' ',title,' ',jour,' ',year,' ',num);
 
readln;
end.

Комментарии

в начале указывает на

в начале указывает на ошибку:ожидался идентификатор и курсор на case,в чем ошибка?

записи

При поступлении в университет лица получившие оценку неудовлетворительно на первом экзамене ко второму не допускаются считая фамилии абитуриентов и их оценки после первого экзамена исходными данными составить список абитуриентов допущенных ко второму экзамену

Кто может помогите))

Ввести дату (месяц, день). Используя тип данных «множества» и операторы case и in вывести на экран, какое время года соответствует этой дате. В программе предусмотреть проверку корректности введенной даты.

Помогите решить

Используя тип данных «множества», определить, является ли введенное слово идентификатором, т.е. начинается ли оно с буквы или знака подчеркивания и не содержит других символов, кроме букв латинского алфавита, цифр и знака подчеркивания.

var ch, n: set of char;

var
    ch, n: set of char;
    str: string;
    i: byte;
begin
    ch := ['a'..'z','A'..'Z','_'];
    n := ['0'..'9'];
    readln(str);
    if str = '' then exit;
    if not (str[1] in ch) then begin
        writeln('No');
        exit;
    end;
    for i:=2 to length(str) do 
        if not ((str[i] in ch) or (str[i] in n)) then begin
            writeln('No');
            exit;
        end;
    writeln('Yes');        
end.

Кто может помогите))

Используя ограниченный тип для дней в месяце и месяцев в году, разработать программу, которая переменной t присваивает значения true, если первая введенная дата (пара чисел  день, месяц) предшествует (в рамках года) второй дате, и значение false в противном случае, и выводит на экран соответствующее сообщение. В программе осуществить проверку корректности введенных дат.

Помогите решить

Используя перечисляемый тип, определить тип «дни недели» и выдать все «черные» пятницы текущего года (т.е. число месяца равно 13, а день недели – пятница).

Помогите решить

Используя записи разработать программу сложения и умножения комплексных чисел.

type complex = record

type
    complex = record
        x: real;
        y: real;
    end;
var 
    a,b,sum,mult: complex;
begin
    writeln('Число A');
    write('    действительная часть: ');
    readln(a.x);
    write('    мнимая часть: ');
    readln(a.y);
    writeln('Число B');
    write('    действительная часть: ');
    readln(b.x);
    write('    мнимая часть: ');
    readln(b.y);
 
    sum.x := a.x + b.x;
    sum.y := a.y + b.y;
    mult.x := a.x * b.x - a.y * b.y;
    mult.y := a.y * b.x + a.x * b.y;
    writeln('Сумма:   ', sum.x:2:2, '+',sum.y:2:2,'i');
    writeln('Произв.: ', mult.x:2:2, '+',mult.y:2:2,'i');
end.

Помогите,пожалуйста

помогите составить программу:
5. Структура записи:
 фамилия студента;
 название дисциплины;
 количество выполненных работ;
 количество защищенных отчетов.
Определить общее количество выполненных, но не сданных работ, для заданного студента по всем дисциплинам.

const Q = 100; type stud

const Q = 100;
type
    stud = record
        sname: string[30];
        subj: string[40];
        jobs: byte;
        reps: byte;
    end;
var
    studs: array[1..Q] of stud;
    i,n: byte;
    name: string[30];
    j,r: integer;
begin
    write('Количество записей: ');
    readln(n);
    for i:=1 to n do
        with studs[i] do begin
            write(i,'. Фамилия: ');
            readln(sname);
            write('   Дисциплина: ');
            readln(subj);
            write('   Количество выполненных и защищенных работ: ');
            readln(jobs,reps);
        end;
    writeln;
    write('Искомый студент: ');
    readln(name);
    j := 0;
    r := 0;
    for i:=1 to n do
        if studs[i].sname = name then begin
            j := j + studs[i].jobs;
            r := r + studs[i].reps;
        end;
    writeln('Работ выполнил: ', j);
    writeln('Работ сдал: ', r);
    writeln('Количество несданных: ', j - r);
end.

Пример выполнения:

Количество записей: 5
1. Фамилия: Иванов А.
   Дисциплина: алгебра
   Количество выполненных и защищенных работ: 10 5
2. Фамилия: Петров Н.
   Дисциплина: геометрия
   Количество выполненных и защищенных работ: 7 7
3. Фамилия: Иванов А.
   Дисциплина: черчение
   Количество выполненных и защищенных работ: 3 2
4. Фамилия: Котов Д.
   Дисциплина: алгебра
   Количество выполненных и защищенных работ: 8 6
5. Фамилия: Котов Д.
   Дисциплина: физика
   Количество выполненных и защищенных работ: 9 8

Искомый студент: Иванов А.
Работ выполнил: 13
Работ сдал: 7
Количество несданных: 6

огромное Вам спасибо!

огромное Вам спасибо!

Ругается перед кейсом

Не работает