Меню
Разработки
Разработки  /  Информатика  /  Подготовка к ЕГЭ  /  11 класс  /  Использование структуры запись при решении заданий С4 на ЕГЭ

Использование структуры запись при решении заданий С4 на ЕГЭ

В презентации кратко представлена теория по теме Записи на языке паскаль, примеры применения этой структуры для решения задачи С4 на ЕГЭ по информатике, а также размещено решение задачи С4 из демонстрационного варианта 2012 года с использованием записей.
11.05.2012

Описание разработки

В презентации кратко представлена теория по теме "Записи на языке паскаль", примеры применения этой структуры для решения задачи С4 на ЕГЭ по информатике, а также размещено решение  задачи С4 из демонстрационного варианта 2012 года с использованием записей.

Использование структуры запись при решении  заданий С4 на ЕГЭ

Содержимое разработки

Гимназия №8 Подготовка к ЕГЭ по информатике Решение задач С4 С использованием комбинированного типа данных - ЗАПИСЬ Учитель МБОУ СОШ № 4 г. Туапсе Пятакова Н. В. Евграфова О.В.

Гимназия №8

Подготовка к ЕГЭ

по информатике

Решение задач С4

С использованием комбинированного типа данных - ЗАПИСЬ

Учитель МБОУ СОШ № 4 г. Туапсе Пятакова Н. В.

Евграфова О.В.

Определение и правила записи Запись  — структурированный тип данных. Записи являются неоднородными неупорядоченными структурами с прямым доступом к компонентам. Компоненты записи называют полями записи . Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту. Например, информация о рекордах по бегу у мужчин для открытых стадионов может содержать следующие атрибуты  рекордсмен  страна  статус соревнований (Олимпиада, чемпионат мира)  длина дистанции  год рекорда  время

Определение и правила записи

Запись  — структурированный тип данных. Записи являются неоднородными неупорядоченными структурами с прямым доступом к компонентам. Компоненты записи называют полями записи .

Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту.

Например, информация о рекордах по бегу у мужчин для открытых стадионов может содержать следующие атрибуты

рекордсмен

страна

статус соревнований (Олимпиада, чемпионат мира)

длина дистанции

год рекорда

время

Описание записи в языке Паскаль осуществляется с помощью служебного слова record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом end. Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи: type TRec = Record FIO: String[20]; TEL: String[7] end;var rec: TRec; Описание записей возможно и без использования имени типа, например: var rec: Record FIO: String[20]; TEL: String[7] end;

Описание записи в языке Паскаль осуществляется с помощью служебного слова record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом end.

Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи:

type TRec = Record

FIO: String[20];

TEL: String[7]

end;var rec: TRec;

Описание записей возможно и без использования имени типа, например:

var rec: Record

FIO: String[20];

TEL: String[7]

end;

Запись может быть объявлена в разделе type: идентификатор типа = Record     поле1: тип;    поле2: тип;    …    полеN: тип end; Например, type beg = record   fam: string[25];   srtana: string[20];   status: boolean; {Олимпиада - true; чемпионат мира - false}   dlina: longint;   god: 1900..2009;   vr: string[15];   end;   Var a: beg;

Запись может быть объявлена в разделе type:

идентификатор типа = Record

поле1: тип;

поле2: тип;

полеN: тип

end;

Например,

type beg = record

fam: string[25];

srtana: string[20];

status: boolean; {Олимпиада - true; чемпионат мира - false}

dlina: longint;

god: 1900..2009;

vr: string[15];

end;

 

Var a: beg;

К каждому элементу записи можно обратиться, используя составное имя, которое имеет следующую структуру: . Например,    a.fam; a.dlina и т.п. Если, например, требуется полю

К каждому элементу записи можно обратиться, используя составное имя, которое имеет следующую структуру:

.

Например,

a.fam; a.dlina и т.п.

Если, например, требуется полю "status" присвоить значение «true», то это делается так:

a.status := true;

Поля записи могут иметь любой тип, кроме файла, в частности, сами могут быть записями.

В программе могут использоваться массивы записей. Любая обработка записей, в том числе ввод и вывод, производится поэлементно. Например, var b: array[1..200] of beg1;   ... write('Число рекордсменов? '); readln(n); for i:=1 to n do with b[i] do begin  write('Фамилия спортсмена? '); readln(fam);  write('Гражданин какой страны спортсмен? '); readln(strana);  write('Статус соревнования? '); readln(status);  write('Длина дистанции? '); readln(dlina);  write('Год проведения соревнования? '); readln(god);  write('Время, за которое спортсмен пробежал дистанцию (мин, сек)? '); readln(vr.min, vr.sec); end; ...

В программе могут использоваться массивы записей.

Любая обработка записей, в том числе ввод и вывод, производится поэлементно.

Например,

var b: array[1..200] of beg1;

  ...

write('Число рекордсменов? '); readln(n);

for i:=1 to n do

with b[i] do

begin

write('Фамилия спортсмена? '); readln(fam);

write('Гражданин какой страны спортсмен? '); readln(strana);

write('Статус соревнования? '); readln(status);

write('Длина дистанции? '); readln(dlina);

write('Год проведения соревнования? '); readln(god);

write('Время, за которое спортсмен пробежал дистанцию (мин, сек)? '); readln(vr.min, vr.sec);

end;

...

В примере был использован оператор присоединения, который имеет следующий вид: with  do ; Он позволяет, один раз указав имя переменной типа

В примере был использован оператор присоединения, который имеет следующий вид: with do ;

Он позволяет, один раз указав имя переменной типа "запись" после слова with, работать в пределах одного оператора (простого или составного) с именами полей как с обычными переменными, т.е. не писать громоздких составных имен.

Или

With m do

begin

number:=1964;

marka:=‘Audi - 100’;

fio:=‘Фёдорова Н. В.’;

adres:=‘ул. Красина 53 к. 1 – 73.’;

end;

Задача. Сведения о деталях, хранящихся на складе, содержат следующие атрибуты: название, количество, стоимость одной детали. Вывести информацию о детали, суммарная стоимость для которой максимальна. program ex_zap; type detal = record a: string[30]; kol, st: integer; end; var a: array [0..99] of detal; n, i, max: integer; begin  write('Количество деталей? ');  readln(n);  for i:=0 to n-1 do With a[i] do begin write('Информация об ', i, ' детали: ');  readln(a);  readln(kol);  readln(st);  end;  max := 0;  for i:= 1 to n-1 do  if a[max].kol*a[max].st   writeln('Искомая деталь: ', a[max].a, ' стоимостью ', a[max].st, ' в количестве ', a[max].kol); end.

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

program ex_zap;

type detal = record a: string[30]; kol, st: integer; end;

var a: array [0..99] of detal; n, i, max: integer;

begin

write('Количество деталей? ');

readln(n);

for i:=0 to n-1 do

With a[i] do

begin write('Информация об ', i, ' детали: ');

readln(a);

readln(kol);

readln(st);

end;

max := 0;

for i:= 1 to n-1 do

if a[max].kol*a[max].st

writeln('Искомая деталь: ', a[max].a, ' стоимостью ', a[max].st, ' в количестве ', a[max].kol);

end.

 Условие задачи типа С4 с использованием записей.  На вход в программе подаются сведения о студентах с 1-го по 5-й курс некоторого вуза. В первой строке сообщается количество студентов N, которое больше 20, но меньше или равно 100, каждая из следующих N строк имеет следующий формат:    , где  - строка, состоящая не более чем из 20 символов,  - строка, состоящая не более чем из 15 символов,  - целое число от 1 до 5,  - вещественное число.  и  , а также  и  и  разделены одним пробелом. Входные данные не упорядочены никаким способом. Пример входных строк: 25 Федорова Ирина 5 4500 Иванов Сергей 3 2050 Требуется написать программу, которая будет выводить на экран фамилии и имена студентов, имеющих максимальную стипендию на своём курсе в порядке с первого курса по пятый. Если есть студенты с одинаковыми стипендиями, то следует вывести их фамилии и имена. Алфавитный порядок при выводе фамилий можно не соблюдать. Считать, что на всех курсах есть студенты, получающие стипендию. Пример выходных строк: Курс 1 Петров Иван Катаев Сергей Курс 2 Смирнов Максим

Условие задачи типа С4 с использованием записей.

На вход в программе подаются сведения о студентах с 1-го по 5-й курс некоторого вуза. В первой строке сообщается количество студентов N, которое больше 20, но меньше или равно 100, каждая из следующих N строк имеет следующий формат: , где - строка, состоящая не более чем из 20 символов, - строка, состоящая не более чем из 15 символов, - целое число от 1 до 5, - вещественное число. и , а также и и разделены одним пробелом. Входные данные не упорядочены никаким способом.

Пример входных строк:

25

Федорова Ирина 5 4500

Иванов Сергей 3 2050

Требуется написать программу, которая будет выводить на экран фамилии и имена студентов, имеющих максимальную стипендию на своём курсе в порядке с первого курса по пятый. Если есть студенты с одинаковыми стипендиями, то следует вывести их фамилии и имена. Алфавитный порядок при выводе фамилий можно не соблюдать. Считать, что на всех курсах есть студенты, получающие стипендию.

Пример выходных строк:

Курс 1

Петров Иван

Катаев Сергей

Курс 2

Смирнов Максим

max_kurs[p[i].kurs] then max_kurs[p[i].kurs]:=p[i].stip; readln; end; {цикла} {вывод студентов с мах стипендией на курсе} writeln('максимальная стипендия студентов’);writeln; for k:=1 to 5 do begin writeln('курс',k); for i:=1 to n do with p[i] do begin if ((kurs=k)and (stip=max_kurs[k])) then writeln(name); end; writeln; end; readln; end. " width="640"

var p:array[1..100] of record

name: string;

kurs:integer;

stip: real;

end;

c:char;

i,k,n,m:integer;

max_kurs:array[1..5] of real;

begin

readln(n);

for i:=1 to n do

max_kurs[i]:=0;{обнулено мах значение стипендии по всем 5 курсам}

for i:=1 to n do

begin

p[i].name:='';

repeat

read(c);

p[i].name:=p[i].name+c

until c=' ';{считана фамилия}

repeat

read(c);

p[i].name:=p[i].name+c

until c=' ';{считано имя}

read(m);{считан курс}

p[i].kurs:=m;

read(p[i].stip);{считана стипендия}

if p[i].stipmax_kurs[p[i].kurs] then max_kurs[p[i].kurs]:=p[i].stip;

readln;

end; {цикла}

{вывод студентов с мах стипендией на курсе}

writeln('максимальная стипендия студентов’);writeln;

for k:=1 to 5 do begin

writeln('курс',k);

for i:=1 to n do

with p[i] do

begin

if ((kurs=k)and (stip=max_kurs[k])) then writeln(name);

end;

writeln;

end;

readln;

end.

Задача С4 из демонстрационного варианта 2012 года

(с использованием записей)

В командных олимпиадах по программированию для решения предлагается

не больше 11 задач. Команда может решать предложенные задачи в любом

порядке. Подготовленные решения команда посылает в единую

проверяющую систему соревнований. Вам предлагается написать

эффективную, в том числе по используемой памяти, программу, которая

будет статистически обрабатывать пришедшие запросы, чтобы определить

наиболее популярные задачи. Следует учитывать, что количество запросов в

списке может быть очень велико, так как многие соревнования проходят с

использованием Интернет.

Перед текстом программы кратко опишите используемый вами алгоритм

решения задачи.

На вход программе в первой строке подаётся количество пришедших

запросов N. В каждой из последующих N строк записано название задачи

в виде текстовой строки. Длина строки не превосходит 100 символов,

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

Пример входных данных:

6

А+B

Крестики-Нолики

Прямоугольник

Простой делитель

А+В

Простой делитель

Программа должна вывести список из трёх наиболее популярных задач

с указанием количества запросов по ним. Если в запросах упоминаются

менее трех задач, то выведите информацию об имеющихся задачах. Если

несколько задач имеют ту же частоту встречаемости, что и третья по частоте

встречаемости задача, их тоже нужно вывести.

Пример выходных данных для приведённого выше примера входных данных:

А+В 2

Простой делитель 2

Крестики-Нолики 1

Прямоугольник 1

1 then {proveriaem kolichestvo razlichnix zadach } begin {ecli da to snowa vivodim maxsimalnii} for i:=1 to num do if max writeln('',a[maxi].s1,' ',a[maxi].d); a[maxi].d:=0; max:=0; end; if num2 then {proveriaem kolichestvo razlichnix zadach } begin {ecli da to snowa vivodim maxsimalnii} for i:=1 to num do if max for i:=1 to num do {ecli takix znach mnogo to vivodim vse} if max=a[i].d then writeln('',a[i].s1,' ',a[i].d); end; readln; end. " width="640"

program C4;

type avto= record

d:integer;{d-kolichestvo poiavlenii zadach s1}

s1:string;{nazvanie zadachi}

end;

var

s:string;

a : array [1..11] of avto; {massiv sodergahii zapisi}

n,i,j,num,max,maxi:integer;

begin

num:=0;{num - kolichestvo razlichnix zadach}

readln(n);{n - kolichestvo vsex nazvanii zadach}

for i:=1 to n do

begin

readln(s);{vvodim nazvanie zadachi}

j:=1;

while (ja[j].s1) do j:=j+1;{proveriaem bila li do etigo dannoe nazvanie zadachi}

if j

a[j].d:=a[j].d+1{pribavliaem odin k schetchiky poiavlenii}

else begin {inache}

a[j].s1:=s;{zanosim nazvanie v massiv}

a[j].d:=1;

num:=num+1;

end;

end;

for i:=1 to num do {ihem maximalnii}

if max

writeln('',a[maxi].s1,' ',a[maxi].d); {vivodim ego}

a[maxi].d:=0;{ochishaem scetchik poiavlenii}

max:=0;

if num1 then {proveriaem kolichestvo razlichnix zadach }

begin {ecli da to snowa vivodim maxsimalnii}

for i:=1 to num do

if max

writeln('',a[maxi].s1,' ',a[maxi].d);

a[maxi].d:=0;

max:=0;

end;

if num2 then {proveriaem kolichestvo razlichnix zadach }

begin {ecli da to snowa vivodim maxsimalnii}

for i:=1 to num do

if max

for i:=1 to num do {ecli takix znach mnogo to vivodim vse}

if max=a[i].d then

writeln('',a[i].s1,' ',a[i].d);

end;

readln;

end.

Спасибо за внимание natwikp@mail.ru

Спасибо за внимание

[email protected]

-75%
Курсы повышения квалификации

Проектная деятельность учащихся

Продолжительность 72 часа
Документ: Удостоверение о повышении квалификации
4000 руб.
1000 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Использование структуры запись при решении заданий С4 на ЕГЭ (0.83 MB)

Комментарии 1

Чтобы добавить комментарий зарегистрируйтесь или на сайт

Надежда Юрченко, 14.06.2015 23:48
Очень нужные вещи!

© 2008-2024, ООО «Мультиурок», ИНН 6732109381, ОГРН 1156733012732

Учителю!
Огромная база учебных материалов на каждый урок с возможностью удаленного управления
Тесты, видеоуроки, электронные тетради