Главная страница
Навигация по странице:

  • Вариант №6 студент гр . з-148П11-1 Капустин Леонид Сергеевич«28» сентября 2020г. ТОМСК 2014 Задание № 1

  • Написать программу, которая создает типизированный файл и записывает в него MxN значений. Имя для файла создается по маске .dat.. Лаб.раб.№2. Лабораторная работа 2 по дисциплине Инфоратика2 Вариант 6 студент гр з148П111 Капустин Леонид Сергеевич


    Скачать 135.32 Kb.
    НазваниеЛабораторная работа 2 по дисциплине Инфоратика2 Вариант 6 студент гр з148П111 Капустин Леонид Сергеевич
    АнкорНаписать программу, которая создает типизированный файл и записывает в него MxN значений. Имя для файла создается по маске .dat
    Дата11.10.2021
    Размер135.32 Kb.
    Формат файлаdocx
    Имя файлаЛаб.раб.№2.docx
    ТипЛабораторная работа
    #245364


    Министерство науки и высшего образования

    Российской Федерации

    ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

    СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

    Кафедра радиоэлектроники и систем связи (РСС)

    ЛАБОРАТОРНАЯ РАБОТА №2

    по дисциплине «Инфоратика-2»

    Вариант №6

    студент гр. з-148П11-1

    Капустин Леонид Сергеевич

    «28»сентября 2020г.
    ТОМСК 2014
    Задание № 1. Написать программу, которая создает типизированный файл и записывает в него MxN значений. Имя для файла создается по маске <login>.dat.
    Решение:
    Решим задачу с использованием типизированных файлов.
    Описание структуры программы:
    Для работы программы введем две константы M = 15 иN = 16 согласно варианту. Также введем файловую переменнуюf типа Byte.
    Создадим файл xx182kls.dat и откроем его для записи.
    В цикле запишем в него M*N значений, сгенерированных случайным образом
    Закроем файл.
    Кодпрограммы:
    program lab2_1;

    uses crt;

    const

    M = 15;

    N = 16;

    var

    f: file of Byte;

    i: Integer;

    b: byte;

    begin

    ClrScr;

    Assign(f,'xx182kls.dat');

    Rewrite(f);

    Randomize;

    for i := 1 to M * N do begin

    b := Random (256);

    Write(f, b);

    end;

    Close(f);

    end.
    Результаты работы программы:


    Задание № 2. Написать программу, которая создает массив A[M,N] и заполняет его значениями из файла, созданного первой программой. Вывести на экран массив в виде матрицы MxN.
    Решение:
    Решим задачу с использованием двумерных массивов и типизированных файлов.
    Описание структуры программы:
    Для работы программы введем две константы M = 15 иN = 16 согласно варианту. Также введем файловую переменнуюf типа Byte и двумерный массив B типа Byte.
    Откроем файл xx182kls.dat для чтения.
    В цикле считаем из него M*N значений в заранее определенный массив B
    Выведем на экран полученный массив B в матричном виде.
    Кодпрограммы:
    program lab2_2;

    uses crt;

    const

    M = 15;

    N = 16;

    var

    f: file of Byte;

    i, j: Integer;

    B: array [1..M + 1, 1..N + 1] of byte;

    begin

    ClrScr;

    Assign(f,'xx182kls.dat');

    Reset(f);

    i := 0; j := 0;

    while not eof (f) do begin

    if j mod N = 0 then begin

    j := 1; i := i + 1;

    end;

    read (f, B[i,j]);

    j := j + 1;

    end;

    Close(f);

    for i := 1 to M do

    for j := 1 to N do begin

    write (B[i,j],' ');

    if j mod N = 0 then writeln;

    end;

    end.
    Результаты работы программы:
    Запустим программу и получим на экране содержимое файла в виде матрицы.



    Задание № 3. Описать запись Homme, которая используется для описания человека (поля: Имя, Отчество, Фамилия, дата рождения, пол). Создать файл типа Homme с именем <login>.note и записать в него не менее 10 записей. Первая запись должна описывать студента, выполняющего работу.
    Решение:
    Решим задачу с помощью структурных типов данных и типизированных фалов.
    Описание структуры программы:
    Для решения задачи опишем в программе запись типа Homme, которая состоит из 5-ти полей строкового типа. Причем поля «имя», «фамилия» и «отчество» (name, suname и fname) имеют длину 64 байт, поле «дата рождения» (dateB) имеет длину 16 байт и поле «пол» (gen) имеет длину 1 байт.
    Опишем переменную структуры MAN и файловую переменную fтипа Homme.
    Создадим файл согласно шаблону с именем xx182kls.note и откроем его для записи. Последовательно введем 10 записей.
    Закроем файл.
    Код программы:
    program lab2_3;

    uses crt;

    type

    Homme = record

    name, suname, fname: string[64];

    dateB: string[16];

    gen: string[1];

    end;

    var

    MAN: Homme;

    f: file of Homme;

    i: Integer;
    begin

    ClrScr;

    Assign(f,'xx182kls.note');

    Rewrite(f);

    for i := 1 to 10 do begin

    with MAN do begin

    Write('Name: ');

    ReadLn(name);

    Write('SurName: ');

    ReadLn(suname);

    Write('FName: ');

    ReadLn(fname);

    Write('Birth date: ');

    ReadLn(dateB);

    Write('Gender (W/M): ');

    ReadLn(gen);

    end;

    Write(f, MAN);

    end;

    Close(f);

    end.
    Результаты работы программы:
    Запустим программу и введем 10 произвольных записей.


    Задание № 4. Написать программу, которая считывает из файла <login>.note все данные и выводит на экран в виде таблицы.
    Решение:
    Решим задачу с помощью структурных типов данных и типизированных фалов.
    Описание структуры программы:
    Для решения задачи опишем в программе запись типа Homme, которая состоит из 5-ти полей строкового типа. Причем поля «имя», «фамилия» и «отчество» (name, suname и fname) имеют длину 64 байт, поле «дата рождения» (dateB) имеет длину 16 байт и поле «пол» (gen) имеет длину 1 байт.
    Опишем функцию CalcAge (date1, date2: String), которая будет принимать на вход два строковых параметра (введенную дату с клавиатуры date1 и дату рождения из базы date2). Данная функция будет подсчитывать возраст на дату, введенную с клавиатуры. При этом будет учитываться, что день рождения еще не наступил и что человек вовсе не родился.
    Опишем переменную структуры MAN и файловую переменную fтипа Homme.
    Откроем файл с именем xx182kls.note, созданный в предыдущей задаче. Считаем все записи из файла и выведем их на экран в виде таблицы.
    Закроем файл.
    Кодпрограммы:
    program lab2_4;

    uses crt;

    type

    Homme = record

    name, suname, fname: string[64];

    dateB: string[16];

    gen: string[1];

    end;

    function CalcAge (date1, date2: String): String;

    var

    D1, M1, Y1, D2, M2, Y2: Integer;

    age: Integer;

    begin

    Y1 := StrToInt (Copy (date1, 7, 4));

    M1 := StrToInt (Copy (date1, 4, 2));

    D1 := StrToInt (Copy (date1, 1, 2));

    Y2 := StrToInt (Copy (date2, 7, 4));

    M2 := StrToInt (Copy (date2, 4, 2));

    D2 := StrToInt (Copy (date2, 1, 2));

    if Y1 < Y2 then begin

    CalcAge := 'Not born';

    end else if Y1 = Y2 then begin

    if M1 < M2 then begin

    CalcAge := 'Not born';

    end else if M1 = M2 then begin

    if D1 < D2 then begin

    CalcAge := 'Not born';

    end else begin

    CalcAge := '0';

    end;

    end;

    end else begin

    age := Y1 - Y2;

    if M2 > M1 then

    age := age - 1

    else if M2 = M1 then

    if D2 > D1 then

    age := age - 1;

    CalcAge := IntToStr (age);

    end;

    end;

    var

    MAN: Homme;

    f: file of Homme;

    i: Integer;

    d: String;
    begin

    ClrScr;

    write ('Input some date (dd.mm.yyyy): ');

    readln (d);

    Assign(f,'xx182kls.note');

    Reset(f);

    writeln ('Name ------------ SurName ------------- Fname ------------- Birth Date ---------- Age on input date ------------ Gender');

    writeln;

    while not eof (f) do begin {пока не достигнут конец файла}

    read (f, MAN);

    writeln (MAN.name:11,' ----- ',MAN.suname:11,' ------ ',MAN.fname:11,' ------ ',MAN.dateB:11,' ---------------------- ',CalcAge (d, MAN.dateB),' ------------------ ',MAN.gen:11);

    end;

    writeln ('-------------------------------------------------------------------------------------------');

    Close(f);

    end.
    Результаты работы программы:
    Запустим программу и увидим на экране содержимое файла xx182kls.note в виде таблицы. Введем также дату, например 15.06.2001, и посчитаем возраст всех людей на эту дату.


    написать администратору сайта