Приложение 1.
program kurspro;
uses crt;
var w:integer;
procedure rezh1;
const lim=100;
var b:array [1..lim] of real;
n,q,z,x,i,ind,k,l:integer; min,s,p,v:real;
begin
clrscr;
writeln('Режим 1');
writeln;
writeln('Введите размерность массива, n:');
writeln;
read(n);
writeln;
writeln('Введите элементы массива (только неотрицательные элементы):');
writeln;
{Ввод элементов массива}
gotoXY(whereX+7,whereY);
q:=whereX;
z:=whereY;
x:=1;
for i:=1 to n do
begin
if i=10 then
begin
z:=z+2;
x:=1;
end;
gotoXY(q*x,z);
read(b[i]);
x:=x+1;
end;
writeln;
min:=32000;
for i:=2 to n do
begin
s:=0;
p:=0;
for k:=i-1 downto 1 do
p:=p+b[k];
for l:=i+1 to n do
s:=s+b[l];
v:=abs(s-p);
if v<min then
begin
min:=v;
ind:=i;
end;
end;
writeln('Индекс элемента, удовлетворяющего условие: ',ind);
writeln;
writeln('Для возврата в главноe меню нажмите "ENTER" ');
readln;
readln
end;
procedure rezh2;
const lim=10;
var a:array [1..lim, 1..lim] of real;
q,z,i,j,n:integer; s,p:real;
begin
clrscr;
writeln('Режим 2');
writeln;
writeln('Введите размерность квадратичной матрицы, n: ');
readln(n);
writeln('Введите элементы матрицы (размерности ',n,'x',n,'): ');
gotoXY(wherex+10,whereY);
q:=whereX;
z:=whereY;
for i:=1 to n do begin
for j:=1 to n do begin
gotoXY(q*j,z+i*2);
read(a[i,j]);
s:=s+a[i,j];
if i=j then
p:=p+a[i,j];
end;
end;
writeln;
writeln;
writeln('Суммаэлементовравна:',s-p:5:2);
writeln;
writeln('Для возврата в главноe меню нажмите "ENTER" ');
writeln;
writeln;
readln;
readln;
end;
procedure rezh3;
const lim=10;
var a:array [1..lim,1..lim] of real;
n,i,j,x,y,k,l:integer; min,c:real;
begin
clrscr;
writeln('Режим 3');
writeln;
min:=32000;
writeln('Введите размерность квадратичной матрицы, n: ');
read(n);
writeln;
{Vvod elementov matrici}
writeln('Введитеэлементыматрицы (размерности ',n,'x',n,') :');
gotoXY(whereX+10,whereY);
x:=whereX;
y:=whereY;
for i:=1 to n do
for j:=1 to n do
begin
gotoXY(x*j,i*2+y);
read(a[i,j]);
if a[i,j]<min
then
begin
min:=a[i,j];
k:=i;
l:=j;
end;
end;
writeln;
if k<n then
begin
for j:=1 to n do
begin
{smena strok}
c:=a[k,j];
a[k,j]:=a[n,j];
a[n,j]:=c;
end;
end;
if l>1 then
begin
for i:=1 to n do
begin
{smena stolbcov}
c:=a[i,l];
a[i,l]:=a[i,1];
a[i,1]:=c;
end;
end;
{Vivod konechnoj matrici}
writeln;
writeln('Конечнаяматрица:');
gotoXY(whereX+10,whereY);
x:=whereX;
y:=whereY;
for i:=1 to n do
begin
if y+i*2<=25 then
begin
for j:=1 to n do
begin
gotoxy(x*j,y+i*2);
write(a[i,j]:3:2);
end;
end
else
begin
writeln;
for j:=1 to n do
begin
gotoxy(x*j,25);
write(a[i,j]:3:2);
end;
end;
writeln;
end;
writeln;
writeln('Для возврата в главноe меню нажмите "ENTER" ');
readln;
readln
end;
procedure rezh4;
type vod=record
num:integer;
fi,mark,date:string;
end;
var avto: array [1..17] of vod;
box:vod;
kol,i,x,y,kof,kl,ch:integer;
vma:string;
zap: file of vod;
begin
clrscr;
assign(zap,'zap.txt');
rewrite(zap);
writeln('Режим 4');
writeln;
writeln('Введите количество водителей:');
read(kol);
clrscr;
writeln('Введите данные о водителях');
writeln;
writeln(' ----------------------------------------------------------------------');
writeln(' | № | ФИО водителя | Номер авто | Марка |Дата техосмотра|');
writeln(' ----------------------------------------------------------------------');
{Ввод}
for i:=1 to kol do
begin
if i<10 then
begin
writeln(' | ',i,' | | | | |');
writeln(' ----------------------------------------------------------------------');
x:=whereX;
y:=whereY;
gotoXY(8,4+i*2);
if i=1 then
readln(avto[i].fi);
readln(avto[i].fi);
gotoXY(27,4+i*2);
readln(avto[i].num);
gotoXY(43,4+i*2);
readln(avto[i].mark);
gotoXY(56,4+i*2);
readln(avto[i].date);
end
else
begin
writeln(' | ',i,' | | | | |');
writeln(' ----------------------------------------------------------------------');
x:=whereX;
y:=whereY;
gotoXY(8,5+9*2);
readln(avto[i].fi);
gotoXY(27,5+9*2);
readln(avto[i].num);
gotoXY(43,5+9*2);
readln(avto[i].mark);
gotoXY(56,5+9*2);
readln(avto[i].date);
end;
write(zap,avto[i]);
gotoXY(x,y);
end;
close(zap);
assign(zap,'zap.txt');
reset(zap);
writeln('Введите марку, по которой необходимо выполнить сортировку');
read(vma);
{Отсев ненужных марок}
kof:=1;
ch:=0;
for i:=1 to kol do
begin
read(zap,avto[i]);
if avto[i].mark=vma then
begin
avto[kof]:=avto[i];
kof:=kof+1;
ch:=ch+1;
end;
end;
{Сортировка}
repeat
kl:=0;
for i:=1 to ch-1 do
begin
if avto[i].num>avto[i+1].num then
begin
box:=avto[i+1];
avto[i+1]:=avto[i];
avto[i]:=box;
kl:=1
end;
end;
until kl=0;
{Вывод}
clrscr;
writeln('Отсортированный список:');
writeln;
writeln(' ----------------------------------------------------------------------');
writeln(' | № | ФИО водителя | Номер авто | Марка |Дата техосмотра|');
writeln(' ----------------------------------------------------------------------');
for i:=1 to ch do
begin
if i<10 then
begin
writeln(' | ',i,' | | | | |');
writeln(' ----------------------------------------------------------------------');
x:=whereX;
y:=whereY;
gotoXY(8,4+i*2);
writeln(avto[i].fi);
gotoXY(27,4+i*2);
writeln(avto[i].num);
gotoXY(43,4+i*2);
writeln(avto[i].mark);
gotoXY(56,4+i*2);
writeln(avto[i].date);
end
else
begin
writeln(' | ',i,' | | | | |');
writeln(' ----------------------------------------------------------------------');
x:=whereX;
y:=whereY;
gotoXY(8,5+9*2);
writeln(avto[i].fi);
gotoXY(27,5+9*2);
writeln(avto[i].num);
gotoXY(43,5+9*2);
writeln(avto[i].mark);
gotoXY(56,5+9*2);
writeln(avto[i].date);
if i=11 then
begin
readln;
readln;
end;
end;
gotoXY(x,y);
end;
close(zap);
writeln;
writeln('Длявозвратавглавноe менюнажмите "ENTER"');
readln;
readln
end;
begin {Основнаяпрограмма}
repeat
clrscr;
writeln('Главноеменю');
writeln;
writeln('Для выбора необходимого режима режима введите:');
writeln;
writeln('"1" - Простейшая обработка массива');
writeln('"2" - Операции над матрицами');
writeln('"3" - Транспонирование матриц');
writeln('"4" - Обработка файлов данных');
writeln('"0" - Выход из программы');
writeln;
read(w);
case w of
1: rezh1;
2: rezh2;
3: rezh3;
4: rezh4;
end;
until w=0;
end.