Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Текст программы. { Программа Лабораторной работы N 9






    Program Lab_9;

    { Программа Лабораторной работы N 9

    Динамические переменные. Списки.

    Вариант N 31.

    А.Я.Умненькая, ст. гр. Я-007}

    TYPE data = record {описатель структуры данных студента}

    Name: string[15]; { поле для Фамилии И.О.}

    Bal1, Bal2: integer; {поля баллов за 2 семестра}

    SrBal: real; {поле для среднего балла }

    end;

    Pd=^Dek; {описатель указателей на вершины дека}

    Dek= record { описатель звена дека}

    P1: Pd; {поле указателя следующего звена от начала}

    P2: Pd; {поле указателя следующего звена от конца }

    Student: data; { поле данных студента}

    end;

    VAR

    Docum: data; {рабочая структура данных о студенте }

    DN, DK: Pd; { указатели на начало и конец дека }

    Fin, Fout: text; {Файлы входных данных и результатов работы}

    k: integer; { количество элементов дека}

    Procedure GetStud(Var F: text; var St: data);

    {процедура чтения одной записи файла и формирования данных студента}

    Var

    P, i: integer;

    Begin

    i: =0;

    P: =0;

    St.Name: ='---------------'; поле фамилии заполняем строкой из прочерков максимальной длины

    while P< 2 do {пока не прочтем второй пробел }

    begin

    inc(i);

    read(F, St.Name[i]); {читаем из файла по символу в поле имени }

    if St.Name[i]=' ' then P: =P+1; { подсчет пробелов}

    end;

    St.Name: =Copy(St.Name, 1, i); { Из полной строки поля фамилии вырезаем подстроку по второй пробел (включительно) и заносим обратно в поле фамилии }

    readln(F, St.Bal1, St.Bal2, St.SrBal); { остаток записи файла читаем в поля оценок }

    End;

    Procedure PutDek(Var NK, KN: Pd; Inf: data; Beg: boolean);

    {процедура добавления элемента в дек с заказанного конца}

    Var U: Pd;

    Begin

    New(U);

    U^.Student: =Inf;

    U^.P1: =nil;

    U^.P2: =nil;

    if NK=nil then { если дек перед этим был пуст }

    KN: =U

    else

    if Beg then { если добавляем в начало }

    begin

    U^.P1: =NK;

    NK^.P2: =U;

    end

    else { если добавляем в конец }

    begin

    U^.P2: =NK;

    NK^.P1: =U;

    end;

    NK: =U;

    End;

    Procedure DelDek(Var NK, KN: Pd; var Inf: data; Beg: boolean);

    {процедура выбора элемента из заказанного конца дека }

    Var U: Pd;

    Begin

    U: =NK;

    Inf: =U^.Student;

    if NK=KN then { если в деке был всего один элемент}

    begin { делаем дек пустым}

    KN: =nil;

    NK: =nil;

    end

    else

    if Beg then { если удаление из начала }

    begin

    NK: =U^.P1;

    NK^.P2: =nil;

    end

    else { если удаление из конца }

    begin

    NK: =U^.P2;

    NK^.P1: =nil;

    end;

    Dispose(U); { собственно освобождение памяти от элемента }

    End;

    Procedure ReadFile(Var F: text; Var DekN, DekK: Pd; var N: integer);

    { чтение файла с заполнением дека }

    Var

    Stud: data;

    Begin

    N: =0;

    While Not Eof(F) do

    begin

    GetStud(F, Stud);

    N: =N+1;

    if (Stud.Bal1=5) and (Stud.Bal2=5) then

    PutDek(DekN, DekK, Stud, TRUE)

    else

    if (Stud.Bal1=3) and (Stud.Bal2=3) then

    PutDek(DekK, DekN, Stud, FALSE)

    else { если данные не заносим в дек }

    N: =N-1;

    end;

    End;

    Procedure WriteFile(Var F: text; Var NK, KN: Pd; N: integer);

    { процедура распечатки дека в выводной файл с удалением дека}

    Var

    i: integer;

    Stud: data;

    Begin

    Writeln(F, '|--------------------------------------',

    '--------------|');

    Writeln(F, '| N | Фамилия И.О. | 1-й балл | 2-й ',

    'балл | Ср.балл |');

    For i: =1 to N do

    begin

    Writeln(F, '|---|----------------|----------|----',

    '------|---------|');

    DelDek(NK, KN, Stud, TRUE);

    WriteLn(F, '|', i: 2, ' | ', Stud.Name: 15, '|', Stud.Bal1: 6,

    ' |', Stud.Bal2: 6, ' |', Stud.SrBal: 6: 1, ' |');

    end;

    Writeln(F, '|--------------------------------------',

    '--------------|');

    End;

    BEGIN { ОСНОВНАЯ ПРОГРАММА }

    Assign(Fin, 'Dan.txt');

    Reset(Fin);

    Assign(Fout, 'Umnik9.res');

    ReWrite(Fout);

    DN: =nil;

    DK: =nil;

    k: =0;

    ReadFile(Fin, DN, DK, k);

    Close(Fin);

    With Docum do

    begin

    Bal1: =k;

    Bal2: =0;

    SrBal: =0.0;

    Name: ='Список типа S0D';

    end;

    PutDek(DN, DK, Docum, TRUE); { добавление в начало дека записи со сводной информацией. }

    DelDek(DN, DK, Docum, TRUE); {Выбор из дека сводной информации для печати }

    Writeln(Fout, Docum.Name: 20, ' из ', Docum.Bal1, ' строк');

    WriteFile(Fout, DN, DK, k); {печать дека в файл с удалением элементов дека}

    close(Fout);

    End.


    Варианты заданий

    Таблица 33. Варианты заданий лабораторной работы № 9

    № вар. Требования к записям, выбираемым из файла и помещаемым в список Тип Списка Файл данных
      Средний балл выше 3 S2KI dan.dat
      Отличные оценки во всех полях S2KO dan.txt
      Первые буквы фамилий А, Б, В S0S dan.dat
      Оценки во всех полях ниже 4 баллов S0O dan.txt
      Первая оценка выше 3 S1L dan.dat
      Первая или вторая оценка выше 3 S1KI dan.txt
      Первая оценкой ниже 5, а вторая выше 3 S1KO dan.dat
      Первые буквы фамилий А, В, Е и средние оценки выше 3 S2L dan.txt
      Оценки 3 во всех полях оценок S2KI dan.dat
      Средние оценки выше 3 баллов S2KO dan.txt
      Вторая оценка выше 4, а первая выше 3 баллов S0S dan.dat
      Первая и вторая оценки выше 4 баллов S0O dan.txt
      В начало –со средней оценкой < 4 балла, в конец – прочие S0D dan.dat
      Первые буквы фамилий А, Б, В и средние оценки выше 4 S1L dan.txt
      Вторые и средние оценки выше 4 баллов S1KI dan.dat
      Первая оценка выше 3 баллов, а средняя оценка выше 3, 5 S1KO dan.txt
      Все оценки не ниже 4 баллов S2L dan.dat
      Вторая и средняя оценки выше 4 баллов S2KI dan.txt
      Средняя оценка выше 3, 5 баллов S2KO dan.dat
      Средняя оценка ниже 4, 5 и фамилии начинаются с букв А и В S0S dan.txt
      Средняя оценка выше 4 баллов и фамилии, начинаются с букв от А до К S0O dan.dat
      В начало – если первая оценка 3, в конец – если первая – 5 S0D dan.txt
      Первая оценка выше 3 балов, а средняя оценка 4 балла S1L dan.dat
      Все оценки выше 4 и фамилии начинаются с букв А - Е S1KI dan.txt
      Первая и средняя оценки выше 4 баллов S1KO dan.dat
      Все оценки ниже 5 баллов S2L dan.txt
      Первая или вторая оценка выше 4 баллов S2KI dan.dat
      Первая или средняя оценки ниже 4 баллов S2KO dan.txt
      Средняя оценка выше 4 баллов S0S dan.dat
      Все оценки выше 4 или фамилии начинаются с букв А - Е S0O dan.txt
      В начало – только с пятерками, в конец – только с тройками S0D dan.txt

    Литература

    1. Бородич Ю.С., Вальвачев А.Н., Кузьмич А.И. Паскаль для персональных компьютеров: Справочне пособие. Минск: " Вышейшая школа", 1991.
    2. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0 (третье издание). М.: " Диалог-МИФИ", 1996.
    3. Немнюгин С.А. Turbo Pascal: практикум. СПб.: Питер, 2001.
    4. Кнут Д. Искусство программирования для ЭВМ. /Пер. с англ.: В 3-х томах. т.3. Сортировки и поиск. М.: Мир, 1976.
    5. Бронштейн И.Н., Семендяев К.А. Справочник по математике для инженеров и учащихся ВТУЗов (Изд. 13-е). М.: " Наука", 1986.

     






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.