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

Практическое задание N 1. 23

Читайте также:
  1. HLA - система; классы антигенов, биологические функции, практическое значение HLA-типирования.
  2. Аналитическое задание к семинару-практикуму (тема 9)
  3. Второе задание
  4. Второе задание
  5. Домашнее задание
  6. Домашнее задание
  7. ДОМАШНЕЕ ЗАДАНИЕ

 

1. Рассчитать средний балл по шести предметам для каждого из десяти учащихся. Массивы наименований предметов и фамилий учащихся задать в программе. Массив оценок "A" задать с использованием функции Random. Вывести на экран таблицу: Фамилии (по вертикали), предметы (по горизонтали), все оценки, а также колонку со средними значениями оценок каждого учащегося. Вывести фамилии учеников и наибольшим и наименьшим средним баллом.

2. Исходя из данных массива "A" п. 1, создать массивы "B", "C", "D", содержащие число пятерок, четверок и троек соответственно, полученных каждым учеником по всем шести предметам. Вывести на экран таблицу: фамилии, предметы, оценки с колонками данных массивов "B", "C", "D".

 

Примечание к п. п. 1- 2: Вывести гистограммы с указанием фамилии ученика и его среднего балла, либо число троек полученных по всем предметам.

 

3. Модифицировать массив. Исходные данные п. 1. Вставить в список учащихся новую фамилию ученика с номером 5. Фамилию и оценки ученика ввести оператором Read. Убрать из таблицы предмет с номером два. Вывести на экран исходную и новую таблицы - фамилии, предметы, массив оценок.

4. К заданию п. 1. Создать два массива оценок учеников с четными и нечетными номерами. Вывести на экран таблицы - массивы оценок для каждой группы с указанием предметов и фамилий учащихся.

5. К заданию п. 1. Создать и вывести на экран три таблицы фамилий учеников со средним баллом: от 3-х до 4-х (не включая 4), от 4-х до 5-ти и 5 (отличников) с указанием всех оценок и среднего балла.

6. К заданию п. 1. Создать и вывести на экран таблицу фамилий десяти учеников, имеющих пятерки по шести, пяти, и т. д. предметам в порядке убывания.

Для этого создать линейный массив "B" - число пятерок у каждого ученика. Создание нового массива фамилий "S1" можно проводить используя циклы: k:=0; for i:=1 to 10 do for o:=6 downto 0 do if B[i]=o then k:=k+1; S1[k]:=S[i];

 

 

Создание баз данных с использованием массивов записей

 

 

При работе с записями можно использовать массивы в полях записи или создавать массивы записей. Приведем примеры операторов для обоих случаев.

 

Type Pupil = Record

Fam: String[20]; { Фамилия }

Name: String[10]; { Имя }

Otmetka: array[1..5] of Byte { Отметки по пяти предметам }

End;

Var _10_A, _10_B: array[1..30]of Pupil; {Переменные типа массив записей }

N, i: byte; { N - Число учеников в классе }

Begin N:= 13;

_10_A[1]. Fam:= 'Гришин';

_10_A[1]. Name:= 'Анатолий';

{ и т. д. }

Writeln ('Введите оценки учеников по первому предмету: ');

For i:= 1 to N do begin

With _10_A[i] do Begin

Write(Fam:21, Name:11, '_');

Readln(Otmetka[1])

End

End

End.

{---------------------------------------------------------------- }

Type pupil = Record { массивы в полях записи }

Fam: array[1..30] of String[20]; { Фамилия }

Name: array[1..30] of String[10]; { Имя }

N: Byte; { Число учеников в классе }

Otmetka: array[1..5, 1..30] of Byte { Отметки по пяти предметам }

End;

Var _10_A, _10_B: Pupil; { Переменные типа запись }

I: byte;

Begin

With _10_A do Begin N:= 13;

Fam[1]:= 'Гришин';

Name[1]:= 'Анатолий'; { и т. д. }

Writeln ('Введите оценки учеников по первому предмету: ');

For i:= 1 to N do begin

Write(Fam[i]:21, Name[i]:11,'_');

Readln(Otmetka[1, i])

End

End

End.

Практическое задание N 1. 23

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

 

Работа с большими массивами

 

 

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

 

Program Big_Mas;

CONST N1= 30; N2= 50;

 

type M1= array [1.. N1 ] of REAL; { тип M1 - массив переменных вещественного типа}

M2= array[1..N2] of ^M1; { тип M2 - массив ссылок на начальные адреса

элементов массивов типа M1}

var a1, a2: M2; { двумерные массивы N1xN2 переменных вещественного типа }

i, j: word;

BEGIN

for i:=1 to N2 do New(a1[i]); { размещение массива в оперативной памяти }

for i:=1 to N2 do New(a2[i]);

for j:= 1 to N1 do

for i:= 1 to N2 do begin

a1[i]^[j]:= j + Sin(Pi*i/N2); { пример расчета значений }

a2[i]^[j]:= j - Cos(Pi*i/N2) { элементов двумерных массивов }

End;

for i:= 1 to N2 do Dispose(a1[i]); { освобождение оперативной памяти }

for i:= 1 to N2 do Dispose(a2[i]);

Readln;

END.

Таким образом в оперативной памяти отводится место не под двумерные массивы "a1" и "a2" размером N1xN2, а под одномерные массивы (размером N2) адресов первых элементов линейных массивов (размером N1). Операция a1[i]^[j] (a2[i]^[j]) называется разыменование переменной (элемента массива).

Большие двумерные массивы часто применяются при решении "сеточных" задач.

 

1, 1 1, 2 1, 3 1, 4 Пусть дана сетка, узлы которой пронумерованы

* * * * двумя цифрами, каждая из цифр равна номеру узла

2, 1 2, 2 2, 3 2, 4 в соответствующем направлении.

* * * * При решении задачи требуется хранить значения

3, 1 3, 2 3, 3 3, 4 некоторых функций в узлах, т. е. использовать

* * * * элементы двумерных массивов. Значения индексов

элементов показывают расположение узла на сетке.

 


Дата добавления: 2015-10-29; просмотров: 111 | Нарушение авторских прав


Читайте в этой же книге: Практическое задание N 1. 2 | Оператор выбора | Условный оператор | Оператор цикла с параметром | Операторы цикла с условием | Практическое задание N 1. 15 | Break; - прерывание цикла. | Составление диалоговых программ | Линейные массивы | Практическое задание N 1. 20 |
<== предыдущая страница | следующая страница ==>
Двумерные массивы| Текстовые файлы

mybiblioteka.su - 2015-2024 год. (0.01 сек.)