close

Вход

Забыли?

вход по аккаунту

?

Пояснительная записка

код для вставкиСкачать
 Курсовой проект разработан в визуальной среде Turbo Delphi на языке программирования Object Pascal.
Среда Turbo Delphi - одна из первых систем, использующих технологию быстрой разработки приложений (Rapid Application Development - RAD) и технологию визуального конструирования (Visual Design). Технология визуального конструирования содержит готовые компоненты, из которых строится интерфейс будущей программы.
Основные особенности среды Turbo Delphi: визуальное конструирование программ, использование готовых компонентов-заготовок для будущих программ, поддержка нескольких языков программирования, возможность создания программ под разные платформы, введение множества технологий, ускоряющих и облегчающих написание программ.
Концепция объектно-ориентированного программирования подразумевает, что основой управления процессом реализации программы является передача сообщений объектам.
Задачами курсового проекта является: изучить основы работы в среде Turbo Delphi; изучить основные этапы решения задач на ЭВМ; разработать математические модели решения задач; изучить методы составления алгоритмов решения задач; проанализировать результаты работы программ на ЭВМ.
Основная цель курсового проекта- закрепление и обобщение знаний полученных при изучении дисциплины "Технология разработки программных продуктов", приобретение навыков программирования и применения их на практике для решения вычислительных задач.
В результате выполнения курсового проекта должны быть получены навыки анализа поставленной задачи, выбора наиболее оптимального алгоритма решения задачи, разработки упрощённого и удобного интерфейса, отладки и тестирования программ большого объема.
1 ОБЩАЯ ЧАСТЬ
1.1 Постановка задачи
В средe Turbo Delphi разработать программу в соответствии с вариантом, обеспечивающую выполнение следующих пунктов:
Сформировать массив A, используя формулу суммы числового ряда, рассчитанной с заданной точностью ε=0,001для x, изменяющегося в диапазоне [-1, 1]c шагом h=0,1. Результат расчета суммы числового ряда проверить, используя контрольную формулу.
Формула суммы числового ряда:
(1)
Контрольная формула:
2 〖sin〗^2 x
Сформировать случайным образом двумерный массив B, из диапазона (-50;50), соответствующего размера.
Сформировать массив С по формуле:
C=B2A (2)
Отсортировать массив С методом простого обмена.
Программа должна:
- использовать многостраничную панель;
- предусмотреть возможность ввода всех исходных данных;
- предусмотреть возможность просмотра текстового файла на форме с помощью многострочного редактора;
- иметь всплывающие подсказки;
- предусмотреть защиту от несанкционированного ввода исходных данных;
- предусмотреть вывод поясняющих сообщений в случае некорректнго ввода информации.
1.2 Математическая постановка задачи
Сформировать массив А, используя формулу суммы числового ряда следующим образом:
Первый элемент массива А равен сумме слагаемых числового ряда рассчитанной с заданной точностью ε=0,001 для х=-1; второй элемент массива А равен сумме слагаемых числового ряда рассчитанной с заданной точностью ε=0,001 для х=-1+h и т.д. Сформировать двумерный массив В с помощью датчика случайных чисел. Размерность массива nxn, где n=размерность массива А. Диапазон для заполнения равен [-50;50]. Сформированный массив В необходимо добавить в отформатированном виде в созданный ранее результирующий файл.
B[i,j]:=Ng+random(Vg-Ng+1);
Где Ng = -50, Vg = 50
Используя сформированный массив В, необходимо сформировать массив С, используя правила матричной алгебры. Массив С формируется как: произведение матрицы А на транспонированную матрицу В Сформированный массив С необходимо добавить в отформатированном виде в результирующий файл.
Возведение матрицы В во вторую степень:
〖b_ij〗^2=b_i1*b_1j+b_i2*b_2j+...+b_ip*b_pj;
I=1,2,...,n; j=1,2,...,n;
Или 〖b_ij〗^2=∑_(k=1)^p▒〖b_ik b_kj 〗
Под произведением матрицы А_1xn на матрицу B_nxn во второй степени понимают матрицу C_1xn элементы которой рассчитываются по формуле:
c_i=w_i1*a_1+w_i2*a_2+...+w_ip*a_i
Где w = b^2; I = 1,2,..., n; p = 1,2, ..., n; Сортировка массива С осуществляется методом простого обмена. Отсортированный массив С добавляется в результирующий файл.
Метод сортировки простым обменом (метод "пузырька") массива размерности n заключается в следующем: происходит попарное сравнение соседних элементов n раз. Если порядок расположения не соответствует требуемому, то эти элементы меняются местами.
РАЗРАБОТКА АЛГОРИТМА
Идентификаторы переменных, процедуры и функции
Описание всех переменных, процедур и функций с расшифровкой, и пользуемых в курсовом проекте.
A - динамический массив А вещественного типа;
В - динамический массив В целого типа;
B2 - квадратный массив B;
С - динамический массив массив С вещественного типа;
С1 - динамический, отсортированный массив С вещественного типа;
n - количество элементов массива А;
Word - Файловая переменная, ассоциируется с Word
хk, xn, h - диапазон для формирования элементов массива А;
eps - заданная точность ɛ=0,001;
i, j, к - операторы цикла; Vg - Верхняя граница диапазона формирование массива В;
Ng - Нижняя граница диапазона формирование массива В;
m - переменная для сохранения значений отсортированного массива С1;
a - переменная для сохранения значений квадратного массива В;
Xmin -Для построения графика;
Xmax -Для построения графика;
Ymin - Минимальный элемент массива С, используется для построение графика несортированного и сортированного массива С;
Ymax - Максимальный элемент массива С, используется для построения графика несортированного и сортированного массива С;
Xgmin - Минимальная граница рабочей области по оси ОХ для построения графика;
Xgmax - Максимальная граница рабочей области по оси ОХ для построения графика;
Ygmax - Максимальная граница рабочей области по оси ОY для построения графика;
Ygmin - Минимальная граница рабочей области по оси ОY для построения графика;
Xg - Координата оси ОХ, используется для построения графика;
Yg - Координата оси OY, используется для построения графика;
Vg - Верхняя граница диапазона формирование массива В;
Ng - Нижняя граница диапазона формирование массива В;
h1 - Идентификатор (дескриптор) окна;
wdApp, wdDoc, wdRng, wdTable - переменные для работы с MSWord;
Sd - переменная для SaveDialog.
Структурная схема программы
Данный программный продукт состоит из одного программного модуля, в который входят процедуры:
procedure Button1Click(Sender: TObject) - формирование массива А;
procedure Button2Click(Sender: TObject) - формирование массива В и формирование квадратного массива B(B^2) ;
procedure Button3Click(Sender: TObject) - формирование массива С;
procedure Button4Click(Sender: TObject) - формирование сортированного массива С;
procedure Button5Click(Sender: TObject) - построение графика;
procedure N3Click(Sender: TObject) - вызов справки;
procedure Edit1KeyPress(Sender: TObject; var Key: Char) - защита от несанкционированного ввода данных;
procedure Edit2KeyPress(Sender: TObject; var Key: Char) - защита от несанкционированного ввода данных;
procedure Edit3KeyPress(Sender: TObject; var Key: Char) - защита от несанкционированного ввода данных;
procedure Edit4KeyPress(Sender: TObject; var Key: Char) - защита от несанкционированного ввода данных;
procedure Edit5KeyPress(Sender: TObject; var Key: Char) - защита от несанкционированного ввода данных;
procedure Edit6KeyPress(Sender: TObject; var Key: Char) - защита от несанкционированного ввода данных;
procedure N2Click(Sender: TObject) - сохранение графика в виде изображения в формате .jpg;
procedure Image3Click(Sender: TObject) - сохранение получившегося результата в MSWord;
procedure N4Click(Sender: TObject) - закрываем форму;
На рисунке 1 представлена структурная схема первого модуля программы.
Рисунок 1 - структурная схема программы
2.3Блок-схемы расчетных процедур.
На рисунке 2 изображена блок-схема формирования массива А.
Рисунок 2
На рисунке 3 изображена блок-схема формирования массива В.
B
Рисунок 3
На рисунке 4 изображена блок-схема формирования квадрата массива В.
Рисунок 4
На рисунке 5 изображена блок-схема формирования массива С.
Рисунок 5
АНАЛИЗ РАБОТЫ ПРОГРАММЫ.
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Рассматривается программа на конкретном примере.
Пусть дана точность ε = 0,001 для х, изменяющегося в диапазоне [-0,9;0,9] с шагом h=0,1.
Массив А заполняется по формуле суммы ряда:
A[0]=-1,23 A[1]=-1,03 A[2]=-0,83 A[3]=-0,64 A[4]=-0,46 A[5]=-0,30 A[6]=-0,17 A[7]=-0,08 A[8]=-0,02 A[9]=0,00 A[10]=-0,02 A[11]=-0,08 A[12]=-0,17 A[13]=-0,30 A[14]=-0,46 A[15]=-0,64 A[16]=-0,83 A[17]=-1,03 A[18]=-1,23 Массив В представляет собой матрицу размерностью 19х19, заполненную случайным образом из диапазона [-10;10].
8 -4 -7 -3 1 2 1 -10 -1 8 -7 -7 -1 10 -2 0 4 9 5 6 1 5 -7 10 -2 -10 -3 9 -3 6 -4 -10 3 -1 -9 9 5 -7 5 -7 -3 -7 6 5 -1 -3 5 -7 -3 -1 7 -8 -3 3 2 9 -6 -4 -2 -1 -5 -4 -3 -1 -6 9 -8 3 7 3 5 -7 3 8 8 -4 -9 5 -8 5 3 4 -3 0 -8 9 0 -10 5 -8 7 0 5 -2 0 -5 5 -5 -7 -8 -3 -3 4 4 -3 -5 0 -9 5 -10 -2 5 0 -5 -1 -10 -10 -2 -2 9 3 3 9 0 5 -5 8 3 -1 2 -3 0 4 -7 -10 8 -5 9 5 -4 -7 -9 -4 -1 10 -1 10 -2 -7 -1 -7 3 -6 -5 -9 -10 -1 9 -5 3 5 6 0 4 -8 -5 0 -9 6 2 3 -1 2 5 -3 -8 -5 -6 -8 -9 -1 4 7 -2 -2 3 2 5 0 -1 -5 -9 -7 -1 9 9 6 -2 -10 -10 8 -6 -3 7 2 6 4 4 6 -5 7 7 6 -2 7 10 7 -1 7 -3 10 7 -6 3 -2 7 -1 -6 5 5 8 6 -6 9 -10 -9 -8 9 -4 10 -10 9 -4 -6 9 -6 5 -6 4 7 -5 5 -5 -10 -5 5 -4 -10 -2 -9 10 9 2 6 -8 -8 7 4 2 7 -10 3 2 -2 -2 -6 0 -6 -2 0 8 8 -6 4 -8 10 -4 6 7 2 2 1 -4 -10 7 3 -1 -4 7 -2 4 -7 -4 -6 -4 -2 1 0 -9 10 -10 -2 7 -9 -8 -5 6 -1 10 7 -10 -10 -3 -3 0 2 4 -1 8 -4 -5 10 2 -1 0 10 -9 -2 0 -4 -9 0 -10 8 6 10 -2 -1 7 -4 3 10 -7 -3 3 5 -7 2 0 3 1
Массив В^2
-37 218 -1 74 -258 -164 -198 -160 188 194 -238 -198 -4 27 90 119 -76 -178 -1 -149 -87 -343 -232 185 130 -175 56 109 -157 -106 -356 71 -347 324 18 -18 7 26 68 11 -211 128 -137 259 -41 76 -71 323 -87 -50 59 -173 -62 -101 -112 -186 185 -81 -26 5 21 29 292 -76 150 190 73 -106 50 34 -161 129 -51 -61 -284 9 51 151 139 120 -271 -157 -198 -109 -166 -197 185 1 -133 61 1 87 -83 -70 -39 -76 -79 113 -222 200 -133 -134 183 205 -116 -22 83 -65 -74 109 -180 -129 -228 -15 -208 -4 -81 14 -164 96 -30 -15 -181 167 -67 115 -286 289 -137 -75 44 -181 221 -250 349 24 159 -23 -137 185 256 -58 21 -265 -67 161 -211 157 158 89 -54 -165 -351 165 -21 1 -226 -27 65 256 -35 -21 -68 68 36 -240 86 -52 -134 -198 67 233 76 174 170 -11 -18 166 55 8 -163 6 -52 134 -119 115 204 -145 64 -150 -254 65 -126 277 -41 41 119 76 -37 -59 -90 -387 112 182 55 307 -264 -259 -8 8 -94 92 -160 -194 254 -170 -18 129 -208 69 294 75 -33 -63 -83 137 -21 -158 -83 302 172 -196 -144 -369 -35 -5 329 -258 -292 6 25 -34 32 163 198 198 -387 148 129 52 -108 55 -185 -213 160 112 -180 -122 -206 -115 -290 415 66 -140 -24 -374 415 -193 -65 -125 31 -74 11 -104 174 -193 113 -80 -133 208 -163 71 -77 205 -122 164 -70 -100 -116 79 -242 74 -161 -134 -111 23 -88 12 170 -23 202 149 229 -86 324 150 89 -41 -141 -238 7 126 -90 47 -52 172 -499 153 -226 -130 14 147 -153 54 92 -103 -103 -186 -9 -28 83 -99 141 63 237 -285 -16 -256 -185 266 201 58 -39 -5 121 -206 -46 -97 -304 -100 339 -89 101 198 -19 -79 -112 -77 184 -21 -166 Полученный массив В умножается на массив А для получения массива С. Умножение происходит по правилу умножения матриц (C=B^2A):
129,633
542,993
183,858
350,531
-57,369
628,101
317,898
-115,216
647,837
-567,666
385,183
309,282
-49,236
258,234
-169,474
-351,931
-232,249
-149,760
371,553
После сортировки по возрастанию массив С имеет следующий вид:
-567,666
-351,931
-232,249
-169,474
-149,760
-115,216
-57,369
-49,236
0,000
0,000
129,633
183,858
258,234
309,282
317,898
350,531
371,553
385,183
542,993
На рисунке 6 представлено окно программы с активной вкладкой "массив А". В левой части окна находится рабочая область, в которой выводятся элементы массивов. В правой части находятся элементы для работы с массивом А и формулы: Формула по которой рассчитываются элементы массива А.
Контрольная формула для проверки правильности заполнения массива А.
Рисунок 6 - окно программы
На рисунке 7 представлено окно программы с активной вкладкой "массив В". В верхней части окна находится рабочая область, в которой выводятся элементы массива В. В нижней части находятся рабочая область, в которой выводятся элементы квадратного массива В. В середине расположены элементы для работы с массивом В.
Рисунок 7 - окно программы
На рисунке 8 представлено окно программы с активной вкладкой "массив С". В верхней части окна находится рабочая область, в которой выводятся элементы массива С. В нижней части находятся рабочая область, в которой выводятся элементы отсортированного массива С. В середине расположены элементы для работы с массивом С.
Рисунок 8 - окно программы
На рисунке 9 представлено окно программы с активной вкладкой "График". В верхней части окна находится рабочая область, в которой чертится график массива С и сортированного массива С1.
Рисунок 9
Чтобы заполнить массив А, нужно на вкладке "массив А" ввести диапазон начального и конечного промежутка для х (Xнач, Xкон), далее ввести шаг (h-шаг), с которым изменяется х, и нажать кнопку "Рассчитать". Массив А будет заполнен и показан в рабочей области. Если не было введены диапазон или шаг будет выведено соответствующее сообщение.
Для заполнения массива В нужно на вкладке "массив В" ввести диапазон начального и конечного промежутка, из которого будут браться числа, и нажать кнопку "Сформировать массивы". Массив В будет сформирован и показан в рабочей области. Если не был задан диапазон, или начальное значение превышает конечное, или не был сформирован массив А, то выдаются соответствующие сообщения (ошибка). Квадратный массива В формируется автоматически при нажатии кнопки "Сформировать массивы" и при заполненном массиве В.
Для формирования массива С нужно на вкладке "массив С" нажать кнопку "Массив С". Для сортировки массива С нужно что бы на вкладке "Массив В" был заполнен Квадратный массив В. Далее нажать кнопку "Отсортировать массив С". Чтобы начертить график массива С и сортированного массива С1 нужно на вкладке "График" нажать кнопку "Построить график". График рисуется и выводится в рабочей области.
При формировании массива он параллельно записывается в текстовый файл. Чтобы записать уже сформированные массивы в файл MSWord надо нажать вкладку "Записать в файл" и нажать на картинку изображенную "MSWord". Далее если файл успешно сохранился выпадает уведомление о сохранении "Документ сохранён", который сохраняется в папку с проектом в папку Word. Чтобы сохранить график в виде изображения в формате .jpg. нужно нажать на вкладку "Файл" и выбрать пункт "Сохранить график". После чего он сохраняется в папку с проектом в папку файлы под именем График.jpg.
Так же можно открыть справку для информации о Массивах и Графике, для этого нужно нажать на вкладку "Справка".
Чтобы покинуть проект нужно нажать вкладку "Файл", "Выход" после чего данный проект закроется.
СПИСОК ЛИТЕРАТУРЫ
Архангельский А.Я. 100 компонентов Delphi. М.: Бином, 2002.
Фленов М. Е.Библия Delphi. СПб.:БХВ - Петербург, 2004.
Корняков В.С. Программирование документов и приложений MS Office в Delphi. М.: Форум, 2006
Архангельский А.Я. Delphi 2006. Справочное пособие. М.: Бином, 2006.
Окулов С.М. - Основы программирования : Москва - Лаборатория базовых ЭВМ 2002
Курсовое проектирование по дисциплине "Технология разработки программных продуктов". Т.Н. Грушникова, Е.В. Карташова, Е.Ю. Савина. Издательство Коломна 2005.
ПРИЛОЖЕНИЕ А - ИСХОДНЫЙ
ТЕКСТ ПРОГРАММНОГО МОДУЛЯ
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Menus, ComCtrls, TabNotBk, ExtCtrls,comobj,
jpeg;
type
TForm1 = class(TForm)
TabbedNotebook1: TTabbedNotebook;
MainMenu1: TMainMenu;
N1: TMenuItem;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
StringGrid1: TStringGrid;
Button1: TButton;
Edit4: TEdit;
StringGrid2: TStringGrid;
Edit5: TEdit;
Edit6: TEdit;
Button2: TButton;
StringGrid3: TStringGrid;
StringGrid4: TStringGrid;
Button3: TButton;
StringGrid5: TStringGrid;
Button4: TButton;
Image1: TImage;
Button5: TButton;
N3: TMenuItem;
Image2: TImage;
Image3: TImage;
Label5: TLabel;
N2: TMenuItem;
N4: TMenuItem;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Image4: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure N2Click(Sender: TObject);
procedure Image3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
A,C,C1:array of real;
B,B2:array of array of real;
n:integer;
Word: variant;
implementation
{$R *.dfm}
Function F(x,eps:real):real;
var a,sum: real;
i:integer;
begin
a:=1;
i:=0;
sum:=0;
repeat
inc(i);
a:=-a*sqr(2*x)/((2*i-1)*2*i);
sum:=sum+a;
until abs(a)<=eps ;
f:=sum;
end;
Function F1(x:real):real;
begin
F1:=2*sqr(sin(x));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
xk,xn,h,eps:real;
i:integer;
begin
try
xn:=strtofloat(Edit1.text);
xk:=strtofloat(Edit2.text);
h:=strtofloat(Edit3.text);
eps:=strtofloat(Edit4.text);
n:=round((xk-xn)/h);
n:=n+1; //inc(n)
SetLength(A,n);
stringgrid1.ColCount:=n;
Memo1.Clear;
for i := 0 to n - 1 do
begin
A[i]:= F(xn,eps);
Memo1.Lines.Add('h=' + formatfloat('0.0',xn)+' '+ 'A'+'['+inttostr(i)+']=' + Formatfloat('0.00',A[i])+' '+formatfloat('0.00',F1(xn)));
StringGrid1.Cells[i,0]:= formatfloat('0.000',A[i]);
xn:=xn+h;
end;
except
exit;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Vg,Ng,i,j,a,k:integer;
begin
randomize;
SetLength(B,n,n);
Vg:=strtoint(Edit6.Text);
Ng:=strtoint(Edit5.Text);
stringgrid2.ColCount:=n;
stringgrid2.RowCount:=n;
stringgrid3.ColCount:=n;
stringgrid3.RowCount:=n;
For i:= 0 to n-1 do
For j:=0 to n-1 do
begin
B[i,j]:=Ng+random(Vg-Ng+1);
Stringgrid2.Cells[j,i]:=floatToStr(B[i,j]);
end;
// Для нахождения В^2
SetLength(B2,n,n);
For i:= 0 to n-1 do
For j:=0 to n-1 do
B2[i,j]:=0;
For i:= 0 to n-1 do
For j:=0 to n-1 do
For k:= 0 to n-1 do
B2[i,j]:= B2[i,j]+B[i,k]*B[k,j];
For i:= 0 to n-1 do
For j:=0 to n-1 do
Stringgrid3.Cells[j,i]:=floatToStr(B2[i,j]);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i,j:integer;
begin
SetLength(C,n);
For i:= 0 to n-1 do
begin
For j:=0 to n-1 do
C[i]:=c[i]+b2[i,j]*a[j];
end;
stringgrid4.ColCount:=n;
for i := 0 to n-1 do
Stringgrid4.Cells[i,0]:=formatfloat('0.000',C[i]);
end;
procedure TForm1.Button4Click(Sender: TObject);
var i,j,k:integer;
m:real;
begin
setLength(C1,n);
for i:= 0 to n-1 do C1[i]:=C[i];
for i:=0 to n-2 do
for j:=0 to n-i do
if c1[j]>c1[j+1]
then
begin
m:=c1[j];
c1[j]:=c1[j+1];
c1[j+1]:=m;
end;
stringgrid5.ColCount:=n;
for i:=0 to n-1 do
stringgrid5.Cells[i,0]:=formatfloat('0.000',C1[i]);
end;
procedure TForm1.Button5Click(Sender: TObject);
var
x,y,Xmin,Xmax,Ymin,Ymax:real;
Xgmin,Xgmax,Ygmax,Ygmin,i,Xg,Yg:integer;
begin
Xgmin:=0;
Xgmax:= Image1.ClientWidth;
Ygmin:= Image1.ClientHeight;
Ygmax:=0;
Xmin:=0;
Xmax:= n-1;
Ymin:=C1[n-1];
Ymax:=C1[0];
Xg:=Xgmin + Trunc((Xgmax-Xgmin)*(0-Xmin)/(Xmax-Xmin));
Yg:=Ygmin + Trunc((Ygmax-Ygmin)*(C1[0]-Ymin)/(Ymax-Ymin));
Image1.Canvas.Moveto(Xg,Yg);
for i:= 1 to n-1 do begin
image1.Canvas.Pen.Color:=clred;
Xg:=Xgmin + Trunc((Xgmax-Xgmin)*(i-Xmin)/(Xmax-Xmin));
Yg:=Ygmin + Trunc((Ygmax-Ygmin)*(C1[i]-Ymin)/(Ymax-Ymin));
Image1.Canvas.Lineto(Xg,Yg);
end;
Xg:=Xgmin + Trunc((Xgmax-Xgmin)*(0-Xmin)/(Xmax-Xmin));
Yg:=Ygmin + Trunc((Ygmax-Ygmin)*(C[0]-Ymin)/(Ymax-Ymin));
Image1.Canvas.Moveto(Xg,Yg);
for i:= 1 to n-1 do begin
image1.Canvas.Pen.Color:=clgreen;
Xg:=Xgmin + Trunc((Xgmax-Xgmin)*(i-Xmin)/(Xmax-Xmin));
Yg:=Ygmin + Trunc((Ygmax-Ygmin)*(C[i]-Ymin)/(Ymax-Ymin));
Image1.Canvas.Lineto(Xg,Yg);
end;
image1.Canvas.Pen.Color:=clBlack;
xg:=0;
Yg:=Ygmin + Trunc((Ygmax-Ygmin)*(0-Ymin)/(Ymax-Ymin));
Image1.Canvas.Moveto(Xg,Yg);
xg:=Image1.ClientWidth;
Image1.Canvas.Lineto(Xg,Yg);
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [#8,'0'..'9','-',',',decimalseparator]) then key:=#0;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [#8,'0'..'9','-',',',decimalseparator]) then key:=#0;
end;
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [#8,'0'..'9','-',',',decimalseparator]) then key:=#0;
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [#8,'0'..'9','-',',',decimalseparator]) then key:=#0;
end;
procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [#8,'0'..'9','-',',',decimalseparator]) then key:=#0;
end;
procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [#8,'0'..'9','-',',',decimalseparator]) then key:=#0;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Image1.Picture.SaveTofile('F:\Kursovoy_proekt\Курсовой проект\Файлы\График.jpg');
end;
procedure TForm1.N3Click(Sender: TObject);
var
h1 : HWND; // идентификатор (дескриптор) окна
begin
h1:= FindWindow('HH Parent','Массив А');
if h1=0 then
WinExec('hh.exe Help.chm',SW_RESTORE)
else
begin
ShowWindow(h1,SW_RESTORE);
Windows.SetForegroundWindow(h1);
end;
end;
procedure TForm1.Image3Click(Sender: TObject);
var i,j:Integer;
begin
try
Word:=createoleobject('Word.Application');
word.Visible:=True;
Word.Documents.Add;
Word.activedocument.range.InsertAfter('Массив А'+#10#13+Memo1.Text+#10+'Массив В'+#10#13);
with StringGrid2 do
for i := 0 to n - 1 do begin
for j := 0 to n - 1 do begin
Word.activedocument.range.InsertAfter(Cells[j,i]+' ');
end;
Word.activedocument.range.InsertAfter(#10);
end;
Word.activedocument.range.InsertAfter('Массив В^2'+#10#13);
with StringGrid3 do
for i:= 0 to n - 1 do begin
for j:= 0 to n - 1 do begin
Word.activedocument.range.InsertAfter(Cells[j,i]+' ');
end;
Word.activedocument.range.InsertAfter(#10);
end;
Word.activedocument.range.InsertAfter('Массив C'+#10#13);
with StringGrid4 do
for i:= 0 to n - 1 do begin
Word.activedocument.range.InsertAfter(Cells[i,0]+#10);
end;
Word.activedocument.range.InsertAfter('Отсортированный Массив C'+#10#13);
with StringGrid5 do
for i:= 0 to n - 1 do begin
Word.activedocument.range.InsertAfter(Cells[i,0]+#10);
end;
word.ActiveDocument.SaveAs('F:\Kursovoy_proekt\Курсовой проект\Word\Вывод.doc');
if Word.ActiveDocument.Saved then
messagebox(handle,'Документ сохранен!','Внимание!',0);
if not Word.ActiveDocument.Saved then
messagebox(handle,'Документ не сохранен!','Внимание!',0);
except
ShowMessage('Невозможно открыть MS Word');
end;
Word.Application.Documents.Close;
Word.Quit;
Word:=UnAssigned;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
close;
end;
end.
Приложение Б - распечатка текстового файла
Массив А
h=-0,9 A[0]=-1,23 1,23
h=-0,8 A[1]=-1,03 1,03
h=-0,7 A[2]=-0,83 0,83
h=-0,6 A[3]=-0,64 0,64
h=-0,5 A[4]=-0,46 0,46
h=-0,4 A[5]=-0,30 0,30
h=-0,3 A[6]=-0,17 0,17
h=-0,2 A[7]=-0,08 0,08
h=-0,1 A[8]=-0,02 0,02
h=0,0 A[9]=0,00 0,00
h=0,1 A[10]=-0,02 0,02
h=0,2 A[11]=-0,08 0,08
h=0,3 A[12]=-0,17 0,17
h=0,4 A[13]=-0,30 0,30
h=0,5 A[14]=-0,46 0,46
h=0,6 A[15]=-0,64 0,64
h=0,7 A[16]=-0,83 0,83
h=0,8 A[17]=-1,03 1,03
h=0,9 A[18]=-1,23 1,23
Массив В
5 6 5 -10 3 4 -3 -9 -1 3 -1 5 -8 4 2 3 -2 7 1 -10 -3 3 1 2 1 2 -10 5 -5 -3 4 9 10 -1 10 8 -4 5 -5 8 4 -8 -7 -9 4 7 1 2 10 10 -7 -1 -5 -4 7 4 -9 -4 7 7 1 9 5 -1 7 -5 8 -6 -2 6 0 -8 0 -9 0 0 5 0 -5 6 -4 1 4 5 -7 7 2 -6 4 2 -4 0 -3 3 5 -4 8 6 3 1 -3 -3 -2 4 -10 -4 -9 -9 -5 -9 -8 6 -7 10 -5 7 5 10 -9 6 2 -8 7 10 0 -10 3 4 0 -9 2 9 -3 10 0 4 8 3 -4 8 2 4 10 8 -6 -3 -8 -6 -8 4 -2 -2 -6 -2 -1 -1 -8 -5 7 -2 -9 1 0 2 -7 1 -7 -5 -9 8 -1 4 -9 -7 -6 9 8 -9 7 0 -6 -6 6 7 1 8 8 8 -2 -5 -8 6 6 -8 -5 -7 -6 10 8 0 9 3 -2 -9 -5 10 5 -4 3 -10 -6 5 1 7 0 -8 9 -10 6 -10 3 2 -10 6 4 -6 -8 2 2 1 -7 6 -6 4 8 2 6 -3 10 -10 6 1 -2 -5 -7 -8 6 -3 10 -5 0 1 -2 3 -3 10 7 1 1 -9 10 5 0 -2 -8 3 -2 -1 -1 -7 7 2 -1 -1 6 6 9 9 7 3 8 9 -7 9 -4 -4 4 -2 -9 0 -5 -4 5 -9 -2 7 -8 10 -7 6 -5 -9 7 -6 5 -10 8 -4 -6 -7 9 -6 -10 -4 2 -3 -9 -2 8 6 -6 5 -4 -8 7 -2 -3 1 -6 -3 -6 0 -5 -2 8 2 2 9 4 -6 -8 -9 -2 -2 -3 3 0 -10 2 -3 -1 -3 7 -1 9 7 10 7 9 -7 4 Массив В^2
-232 41 -55 -269 54 -113 -222 -117 -35 -185 -120 316 -46 124 258 227 120 -49 -48 -197 27 -117 48 -248 -176 187 81 -179 -28 146 -262 39 48 129 -134 -297 -33 53 -184 -194 225 -76 -97 -130 -38 39 22 60 -76 254 -157 -213 59 185 149 -46 -214 84 69 -159 238 51 95 48 141 114 -47 -11 -146 179 57 -212 -192 292 -240 99 107 136 -26 68 138 126 -72 -62 224 -20 2 -122 141 89 46 11 153 -166 35 41 -123 145 141 -219 -223 303 -207 -147 -84 -2 22 -130 213 -219 17 274 96 80 -247 133 2 -75 1 65 21 -151 223 -263 -156 220 -66 285 -94 95 82 -122 -84 123 -1 200 -76 -90 139 0 23 -31 104 -58 80 -106 9 -212 77 168 247 -97 -128 99 -22 122 85 94 -229 -13 200 18 -238 123 83 26 98 -12 213 -202 -127 290 -107 -50 8 46 -55 127 52 -247 41 137 -284 -154 -263 67 -171 -418 55 115 -71 -283 83 -144 -183 -374 100 219 -216 -121 282 41 63 -334 -35 54 132 57 -155 316 -251 -173 134 256 95 -29 424 -139 59 112 -103 352 -237 -25 -130 97 -5 -50 -33 218 61 202 -137 80 93 -98 357 54 137 -252 -3 107 -331 -125 158 -24 272 -182 -122 -68 -21 92 65 -41 -83 43 98 -136 127 88 254 78 211 90 93 82 -265 83 -199 -161 8 -53 -196 252 20 -1 138 78 188 -166 137 91 -218 -110 -33 106 8 -183 53 -26 84 4 13 423 -107 279 92 221 -16 -57 100 142 -159 4 -62 279 50 -295 -17 21 -241 -4 146 163 141 245 14 -36 210 -25 -15 335 -367 -172 -139 -111 -2 78 159 -57 133 3 113 -33 70 229 -5 7 69 -196 66 64 3 -48 -58 -109 -98 -36 148 76 38 178 363 -104 184 56 227 183 -288 138 -14 Массив C
212,109
650,358
489,010
-201,707
-450,999
-377,494
250,084
-485,079
87,324
118,613
653,518
-146,770
-563,357
-171,574
756,215
-87,162
0,268
288,514
31,736
Отсортированный Массив C
-563,357
-485,079
-450,999
-377,494
-201,707
-171,574
-146,770
-87,162
0,000
0,000
0,268
31,736
87,324
118,613
212,109
250,084
288,514
489,010
650,358
Приложение В - диск с программой
Документ
Категория
Рефераты
Просмотров
51
Размер файла
339 Кб
Теги
пояснительная, записка
1/--страниц
Пожаловаться на содержимое документа