Элемент языка |
Назначение |
Type mas:array of real; |
Объявление типа – динамического массива вещественных чисел |
Var A:mas; |
Объявление динамического массива А |
SetLength(A,N); |
Выделение динамической памяти массиву A, состоящему из N действительных чисел |
Finalize(A); |
Освобождение динамической памяти |
Randomize; |
Процедура инициализации генератора случайных чисел |
RandomRange(a,b) |
Функция возвращает целое случайное число в диапазоне [a,b] (Math) |
Random [ ( Range: Integer) ]; |
Функция генерации случайного числа в
диапазоне |
Ord('c') |
Функция возвращает порядковый номер символа 'c' |
Odd(X: Longint): Boolean; |
Функция возвращает true, если X – нечетное целое число, иначе – false |
Типовой вариант
Определить самого старшего рабочего бригады из N=5 человек, средний возраст рабочих и отсортировать список по алфавиту, если сведения о рабочих включают:
- фамилию;
- год рождения.
1. Создайте новый проект консольного приложения Delphi и сохраните его файлы на рабочий диск в папку Ivanov-9 под именем Records.
2. Вставьте новый текстовый файл в проект (команда меню «File / New / Other…»). Выберите на вкладке «New» тип вставляемого объекта «Text».
3. В результате текстовый файл File1.txt будет вставлен в проект и открыт в окне редактора.
4. Сохраните файл под именем Records.txt (команда меню «File | Save As…»)
5. Внесите в новый файл Records.txt данные задания (если конкретные значения полей не заданы, то необходимо задать их самостоятельно):
6. Сохраните изменения файла (команда меню «File | Save»).
7. Отредактируйте текст главной программы.
program Records;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
Worker=record // тип-запись
Name :string[15]; // поле-имя
Year :integer // поле-год рождения
end;
Brigade=array of Worker; // тип - динамический массив рабочих
var
a:Brigade; // массив рабочих
c:Brigade; // отсортированный массив
b:Worker; // самый старший
n:integer; // количество всех рабочих
S: integer; // средний возраст бригады
//------- процедура чтения файла: ----------------------------
procedure ReadFile(var a:Brigade; var n:integer);
var
f:text; // файловая переменная
i:integer; // счетчик
begin
AssignFile(f,'Records.txt'); // связывание файловой переменной
Reset(f); // направление обмена данными-чтение
ReadLn(f,n); // чтение количества элементов массива
SetLength(a,n); // выделение динамической памяти под массив
for i:=0 to n-1 do
with a[i] do ReadLn(f,name,year); // чтение данных массива
CloseFile(f); // закрытие файла исходных данных
end;
//------- процедура поиска самого старшего -------------------
procedure Poisk(a:Brigade; n:integer; var b:Worker);
var
i:integer;
begin
b:=a[0]; // b – эталонная запись
// проход по остальным записям массива
for i:=0 to n-1 do
if a[i].year < b.year then b:=a[i]; // проверка на старшинство
end;
//------- процедура сортировки списка по алфавиту -------------------
procedure Sort(a:Brigade; n:integer; var c:Brigade);
var
i,j:integer; // счетчики
buf:Worker; // буферная запись
begin
c:=Copy(a); // копирование динамического массива А в С
// сортировка методом "пузырька"
for j:=0 to n-2 do
for i:=0 to n-2 do
if c[i].Name[1] > c[i+1].Name[1] then
begin
// обмен полями c[i] и c[i+1] записей через запись buf
buf.Name:=c[i].Name;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.