Читайте также: |
|
Пример 1. В трех одномерных массивах A,B и C содержатся результаты, показанные студентами трех групп в беге на 100 метров. Найти наилучший результат этих спортсменов. Для решения задачи составить процедуры: ввода массива и поиска наименьшего в массиве.
Program Pobeda;
{$APPTYPE CONSOLE}
Uses SysUtils;
Const nmax=10;
Type
Tmas=array[1.. mmax] of real; // тип описания одномерного массива
Procedure VvodMas(var x:Tmas; Var nx:integer);
// ввод элементов массива
Var i:integer;
begin
writeln('введите число элементов массива');
readln(nx);
writeln('введите элементы массива:');
for i:=1 to nx do read(x[i]);
readln;
end;
Procedure PoiskMin(Const x:Tmas; nx:integer; var xmin:real);
//поиск минимального элемента массива
Var i:integer;
begin
xmin:=x[1];
for i:=2 to nx do
if x[i]<xmin then xmin:=x[i];
end;
var // объявление глобальных параметров
a,b,c,d:Tmas;
na,nb,nc:integer;
min:real;
Begin // основная программа
writeln('введите элементы массива A:');
VvodMas(a,na); //вызов процедуры ввода массива
writeln('введите элементы массива B:');
VvodMas(b,nb); //вызов процедуры ввода массива
writeln('введите элементы массива C:');
VvodMas(c,nc); //вызов процедуры ввода массива
PoiskMin(a,na,d[1]); // вызов процедуры поиска минимального в А
PoiskMin(b,nb,d[2]); //вызов процедуры поиска минимального в B
PoiskMin(c,nc,d[3]); //вызов процедуры поиска минимального в C
PoiskMin(d,3,min); //вызов процедуры поиска минимального в D
writeln;
writeln('Наилучший результат - ', min:8:2);
readln;
End.
Пример 2. В массиве строк, в которых слова разделены пробелами, найти слова, которые есть в каждой строке. Для решения задачи составить процедуры:
Program SLOVA;
{$APPTYPE CONSOLE}
Uses SysUtils;
Const nmax=10;
Type
Tmas=array[1..mmax] of string; // тип описания одномерного массива
Procedure VidelSlov(s:string; Var y:Tmas; Var ny:integer);
// выделение слов из строки S и занесение их в массив Y
Var i,j:integer;
slovo:string; // дополнительная строка для формирования слова
pr:boolean; // результат проверки, впервые ли встретилось слово?
// true – впервые, false — повторно
begin
ny:=0;
slovo:=’’;
s:=s+’ ’; // добавление пробела для универсальности работы алгоритма
For i:=1 to length(s) do
If s[i]<>’ ’ then s:=slovo+s[i]
еlse begin
// проверка, впервые ли встретилось слово?
pr:=true;
For j:=1 to ny do
If slovo=y[j] then pr:=false;
If pr=true then
begin
ny:=ny+1;
y[ny]:=slovo;
end;
slovo:=’’;
end;
end;
//
Procedure Sravnenie(Const x,y:Tmas;nx,ny:integer; Var z:Tmas; Var nz:integer);
// поиск одинаковых слов в двух массивах слов и формирования из этих слов //нового массива
var i,j:integer;
begin
nz:=0;
for i:=1 to nx do
for j:=1 to ny do
if x[i]=y[j] then
begin
nz:=nz+1;
z[nz]:=x[i];
end;
end;
var // объявление глобальных параметров
a,b,c,d:Tmas;
i,na,nb,nc,nd:integer;
begin
writeln(’Введите количество строк’);
readln(na);
writeln(’Введите строки’);
for i:=1 to na do readln(a[i]);
// выделение слов из строки A[1] и занесение их в массив B
VidelSlov(a[1],b,nb);
For i:=2 to na do
begin
// выделение слов из строки A[i] и занесение их в массив C
VidelSlov(a[i], c, nc);
// поиск одинаковых слов в массивах B и C и формирования из
// этих слов массива D
Sravnenie(b,c,nb,nc,d,nd);
b:=d; // копирование D массива в массив B
nb:=nd;
end;
if nd=0 then writeln(’Нет одинаковых слов’)
else
begin
writeln(’В каждой строке есть слова:’);
for i:=1 to nd do writeln(d[i]);
end;
readln;
end.
Пример 3. Дан массив записей о студентах с полями: фамилия, имя, год и месяц рождения. Составить массивы записей о студентах, родившихся в каждом квартале года. Для решения задачи составить процедуры ввода массива записей, вывода массива записей, поиска студентов, родившихся в заданном квартале.
Program MasZapis;
{$APPTYPE CONSOLE}
Uses SysUtils;
Const nmax=40;
Type Tstud=record
fam:string[10];
name:string[8];
year:1986..2001;
month:1..12;
end;
Tmas=array[1..nmax] of Tstud;
Procedure Vvod(Var a:Tmas; Var na:integer);
// Ввод массива записей
var
i:integer;
begin
writeln('введите число записей: ');
readln(na);
for i:=1 to na do
begin
writeln(’введите фамилию:’); readln(a[i].fam);
writeln('введите имя:'); readln(a[i].name);
writeln('введите год рождения:'); readln(a[i].year);
writeln('введите месяц рождения:'); readln(a[i].month);
end;
end;
//
Procedure Vivod(Const a:Tmas;na:integer);
// Вывод массива записей
Var i:integer;
begin
writeln(’№’:3,’ ’:4,’Фамилия’:12,’ ’:4,’Имя’:10,’ ’:4,’Год’:6, ’ ’:4,’Месяц’:6;');
for i:=1 to na do
writeln(i:3, ’ ’:4,a[i].fam:12, ’ ’:4,a[i].name:10, ’ ’:4,a[i].year:6, ’ ’:4,a[i].month:6);
end;
//
Procedure Poisk(Const a:Tmas; na:integer; number:byte; Var b:Tmas;Var nb:integer);
// поиск студентов, родившихся в заданном квартале
Var i:integer;
begin
nb:=0;
for i:=1 to na do
case number of
1: if (a[i].month=1) or (a[i].month=2) or (a[i].month=3) then
begin
nb:=nb+1;
b[nb]:=a[i];
end;
2: if (a[i].month=4) or (a[i].month=5) or (a[i].month=6) then
begin
nb:=nb+1;
b[nb]:=a[i];
end;
3: if (a[i].month=7) or (a[i].month=8) or (a[i].month=9) then
begin
nb:=nb+1;
b[nb]:=a[i];
end;
4: if (a[i].month=10) or (a[i].month=11) or (a[i].month=12) then
begin
nb:=nb+1;
b[nb]:=a[i];
end;
end;
end;
//
var // объявление глобальных параметров
a,k1,k2,k3,k4:Tmas;
na,n1,n2,n3,n4:integer;
begin
Vvod (a,na);
writeln(’Список студентов ’);
Vivod (a,na);
Writeln;
Poisk(a,na,1,k1,n1);
if n1=0 then writeln(’Нет студентов, родившихся в 1 квартале’)
else
begin
Writeln(’Cписок студентов,родившихся в 1 квартале:’);
Vivod(k1,n1);
end;
Writeln;
Poisk(a,na,2,k2,n2);
if n2=0 then writeln(’Нет студентов, родившихся во 2 квартале’)
else
begin
Writeln(’Cписок студентов,родившихся во 2 квартале:’);
Vivod(k2,n1);
end;
Writeln;
Poisk(a,na,3,k3,n3);
if n3=0 then writeln(’Нет студентов, родившихся в 3 квартале’)
else
begin
Writeln(’Cписок студентов, родившихся в 3 квартале:’);
Vivod(k3,n1);
end;
Writeln;
Poisk(a,na,4,k4,n4);
if n4=0 then writeln(’Нет студентов, родившихся в 4 квартале’)
else
begin
Writeln(’Cписок студентов, родившихся во 4 квартале:’);
Vivod(k4,n1);
end;
readln;
end.
Дата добавления: 2015-07-26; просмотров: 67 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Классификация параметров подпрограмм | | | Задания для самостоятельной работы |