Учебная работа. Реферат: Програмирование на языке Паскаль
Содержание
Введение______________________________________________________________3
1 Задание на курсовую работу ________________________________________3
2 Анализ задания ___________________________________________________3
3 Разработка структур данных ________________________________________4
4 Разработка алгоритмов_____________________________________________5
5 текст программы__________________________________________________9
6 Тестирование программы___________________________________________20
7 Управление юзера __________________________________________22
Заключение____________________________________________________________26
Перечень использованных источников_______________________________________26
Введение
Система программирования Турбо Паскаль представляет собой единство 2-ух в известной степени самостоятельных начал: компилятора с языка программирования Паскаль и некой инструментальной программной оболочки, содействующей увеличению эффективности сотворения программ.
Процедуры и функции представляют собой принципиальный инструмент Турбо Паскаля, позволяющий писать отлично структурированные программки. В структурированных программках обычно просто выслеживается главный метод, их несложно осознать хоть какому читателю, они проще в отладке и наименее чувствительны к ошибкам программирования. Все эти характеристики являются следствием принципиальной индивидуальности процедур (функций), любая из которых представляет собой почти во всем самостоятельный фрагмент программки, связанный с главный программкой только при помощи нескольких характеристик.
Модули представляют собой красивый инструмент для разработки библиотек прикладных программ и массивное средство модульного программирования. В Турбо Паскале имеется 8 обычных модулей, в каких содержится огромное число различных типов, констант, процедур и функций.
1 Задание на курсовую работу
В прямоугольной матрице выявить все подматрицы, по периметру которых размещены элементы, из которых можно образовать геометрическую прогрессию.
2 анализ задания
Задачей курсового проектирования является разработка программного продукта, который дозволил бы выявить в прямоугольной матрице все подматрицы, по периметру которых размещены элементы, из которых можно образовать геометрическую прогрессию.
должен быть разработан пользовательский интерфейс, который бы обеспечил наиболее комфортную и приятную работу с программкой. Данная программка обязана делать последующие деяния:
— ввод данных с клавиатуры и из файла;
— обработку данных в согласовании с заданием;
— вывод результата на экран и в файл;
— интерфейс юзера в текстовом режиме, содержащий меню (с подменю) и окна;
— обеспечивать разные методы ввода и вывода данных;
— применять способности модуля CRT;
— применять структуры данных;
— программный код в виде процедур и функций;
— применять программирование клавиатуры;
— применять манипулятор «мышь»;
— применять динамические структуры данных;
— свой модуль.
3 Разработка структур данных
Главные переменные:
Mxx – начальная целочисленная матрица (максимум 10х10);
Per – целочисленные элементы периметра;
N, M – количество строк и столбцов матрицы;
L – количество частей по периметру подматрицы;
mf – флаг ввода начальной матрицы – true, false– матрица не введена;
fileresu, filework – текстовые файлы с начальной матрицей и с результатом соответственно;
fil – метод вывода результата true – в файл, false – на дисплее в окне;
f – метод получения результата false– все подматрицы либо true– по условию.
Обычные модули: crt, app, objects, menus, drivers, views, dialogs, msgbox, memory, dos, stddlg, editors и свой модуль: mod_matr.
4
Разработка алгоритмов
Опишем главные процедуры и функции программки.
Процедура GetRandomMatrix.
Процедура автоматического ввода матрицы со значениями.
Схема метода данной процедуры представлена на рисунке 1.
Набросок 1 – Схема метода процедуры GetRandomMatrix.
3 блок – вводим количество строк n, количество столбцов m и наибольшее predзначение элемента матрицы, 4-6 блоки – вводим случайные элемента матрица, не превышая pred, 7 блок – устанавливаем флаг в true, т. е. матрица введена, 8 блок – выводим матрицу в окне программки.
Процедура InputMatrix.
Процедура ввода матрицы со значениями вручную.
Схема метода данной процедуры представлена на рисунке 2.
Набросок 2 – Схема метода процедуры InputMatrix.
3 блок – вводим количество строк n, количество столбцов m, 4-6 блоки – вводим элементы матрицы, 7 блок – устанавливаем флаг в true, т. е. матрица введена, 8 блок – выводим матрицу в окне программки.
Процедура Sort.
Процедура сортировки значений периметра подматрицы по возрастанию.
Схема метода данной процедуры представлена на рисунке 3.
Набросок 3 – Схема метода процедуры Sort.
2, 3 блок – перебираем элементы периметра подматрицы, 4 блок – сравниваем текущее значения местами.
Процедура GetPerimetr.
Процедура определения частей подматрицы по периметру.
Схема метода данной процедуры представлена на рисунке 4.
Набросок 4 – Схема метода процедуры GetPerimetr.
2, 3 блок – обнуляем значения частей периметра, 4 блок – количество частей в перимерте = 1, 5, 6 блоки – перебираем элементы столбца периметра и заносим в массив per, 7, 8 блоки – перебираем элементы строчки периметра и заносим в массив per, 9 блок – заносим в переменную l количество частей в периметре подматрицы.
Функция GeomProg.
Функция определения геометрической прогрессии из частей периметра подматрицы.
Схема метода данной функции представлена на рисунке 5.
Набросок 5 – Схема метода процедуры GeomProg.
2 блок – вызов процедуры сортировки, 3 блок – флаг образования геометрической прогрессии, 4 блок – 2-ое
5
текст программки
programMTRKW; {
}
uses
mod_matr;
begin
Randomize;
matrix_perim.init;
matrix_perim.run;
matrix_perim.done;
end.
Unit mod_matr; {
}
interface
uses
crt,app,objects,menus,drivers,views,dialogs,msgbox,memory,dos,stddlg,editors;
const
cmwork=203; cmvvod=206; cmvval=207; cmvvse=204; cmvusl=205; cmvhel=257; cmisfl=208;
cmfilv=209; cmfilu=210;
wincoml:Tcommandset=[cmvvse,cmvusl,cmwork,cmfilv,cmfilu]; {
}
wincom2:tcommandset=[cmvvod,cmvval,cmisfl]; {
}
type
pinputwindow=^tinputwindow;
tinputwindow=object(tdialog)
procedure handleevent(var event:tevent);virtual;
end;
pwind=^twin;
twin=object(twindow)
constructor init(bounds:trect);
end;
pinterior=^tinterior;
tinterior=object(tscroller)
constructor init(var bounds:trect; hs,vs:pscrollbar);
procedure handleevent(var event:tevent);virtual;
end;
tmatrix=object(tapplication)
procedure initstatusline; virtual;
procedure initmenubar; virtual;
procedure handleevent(var event:tevent); virtual;
procedure inputmatrix;
procedure getrandommatrix;
procedure main(f:boolean);
procedure PrintMatrix ;
procedure fileinput;
procedure fileoutputv(f:boolean);
end;
tdata=record
col:string[4];
row:string[4];
max:string[4];
end;
var
matrix_perim:Tmatrix;
x,y:integer;
const
MAX = 10; {
}
type
Matrix = array [1..MAX,1..MAX] of integer;
Perim = array [1..MAX*4] of integer;
var
wind:pwind;
Mxx:Matrix; {
}
N,M:integer; {
}
l:integer; {
}
per:Perim; {
}
mf:boolean; {
}
data:tdata;
matr_v:array[1..10] of string;
fileresu,filework:text; {
}
fil:boolean; {
}
implementation
procedure readmas;
var
i,j:integer;
s:string;
sr:string[3];
begin
s:=»;
for i:=1 to n do
begin
for j:=1 to m do
begin
str(mxx[i,j],sr);
s:=s+sr+’ ‘;
end;
matr_v[i]:=s;
s:=»;
end;
end;
{_______________________________________________}
constructor tinterior.init;{
}
begin
tscroller.init(bounds,hs,vs);
growmode:=gfgrowhix+gfgrowhiy;
setlimit(8000,7000);
end;
{_______________________________________________}
procedure tinterior.handleevent(var event:tevent); {
}
var
r:tpoint;
location:word;
begin
location:=0;
tscroller.handleevent(event);
case event.what of
evmousedown:
begin
makelocal(mousewhere,r);
location:=delta.y+r.y;
scrolldraw
end;
evkeydown:
case event.keycode of
kbgrayminus:if location>delta.y then
begin
dec(location); scrolldraw
end;
kbgrayplus:if location<delta.y+pred(size.y) then
begin
inc(location);
scrolldraw
end;
end;
end;
end;
{_______________________________________________}
constructor twin.init(bounds:trect); {
}
var
hs,vs:pscrollbar;
interior:pinterior;
begin
twindow.init(bounds,»,0);
getcliprect(bounds);
bounds.grow(-1,-1);
vs:=standardscrollbar(sbvertical+sbhandlekeyboard); hs:=standardscrollbar(sbhorizontal+sbhandlekeyboard);
interior:=new(pinterior,init(bounds,hs,vs));
insert(interior);
readmas;
end;
{_______________________________________________}
procedure tinputwindow.handleevent;
begin
inherited handleevent(event);
if event.what=evcommand then
endmodal(event.command);
end;
{_______________________________________________}
procedure tmatrix.PrintMatrix; {
}
var
i,j:integer; {
}
sr:string;
r:trect;
begin
r.assign(0,0,80,23);
wind:=new(pwind,init(r));
desktop^.insert(wind);
with wind^ do
begin
r.assign(2,1,70,3);
insert(new(pstatictext,init(r,’Рабочая матрица:’)));
for i:=1 to n do
begin
for j:=1 to m do
begin
str(mxx[i,j],sr);
r.assign(1+j*4,1+i,4+j*4,3+i);
insert(new(pstatictext,init(r,sr))); {
}
end;
end;
r.assign(2,i+2,70,4+i); insert(new(pstatictext,init(r,’_____________________________________________’)));
end;
end;
{_______________________________________________}
procedure tmatrix.initmenubar; {
}
var
r:trect;
begin
getextent(r);
r.b.y:=succ(r.a.y);
menubar:=new(pmenubar,init(r,newmenu(
newsubmenu(‘Ввод’,hcnocontext,
newmenu(
newitem(‘Ручной’,’F3′, kbf3,cmvvod,hcnocontext,
newitem(‘Автоматический’,’F4′,kbf4,cmvval,hcnocontext,
newitem(‘Из файла’,’F7′,kbf7,cmisfl,hcnocontext,
newline(
newitem(‘Выход’,’Alt+X’,kbaltx,cmquit,hcnocontext,nil)))))),
newsubmenu(‘Итог’,hcnocontext,
newmenu(
newitem(‘Все подматрицы’,’F5′, kbf5,cmvvse,hcnocontext,
newitem(‘По условию’,’F6′,kbf6,cmvusl,hcnocontext,
newline(
newitem(‘Записать все’,’F7′, kbf7,cmfilv,hcnocontext,
newitem(‘Записать по условию’,’F8′,kbf8,cmfilu,hcnocontext,
nil)))))),
newitem(‘О программке’,’F1′, kbf1,cmvhel,hcnocontext,nil))) )))
end;
{_______________________________________________}
procedure tmatrix.initstatusline; {
}
var
r:trect;
begin
getextent(r);
r.a.y:=pred(r.b.y);
statusline:=new(pstatusline,init(r,newstatusdef(0,$ffff,newstatuskey(‘Alt+X-Выход’,kbAltX, cmQuit,nil),nil)));
disablecommands(wincoml);
enablecommands(wincom2)
end;
{_______________________________________________}
procedure tmatrix.GetRandomMatrix; {
}
var
i,j:integer;{
}
a,pred,s_i,s_j,s_pred:integer;
r:trect; col,row,max: PInputLine;
inputwindow,inputw:pinputwindow;
begin
r.assign(15,5,65,16);
inputwindow:=new(pinputwindow, Init(r, ‘Автоматический ввод’));
withinputwindow^ do
begin{
}
r.Assign(37,2,45,3);
col:=New(PInputLine, Init(r,4));
Insert(col); r.Assign(2,2 , 35,3);
Insert(New(PLabel, Init(r, ‘количество строк матрицы’, col)));
r.Assign(37,4,45,5);
row:=New(PInputLine, Init(r,4));
Insert(row); r.Assign(2,4,35,5);
Insert(New(PLabel, Init(r, ‘количество столбцов матрицы’, row)));
r.Assign(37,6,45,7);
max:=New(PInputLine, Init(r,4)) ;
Insert(max); r.Assign(2,6,35,7);
Insert(New(PLabel, Init(r, ‘Наибольшее
r.Assign(19,8,32,10);
Insert(New(PButton, Init(r, ‘OK’, cmOk, bfdefault)));
end;
if desktop^.execview(inputwindow)=cmok then
begin{
}
inputwindow^.getdata(data);
val(data.col,n,s_i);
val( data.row,m,s_j) ;
val(data.max,pred,s_pred) ;
for i:=1 to N do
for j:=1 to M do
begin
a:=random(pred)+1;
Mxx[i,j]:=a;
end;
mf:=true; {
}
dispose(inputwindow,done);
enablecommands(wincoml);
tmatrix.printmatrix; {в
}
end;
end;
{_______________________________________________}
procedure tmatrix.InputMatrix; {
}
var
i,j,s_i,s_j:integer; {
}
a:integer;
r:trect;
col,row,c: PInputLine;
inputwindow,inputw:pinputwindow;
s,t:string;
begin
r.assign(15,5,65,16);
inputwindow:=new(pinputwindow, Init(r, ‘Ручной ввод’));
with inputwindow^ do
begin{
}
r.Assign(37,2,45,3);
col:=New(PInputLine, Init(r,4));
Insert(col);
r.Assign(2,2 , 35,3);
Insert(New(PLabel, Init(r, ‘количество строк матрицы’, col)));
r.Assign(37,4,45,5);
row:=New(PInputLine, Init(r,4));
Insert(row);
r.Assign(2,4,35,5);
Insert(New(PLabel, Init(r, ‘количество столбцов матрицы’, row)));
r.Assign(19,8,32,10);
Insert(New(PButton, Init(r, ‘OK’, cmOk, bfdefault)));
end;
if desktop^.execview(inputwindow)=cmok then
begin{
}
inputwindow^.getdata(data);
val(data.col,n,s_i);
val( data.row,m,s_j);
dispose(inputwindow,done);
for i:=1 to N do
for j:=1 to M do
begin
str(i,t);
str(j,s);
r.assign(15,5,65,16);
inputwindow:=new(pinputwindow, Init(r, ‘Ввод элемента матрицы’));
with inputwindow^ do
begin
r.Assign(2,4,35,5);
Insert(New(PLabel, Init(r, ‘Элемент матрицы’+'[‘+t+’,’+s+’]’, c)));
r.Assign(37,4,45,5);
Insert(New(PInputLine, Init(r,4)));
r.Assign(19,8,32,10);
Insert(New(PButton, Init(r, ‘OK’, cmOk, bfdefault)));
end;
if desktop^.execview(inputwindow)=cmok then
begin{
}
inputwindow^.getdata(data);
val(data.col,a,s_i);
Mxx[i,j]:=a;
dispose(inputwindow,done);
end;
end;
mf:=true; {
}
enablecommands(wincoml);
tmatrix.printmatrix; {в
}
end;
end;
{_______________________________________________}
procedure tmatrix.fileinput; {
}
var
pf:pfiledialog;
s:pathstr;
x:char;
i,j:integer;{
}
begin
new(pf,init(‘*.txt’,’Изберите подходящий файл:’,’Название файла’,fdopenbutton,0));
if desktop^.execview(pf)=stddlg.cmfileopen then
begin{
}
pf^.getfilename(s);
assign(filework,s);
reset(filework); {
}
enablecommands(wincoml);
dispose(pf,done);
i:=1;
j:=1;
while not eof(filework ) do
begin
while not eoln(filework) do
begin
read(filework,mxx[i,j]); {
}
read(filework,x);
j:=j+1;
n:=i;
m:=j-1;
end;
j:=1;
i:=i+1;
readln(filework);
end;
close(filework);{
}
tmatrix.printmatrix; {
}
end;
end;
{_______________________________________________}
procedureSort; {
}
var
i,j:integer; {
}
p:integer; {
}
begin
for i:=2 to l do
for j:=l downto i do
if per[j-1]>per[j] then
begin{
}
p:=per[j-1];
per[j-1]:=per[j];
per[j]:=p;
end;
end;
{_______________________________________________}
procedure GetPerimetr(n_1,m_1,n_2,m_2:integer); {
}
var
i:integer;{
}
k:integer;
begin{
}
for i:=1 to 2*N+2*M do
per[i]:=0;
k:=1;
fori:=m_1 tom_2 do {
}
begin
per[k]:=Mxx[n_1,i];
per[k+1]:=Mxx[n_2,i];
inc(k,2)
end;
fori:=(n_1+1) to (n_2-1) do {
}
begin
per[k]:=Mxx[i,m_1];
per[k+1]:=Mxx[i,m_2];
inc(k,2)
end;
dec(k,2);
l:=k;
inc(l);
end;
{_______________________________________________}
procedure PrintSubMatrix(n_1,m_1,n_2,m_2:integer); {
}
var
i,j,k,l:integer;
r:trect;
s,sr:string;
begin
with wind^ do
begin
r.assign(2,n+4,70,n+20);
insert(new(pstatictext,init(r,’ ‘)));
end;
for i:=n_1 to n_2 do
begin
for j:=m_1 to m_2 do
begin
str(mxx[i,j],sr);
with wind^ do
begin
r.assign(1+j*4,1+i+n+6,4+j*4,n+3+i+7);
insert(new(pstatictext,init(r,sr)));
end;
end;
end;
readkey;
end;
{_______________________________________________}
procedure PrintSubMatrixfile(n_1,m_1,n_2,m_2:integer); {
}
var
i,j,k,l:integer;
begin
for i:=n_1 to n_2 do
begin
for j:=m_1 to m_2 do
write(fileresu,mxx[i,j]:3,’ ‘);
writeln(fileresu);
end;
writeln(fileresu);
writeln(fileresu);
end;
{_______________________________________________}
functionGeomProg:boolean; {
}
var
i:integer;
dv:real;
begin
Sort; {
}
GeomProg:=true;
dv:=per[2]/per[1];
for i:= 2 to l-1 do
if per[i+1]/per[i]<>dv then
begin
GeomProg:=false;
break;
end;
end;
{_______________________________________________}
procedure tmatrix.Main(f:boolean); {
}
var
Sn,Sm,Snn,Smm:integer; {
}
begin
Sn:=2;
Sm:=2;
Snn:=1;
Smm:=1;
while (Sn<>N) or (Sm<>M) do {
}
begin
GetPerimetr(Snn,Smm,(Snn+Sn)-1,(Smm+Sm)-1); {
}
if f then {
}
begin
ifGeomProgthen{
}
if fil then {
}
PrintSubMatrixfile(Snn,Smm,(Snn+Sn)-1,(Smm+Sm)-1)
else {
}
PrintSubMatrix(Snn,Smm,(Snn+Sn)-1,(Smm+Sm)-1);
end
else {
}
if fil then {
}
PrintSubMatrixfile(Snn,Smm,(Snn+Sn)-1,(Smm+Sm)-1)
else{
}
PrintSubMatrix(Snn,Smm,(Snn+Sn)-1,(Smm+Sm)-1);
if (Smm+Sm)<=M then
inc(Smm)
else
begin
if (Snn+Sn)<=N then
begin
inc(Snn);
Smm:=1;
end
else
begin
if Sm = M then
begin
Sm:=2;
inc(Sn);
snn:=1;
smm:=1;
end
else
begin
snn:=1;
smm:=1;
inc(sm)
end;
end;
end;
end;
GetPerimetr(1,1,N,M); {
}
if f then {
}
begin
ifGeomProgthen{
}
if fil then {
}
PrintSubMatrixfile(1,1,n,m)
else {
}
PrintSubMatrix(1,1,N,M);
end
else {
}
if fil then {
}
PrintSubMatrixfile(1,1,n,m)
Else{
}
begin
PrintSubMatrix(1,1,N,M);
readkey;
end;
end;
{_______________________________________________}
procedure tmatrix.fileoutputv(f:boolean); {
}
var
pf:pfiledialog;
s:pathstr;
x:char;
i,j:integer;
begin
new(pf,init(‘*.txt’,’Изберите подходящий файл:’,’Название файла’,fdopenbutton,0));
if desktop^.execview(pf)=stddlg.cmfileopen then
begin
pf^.getfilename(s);
assign(fileresu,s);
rewrite(fileresu); {
}
fil:=true;
if f then {
}
tmatrix.main(true)
else{
}
tmatrix.main(false);
dispose(pf,done);
close (fileresu);{
}
end;
fil:=false;
end;
{_______________________________________________}
procedure tmatrix.handleevent(var event:tevent);
var
r:trect;
i:integer;
begin
if event.what=evcommand then
case event.command of
cmisfl:tmatrix.fileinput;
cmfilu:tmatrix.fileoutputv(true);
cmfilv: tmatrix.fileoutputv(false);
cmvvod:tmatrix.inputmatrix;
cmvval:tmatrix.getrandommatrix;
cmvhel:messagebox(#3’Вывод подматриц,’#13+#3’периметр которых -‘#13+#3’геометрическая прогрессия’#13+ #3’Алексей 2010’,nil,mfinformation or mfokbutton);
cmvvse:
begin
with wind^ do
begin
r.assign(2,n+3,70,n+5);
insert(new(pstatictext,init(r,’Все подматрицы:’)));
end;
tmatrix.main(false);
end;
cmvusl:
begin
with wind^ do
begin
r.assign(2,n+3,70,n+5 );
insert(new(pstatictext,init(r,’Подматрицы, у каких периметр — геометрическая прогрессия: ‘)));
end;
tmatrix.main(true);
end;
cmQuit: if messagebox(#3’Окончить работу?’,nil,mfconfirmation or mfokcancel)=cmcancel then clearevent(event);
else
exit
end;
inherited handleevent(event);
end;
{_______________________________________________}
end.
6 Тестирование программки
Объектом испытаний является разработанная программка. Целью испытаний является проверка соответствия программного продукта поставленным требованиям.
Для проведения испытаний данные вводились с клавиатуры. Размерность тестируемой матрицы 3 – строчки, 4 – столбца. Начальная матрица (набросок 6):
Набросок 6 – Начальная рабочая матрица
На рисунке 7 представлен итог работы программки по условию (набросок 2).
Набросок 7 – Итог работы программки в текстовом виде
Также, проводилось тестирование с разными примерами, которые тут не приведены, но которые также проявили верный итог.
Таковым образом, тестирование прошло удачно.
7 Управление юзера
Пуск программки осуществляется нажатием Enter на имени файла: A: matr.exe.
Опосля пуска программки покажется пользовательское меню, которое показано на рисунке 8.
Набросок 8 – Окно программки
Это меню содержит:
1 Ввод: «Ручной», «Автоматический», «Из файла» и «Выход» (набросок 9).
Набросок 9
2 Итог: «Все подматрицы», «По условию», «Записать все» и «Записать по условию» (набросок 10).
Набросок 10
3 О программке (набросок 11).
Набросок 11
Перемещение по кнопочкам осуществляется кнопками клавиатуры, а конкретно стрелками ввысь , вниз ¯, на Право ®, на лево ¬, или мышкой.
Ввод данных можно производить вводом вручную, автоматом и из файла.
При нажатии клавиши Enter по кнопочке с надписью «Ручной», покажется окно (набросок 12):
Набросок 12 – Ручной ввод
нужно будет ввести количество строк и столбцов матрицы. Потом жмем кнопку «ОК», возникает окно (набросок 13) и вводим элементы матрицы.
Набросок 13 – Ввод элемента матрицы
По окончанию ввода частей матрицы итог покажется в окне (набросок 14).
Набросок 14 – Рабочая матрица
При нажатии клавиши Enter по кнопочке с надписью «Автоматический», покажется окно (набросок 15):
Набросок 15 – Автоматический ввод
нужно будет ввести количество строк и столбцов матрицы, также наибольшее
При нажатии клавиши Enter по кнопочке с надписью «Из файла», покажется окно (набросок 16):
Набросок 16 – Из файла
нужно будет избрать текстовый файл с матрицей. Потом жмем кнопку «Open» и итог покажется в окне (набросок 14).
Опосля ввода данных можно приступать к обработке.
При нажатии клавиши Enter по кнопочке с надписью «Все подматрицы», будут появляться все подматрицы рабочей матрицы в окне, нажимая всякую клавишу клавиатуры (набросок 17).
Набросок 17 – Все подматрицы
При нажатии клавиши Enter по кнопочке с надписью «По условию», будут появляться все подматрицы, по периметру которых размещены элементы, из которых можно образовать геометрическую прогрессию, нажимая всякую клавишу клавиатуры (набросок 18).
Набросок 18 –Геометрическая прогрессия
При нажатии клавиши Enter по кнопочке с надписью «Записать все», покажется окно (набросок 19), где нужно ввести имя файла и пространство его сохранения на диске. В итоге все подматрицы запишутся в файл.
Набросок 19 – Запись в файл
При нажатии клавиши Enter по кнопочке с надписью «Записать по условию», покажется окно (набросок 19), где нужно ввести имя файла и пространство его сохранения на диске. В итоге все подматрицы по условию запишутся в файл.
При нажатии клавиши Enter по кнопочке с надписью «Выход», вы выйдите из программки.
Заключение
В итоге выполнения курсовой работы был разработан программный продукт, который дозволит выявить в прямоугольной матрице все подматрицы, по периметру которых размещены элементы, из которых можно образовать геометрическую прогрессию.
В процессе выполнения работы создано управление юзера и составлена объяснительная записка. Объяснительная записка оформлена в согласовании с работающим эталоном академии СТП.101.-2002.
Разработанный программный продукт отвечает требованиям задания, что подтверждается плодами тестирования.
программка работает в хоть какой операционной системе Windows и не приводит к зависанию компа и работает без сбоев.
Перечень использованных источников
1 Фаронов В.В. Турбо Паскаль. Исходный курс. Учебное пособие – М.: “Нолидж”, 2000.
]]>