Тип данных «Запись» Задачи С 4 ЕГЭ
Тип «Запись» Структура данных, состоящая из фиксированного числа компонент разного типа. n Компоненты записи - это поля. n Поля могут быть разного типа комбинированный тип данных n
Тип «Запись» Описание типа: type <имя типа> = record <имя поля>: <тип поля>; … end; n
Тип «Запись» n Пример описания: type adress = record town, street: string; home: string; flat: byte; end; var a, b: adress; town street string home flat byte
Тип «Запись» a: =b; n Над полями разрешены все операции, допустимые для типа поля. n Доступ к полям с помощью составного имени: a. town: =“Саратов”; a. flat: =14; n
Тип «Запись» Оператор присоединения with: with <переменная> do <операторы>; n Пример: with a do begin town: =“Саратов”; flat: =14; end; n
Дан список учащихся, включающий фамилию, имя, пол, возраст. Вывести список девушек старше 15 лет. n Данные 4 Иванов Игорь м 16 Вышина Елена ж 12 Косарева Анна ж 17 Петрова Валерия ж 18 в файле input. txt n Данные в файле output. txt Косарева Анна ж 17 Петрова Валерия ж 18
program p 1; type pupil=record fam: string; name: string; sex: char; age: byte; end; var i, n: byte; spicok: array[1. . 10] of pupil; begin readln(n); for i: =1 to n do begin readln(spicok[i]. fam); readln(spicok[i]. name); readln(spicok[i]. sex); readln(spicok[i]. age); if (spicok[i]. sex=‘ж’) and (spicok[i]. age>15) then begin write(spicok[i]. fam, ’ ‘); write(spicok[i]. name, ’ ‘); write(spicok[i]. sex, ’ ‘); writeln(spicok[i]. age); end; end.
program p 1; type pupil=record sex: char; age: byte; fam: string[10]; name: string[10]; end; var i, n: byte; spicok: array[1. . 10] of pupil; begin readln(n); for i: =1 to n do begin with spicok[i] do begin readln(fam); readln(name); readln(sex); readln(age); if (sex=‘ж’) and (age>15) then begin write(fam, ’ ‘); write(name, ’ ‘); write(sex, ’ ‘); writeln(age); end; end.
Дан список учащихся с оценками по десяти предметам. Вывести список учащихся со средним баллом.
program p 1; type pupil=record fam, name: string; mark: array[1. . 10] of byte; sr: real; end; var i, n, j, s: byte; spicok: array[1. . 10] of pupil; begin readln(n); for i: =1 to n do begin readln(spicok[i]. fam); readln(spicok[i]. name); for j: =1 to 10 do begin s: =0; readln (spisok[i]. mark[j]); s: =s+ spisok[i]. mark[j]; end; spisok[i]. sr: =s/10; write(spicok[i]. fam, ’ ‘); write(spicok[i]. name, ’ ‘); writeln(spicok[i]. sr: 5: 3); end.
Дан список учащихся, включающий фамилию, имя, пол, возраст. Вывести список девушек старше 15 лет. В первой строке вводится количество учащихся N. Далее следует N строк, имеющих следующий формат: <Фамилия><Имя><Пол><Возраст>. Здесь <Фамилия>- строка, состоящая не более чем из 20 символов; <Имя> - строка, состоящая не более чем из 15 символов; <Пол> - символ; <Возраст>- целое число. При этом <Фамилия> и <Имя>, <Имя> и <Пол>, <Пол> и <Возраст> разделены одним пробелом.
n Данные в файле input. txt 4 Иванов Игорь м 16 Вышина Елена ж 12 Косарева Анна ж 17 Петрова Валерия ж 18 n Данные в файле output. txt Косарева Анна Петрова Валерия
type pupil=record fam, name: string; sex: char; age: byte; end; var i, n: byte; a: array[1. . 10] of pupil; c: char; begin readln(n); n for i: =1 to n do begin n read(c); a[i]. fam: =‘’; n while c<>’ ‘ do begin n a[i]. fam: =a[i]. fam+c; n read(c); n end; n read(c); a[i]. nam: =‘’; n while c<>’ ‘ do begin n a[i]. nam: =a[i]. nam+c; n read(c); n end; n read(a[i]. sex); n readln(a[i]. age); n if (a[i]. sex=‘ж’) and (a[i]. age>15) then writeln(a[i]. fam, ‘ ', a[i]. nam); n end.
Дан список учащихся, включающий фамилию, имя, пол, возраст. Поменять местами первого и последнего учащихся в списке. В первой строке вводится количество учащихся N. Далее следует N строк, имеющих следующий формат: <Фамилия><Имя><Пол><Возраст>. Здесь <Фамилия>- строка, состоящая не более чем из 20 символов; <Имя> - строка, состоящая не более чем из 15 символов; <Пол> - символ; <Возраст>- целое число. При этом <Фамилия> и <Имя>, <Имя> и <Пол>, <Пол> и <Возраст> разделены одним пробелом.
type pupil=record fam, nam: string; sex: char; age: byte; end; var i, n: byte; a: array[1. . 10] of pupil; c: char; b: pupil; begin readln(n); n for i: =1 to n do begin n read(c); a[i]. fam: =‘’; n while c<>’ ‘ do begin n a[i]. fam: =a[i]. fam+c; n read(c); n end; n read(c); a[i]. nam: =‘’; n while c<>’ ‘ do begin n a[i]. nam: =a[i]. nam+c; n read(c); n end; n read(a[i]. sex); n readln(a[i]. age); n end; n (окончание на след. слайде)
p: =a[1]; a[1]: =a[n]; a[n]: =p; for i: =1 to n do begin writeln(a[i]. fam, ’ ‘, a[i]. nam, ’ ‘, a[i]. sex, ’ ‘a[i]. age); end.
Задача 3. В некотором вузе абитуриенты проходят предварительное тестирование, по результатам которого могут быть допущены к сдаче вступительных экзаменов в первом потоке. Тестирование проводится по трём предметам, по каждому предмету абитуриент может набрать от 0 до 100 баллов. При этом к сдаче экзаменов в первом потоке допускаются абитуриенты, набравшие по результатам тестирования не менее 30 баллов по каждому из трёх предметов. На вход программы подаются сведения о результатах предварительного тестирования. Известно, что общее количество участников тестирования не превосходит 300. В первой строке вводится количество абитуриентов, принимавших участие в тестировании, N. Далее следует N строк, имеющих следующий формат: <Фамилия><Имя><Баллы>. Здесь <Фамилия>- строка, состоящая не более чем из 20 символов; <Имя> - строка, состоящая не более чем из 15 символов; <Баллы> - строка, содержащая три целых числа, разделённых пробелом, соответствующих баллам, полученным на тестировании по каждому из трёх предметов. При этом <Фамилия> и <Имя>, <Имя> и <Баллы> разделены одним пробелом. Примеры входных строк: Петренко Наталья 58 66 38 Антипов Сергей 99 50 72 Напишите программу, которая будет выводить на экран фамилии и имена абитуриентов, допущенных к сдаче экзаменов в первом потоке. При этом имена и фамилии можно выводить в произвольном порядке.


