Курсовая работа: Обработка матриц
Просмотр и изменение
значений
Помимо простого просмотра
различных значений во время работы программы иногда требуется какое-нибудь
значение изменить. Пусть, например, в процессе отладки по тагам обнаружена
ошибка, но выполнение программы желательно продолжить. Чтобы обойти ошибку,
неверное значение можно исправить вручную. Это делается в окне быстрого
просмотра значений, которое открывается командой Run > Evaluate/ Modufy (Запуск > Определить/Изменить)
или комбинацией клавиш CTRL+F7 (рис. 20).
В поле Expression
(Выражение) вводится вычисляемое выражение. По щелчку на кнопке Evaluate
(Вычислить) в поле Result (Результат) появится его значение. Это поле (панель)
сделано таким большим, потому что в нем отображаются не только отдельные
значения, но и массивы, и записи. В поле New value (Новое значение ) выводится
измененное значение. С помощью кнопки Watch (Следить) выражение, указанное в
поле Expression (Выражение) , можно добавить в окно слежения.
ВЫВОДЫ
В процессе выполнения
курсовой работы были выполнено:
- на первом этапе работы было проанализировано задание и
определен перечень вопросов, которые были решены в данной работе, определение
того, что, собственно, будет выполнять разрабатываемая программа, не
рассматривая конкретную реализацию этих функций;
- разработка алгоритма разрабатываемой программы;
- разработка программы и пользовательского интерфейса;
- произведена отладка программы.
ПЕРЕЧЕНЬ
ССЫЛОК
1.
Абрамов В.Г.,
Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988.
2.
Довгаль С.И.,
Литвинов Б.Ю., Сбитнев А..И. Персональные ЭВМ : Турбо Паскаль V7.0, объектное программирование,
локальные сети. – Киев: Информсиситема сервис, 1993.
3.
Епанешников А.М.,
Епанешникова В.А. Программирование в среде Turbo Pascal 7.0.-М.: Диалог –МИФИ,1999.
4.
Зуев Е.А.
Программирование на языке Turbo Pascal 6.0,7.0. –
М.: Радио и связь, Веста,1993.
5.
Кандзюба С.П.,
Громов В.Н. Delphi 7.Базы данных и приложения. Лекции и
упражнения. – К.: Издательство "ДиаСофт", 2001.
6.
Климова Л.М. Pascal 7.0. Практическое программирование.
Решение типовых задач.
–М.:КУДИУ ОБРАЗ, 2000.
7.
Марченко А. И., Марченко
Л.А.. Программирование в среде Turbo Pascal 7.0.-К.:
Век+,1999.
8.
Фаронов В.В. Turbo Pascal 7.0. Начальный курс. - М.: Нолидж, 2000.
9.
Методические указания к выполнению
курсовой работы по дисциплине "Программирование" /Сост.: Н.С.
Семенова, С.А. Сафонова – Северодонецк: Изд-во СТИ ВНУ, 2006. - 37с.
ПРИЛОЖЕНИЯ
Приложение
А
Схема
алгоритма программы

Приложение
А (продолжение)

Приложение
А (продолжение)

Приложение
Б
Листинг
программы
unit Unit1;
interface
uses
Windows, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
gbRazmer: TGroupBox;
lbN: TLabel;
lbM: TLabel;
edN: TEdit;
edM: TEdit;
buRazmer: TButton;
gbMatrix1: TGroupBox;
sgMatrix1: TStringGrid;
buRandom: TButton;
gbMatr2: TGroupBox;
sgMatrix2: TStringGrid;
buPerest: TButton;
gbOsob: TGroupBox;
buOsob: TButton;
lbOsob1: TLabel;
lbOsob2: TLabel;
buZapoln: TButton;
sgMatrix3: TStringGrid;
procedure
FormCreate(Sender: TObject);
procedure
buRazmerClick(Sender: TObject);
procedure
buRandomClick(Sender: TObject);
procedure buPerestClick(Sender:
TObject);
procedure
buOsobClick(Sender: TObject);
procedure
buZapolnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
n,m : integer;
matr1, matr2, matr3: array
[1..20, 1..20] of integer;
implementation
{$R *.dfm}
procedure
TForm1.FormCreate(Sender: TObject);
begin
Randomize; // включить генератор
случайных чисел
end;
procedure
TForm1.buRazmerClick(Sender: TObject);
var i: integer;
begin
// установить размер матрицы
n:= StrToInt(edN.Text);
m:= StrToInt(edM.Text);
// визуальное отображение
sgMatrix1.RowCount:= n+1;
sgMatrix1.ColCount:= m+1;
for i:= 1 to n do
sgMatrix1.Cells[0, i]:=
IntToStr(i);
for i:= 1 to m do
sgMatrix1.Cells[i, 0]:=
IntToStr(i);
sgMatrix2.RowCount:= n+1;
sgMatrix2.ColCount:= m+1;
for i:= 1 to n do
sgMatrix2.Cells[0, i]:=
IntToStr(i);
for i:= 1 to m do
sgMatrix2.Cells[i, 0]:=
IntToStr(i);
sgMatrix3.RowCount:= n+1;
sgMatrix3.ColCount:= m+1;
for i:= 1 to n do
sgMatrix3.Cells[0, i]:=
IntToStr(i);
for i:= 1 to m do
sgMatrix3.Cells[i, 0]:=
IntToStr(i);
end;
procedure
TForm1.buRandomClick(Sender: TObject);
var i, j: integer;
begin
for i:= 1 to n do
for j:= 1 to m do
begin
matr1[i, j]:= random(11);
sgMatrix1.Cells[j, i]:=
IntToStr(matr1[i, j]);
end;
end;
procedure
TForm1.buZapolnClick(Sender: TObject);
var i, j: integer;
begin
for i:= 1 to n do
for j:= 1 to m do
begin
matr1[i, j]:=
StrToInt(sgMatrix1.Cells[j, i]);
end;
end;
procedure
TForm1.buPerestClick(Sender: TObject);
var i, j, k: integer;
begin
// формирование переставленной
матрицы
for j:= 1 to (m div 2) do
for i:= 1 to n do
begin
matr2[i, j]:= matr1[i,
m-j+1];
matr2[i, m-j+1]:= matr1[i,
j];
end;
// проверка если стобцов нечетное
число, то средний столбец остается без изменений
if (m mod 2)<>0 then
for i:= 1 to n do
matr2[i, m div 2+1]:=
matr1[i, m div 2+1];
// отображение переставленной матрицы
for i:= 1 to n do
for j:= 1 to m do
begin
sgMatrix2.Cells[j, i]:=
IntToStr(matr2[i, j]);
end;
end;
procedure
TForm1.buOsobClick(Sender: TObject);
var
i, j, l, osob1, osob2, k:
integer;
fLev, fPrav: boolean;
begin
// подсчет особых в 1 матрице
osob1:= 0;
for i:= 1 to n do
for j:= 2 to m-1 do
begin
k:= matr1[i, j];
// сравнение слева от текущего
элемента (если он не первый)
begin
fLev:= true;
for l:= 1 to j-1 do
if matr1[i, l]>=k then
fLev:= false;
end;
// сравнение справа от текущего
элемента (если он не последний)
fPrav:= true;
for l:= j+1 to m do
if matr1[i, l]<=k then
fPrav:= false;
if fLev and fPrav then
osob1:= osob1+1;
end;
lbOsob1.Caption:= 'Число "особых" элементов в матрице1 = '+ IntToStr(osob1);
// подсчет особых вo 2 матрице
osob2:= 0;
for i:= 1 to n do
for j:= 2 to m-1 do
begin
k:= matr2[i, j];
// сравнение слева от текущего
элемента (если он не первый)
begin
fLev:= true;
for l:= 1 to j-1 do
if matr2[i, l]>=k then
fLev:= false;
end;
// сравнение справа от текущего
элемента (если он не последний)
fPrav:= true;
for l:= j+1 to m do
if matr2[i, l]<=k then
fPrav:= false;
if fLev and fPrav then
osob2:= osob2+1;
end;
lbOsob2.Caption:= 'Число "особых" элементов в матрице2 = '+ IntToStr(osob2);
// формирование отсортированной
матрицы
if osob1>= osob1 then
matr3:= matr1
else
matr3:= matr2;
for i:= 1 to n do
for j:= m downto 2 do
for l:= 1 to m-1 do
if matr3[i, l] < matr3[i,
l+1] then
begin
k:=matr3[i, l] ;
matr3[i, l]:=matr3[i,
l+1];
matr3[i, l+1]:=k;
end;
// отображение переставленной матрицы
for i:= 1 to n do
for j:= 1 to m do
begin
sgMatrix3.Cells[j, i]:=
IntToStr(matr3[i, j]);
end;
end;
end.
|