1 Пример: Для каждого из 25 учеников класса известны фамилия и оценки (в баллах) по пяти дисциплинам. Требуется вычислить среднюю оценку каждого ученика.

Презентация:



Advertisements
Похожие презентации
Тема: Комбинированный тип данных. Цель:. Комбинированный тип данных – это структурированный тип, состоящий из фиксированного числа компонент разного типа.
Advertisements

Записи 1.Повторение структуры данных МАССИВ 2.Определение структуры данных ЗАПИСЬ 3.Описание типа данных ЗАПИСЬ в Pascal 4.Решение задачи с использованием.
Комбинированный тип данных (Record) Решение задач Вербицкая Ольга Владимировна, Заозерная школа 16.
1 Записи 2 Запись – это тип данных, который может включать в себя несколько полей – элементов разных типов (в том числе и другие структуры). Свойства:
Структуры (записи) Программирование на языке Паскаль.
Массивы Заполнение и вывод на экран. ОПРЕДЕЛЕНИЕ Массив – это набор однородных данных (чисел, символов, слов), имеющий имя и последовательную нумерацию.
Записи Структурированный тип. Type =record end; Запись – структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. Поля.
Записи Структурированный тип. Type =record end; Запись – структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. Поля.
Записи Комбинированный тип. Запись – структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. Поля записи могут быть.
Функции. Функция- это подпрограмма, которая вычисляет и возвращает некоторое значение. Функции описываются в разделе описаний следующим образом: Function.
Одномерные массивы Решение задач. Табличный способ организации данных Одномерные и двумерные массивы.
Тема: «Понятие массива. Назначение. Тип. Размер. Размерность. Одномерный массив» :56:36.
Массивы Структура типов данных типы простые структурированные 1.Целые (integer, longint) 2.Вещественные (real) 3.Логические (boolean) 4.Символьные (string,
Раздел 3. Множества и записи Тема 2: Тип запись. Операторы над записями 1 Магистрант: Хаитов Икром Джураевич.
Упорядоченный набор данных одного типа называется массивом. Каждый элемент массива описывается в общем виде как A[i], где A – имя массива, i – номер элемента.
© М.Е.Макарова
Язык программирования Паскаль 9 часть. Массивы.
© М.Е.Макарова
Тема: «Понятие квадратная матрица» :17:47.
Массивы Массив используется для обработки упорядоченного набора величин одного типа, обозначенного одним именем. Доступ к элементам массива осуществляется.
Транксрипт:

1 Пример: Для каждого из 25 учеников класса известны фамилия и оценки (в баллах) по пяти дисциплинам. Требуется вычислить среднюю оценку каждого ученика и выбрать человека, имеющего максимальный средний балл. В данном случае: Фамилия – строка из 15 символов, оценка – целое число, средний балл – вещественное (действительное) число. Программа

Комбинированный тип данных (записи) Записи – это структурированный тип данных, содержащий набор объектов разных типов Составляющие запись объекты называются полями. В записи каждое поле имеет свое собственное имя. Средний балл Оценка 5Оценка 4Оценка 3Оценка 2Оценка 1Фамилия Поля Записи

3 Описание записи Имя записи имена объектив, составляющих запись и их типы. Общий вид: Type = Record : ; : ; … : End;

Type pupil = Record fam: String[15]; {поле фамилии ученика} b1,b2,b3,b4,b5: 2..5; {поля баллов по дисциплинам} sb: real {поле среднего балла} End; Для нашей задачи: pupil famb1b2b2b3b3b4b4b5b5 sb ЗАПИСЬ Строка из 15 символов 2..5 Вещественный тип Имя записи Поля записи Тип записей

5 Чтобы хранить в памяти ЭВМ информацию обо всех 25 учениках класса, необходимо определить массив klass, представляющий массив записей: Примечания: 1.Имена полей, составляющих запись, не должны повторяться. 2.Каждое поле записи может иметь любой тип (кроме файлового), в частности, оно может быть снова записью. Var klass: Array[1..25] Of pupil;

6 Доступ к полям записи 1-й способ: указанием имени переменной и имени поля. Например, klass[2].fam, klass[3].sb, klass[1].b4. Поэтому ввод фамилий и оценок учащихся, т.е. элементов массива klass можно задать так: For i:= 1 to 25 do Begin Readln (klass[ i ].fam); Readln (klass[ i ].b1); Readln (klass[ i ].b2); Readln (klass[ i ].b3); Readln (klass[ i ].b4); Readln (klass[ i ].b5); End;

7 Доступ к полям записи 2-й способ: использованием оператора присоединения, который позволяет осуществить доступ к полям записи таким образом, как если бы они были простыми переменными. Его общий вид: Внутри оператора к компонентам записи можно обращаться с помощью имени соответствующего поля: For i:= 1 to 25 do With klass[ i ] do Begin Readln (fam); Readln (b1, b2, b3, b4, b5); End; With Do

8 program zapici; const n = 10; m = 6; {n – кол-во учеников; m - кол-во оценок} type pupel = record fam: string[15]; b:array[1..m] of 2..5; sb:real end; var klass:array[1..n] of pupel; i,j: integer; sbmax: real; Программа: Задача

9 Begin {ввод исходных данных} for i:=1 to n do with klass[ i ] do begin writeln(Введите фамилию и,m, оценок'); readln(fam); for j:=1 to m do readln(b[ j ]); end;

10 for i:=1 to n do {вычисление среднего балла} with klass[i] do begin sb:=0; for j:=1 to m do sb:=sb+b[j]/m; end; sbmax:=0; {поиск мах среднего балла} for i:=1 to n do if klass[i].sb >= sbmax then sbmax:=klass[i].sb; writeln(Фамилия':18,Оценки':18,'Ср.балл':15);writeln; for i:=1 to n do if klass[i].sb=sbmax then with klass[i] do begin write(fam:20,' - '); for j:=1 to m do write(b[j]:3); writeln(' - ',sb:6:3) end; readln; end.

11 Задачи: 1.Данные об учениках вводить из файла. 2.Вывести на экран информацию об ученике «ФамилияХ». 3.Вывести на экран фамилии учеников, имеющих оценки 5 по первым двум дисциплинам. 4.Распечатать фамилии учеников с максимальным средним баллом. 5.Рассортировать учеников по убыванию среднего балла.

12 Пример. Определить дату завтрашнего дня. Пусть дата вводится следующим образом: Type year = ; month = 1..12; day = 1..31; data = Record y: year; m: month; d: day; end; Var dat, next: data; Первое число – это день, второе – месяц, третье – год.

13 Function Leap( yy:year ):boolean; Begin {определяет високосный год или нет} Leap:= ( yy mod 4 = 0 ) And ( yy mod ); End; Function Dmonth( mm: month; yy: year ): day; Begin {кол-во дней данного месяца в данном году} Case mm of 1,3,5,7,8,10,12: dmonth:=31; 4,6,9,11: dmonth:=30; 2: if Leap( yy ) Then Dmonth:=29 Else Dmonth:=28; End;

14 Procedure Tomorrow(td: data; Var nd: data); begin {определяет завтрашнюю дату} If td.d Dmounth( td.m, td.y) {если это не последний день месяца} then With nd Do Begin d:= td.d + 1; m:= td.m; y:= td.y End else if td.m = 12 {если это последний день месяца} then With nd Do Begin d:= 1; m:= 1; y:= td.y + 1; End {декабрь} else With nd Do Begin d:=1; m:= td.m + 1; y:- td.y End; {не декабрь} End;

15 Begin Writeln(Введите сегодняшнее число, месяц, год); Readln(dat.d, dat.m, dat.y); Tomorrow(dat, next); Writeln(Завтра будет ); Writeln(next.d,,, next.m,,, next.y); Readln; End.

16 Задачи: Ввести дату (дд мм гггг). Найти: 1. Дату предыдущего дня; 2. Дату, которая наступит через m дней; 3. Дату, которая была за m дней до сегодняшнего дня; 4. Количество суток, прошедших от даты t1 до t2 ; 5. День недели, выпавший на дату t1, если известно, что в первый день нашей эры был понедельник.