Построение графиков функций и диаграмм
Пример 1.
Построение графика функции у = х2 - 2 точками ( x изменяется от -3 до 3 с шагом 0.1).
Пример 2.
Построение графика функции у = х2 - 2 отрезками ( x изменяется от -3 до 3 с шагом 0.1).
Пример 3.
Построение кривой, заданной уравнением в полярных координатах: =a/cos( /3), a > 0 , 0 4p
Пример 4.
На экзамене по информатике 25% студентов получили “5” , 45% - - “4”, 30% - “3” . Построить круговую диаграмму .
Пример 5.
Построить столбчатую диаграмму, отображающую ежегодную прибыль предприятия (в тыс. руб.) за последние 10 лет. Данные хранятся в массиве А[1..10]. Под каждым столбцом вывести числовое значение.
Пример 1.
Построение графика функции у = х2 - 2 точками ( x изменяется от -3 до 3 с шагом 0.1).
Для перехода от естественных координат к экранным воспользуемся формулами:
Xэ = Ox + Мx*x.
Yэ = Oy - Мy*y ,
где х , у - естественные координаты, Xэ , Yэ - экранные координаты, Ox, Oy - координаты центра, Mx, My - масштаб, т.е. длина единичных отрезков в пикселях. Для преобразования координат к целому типу используется функция Trunc.
Program PR1;
Uses Graph;
Var
Dr, Reg, I, Ox, Oy, Mx, My: integer;
X, Y: real;
BEGIN
Dr:=0; Initgraph(Dr, Reg, 'f:\tpas7\bgi');
Ox:=320; Oy:=300; Mx:=50; My:=40;
Line(0, oy, 640, oy); {ось Х}
Line(ox, 0, ox, 480); {ось Y}
X:=-3; {начальное значение Х}
{построение графика}
While X<=3 do
Begin
Y:=Sqr(x)-2;
Putpixel(Trunc(Ox+Mx*X), Trunc(Oy-My*Y),15);
X:=X+0.1;
End;
Readln;
END.
Можно строить графики функций, соединяя точки отрезками с помощью процедуры DRAWPOLY или LINETO. Преобразуем предыдущую программу, добавив нанесение на оси координат разметку.
Пример 2.
Построение графика функции у = х2 - 2 отрезками ( x изменяется от -3 до 3 с шагом 0.1).
Program PR2;
Uses Graph;
Var
Dr, Regim, I, Ox, Oy, Mx, My: integer;
X, Y: real;
BEGIN
Dr:=0; Initgraph(Dr, Regim,'f:\tpas7\bgi');
Ox:=320; Oy:=300; Mx:=50; My:=40;
Line(0, Oy, 640, Oy); Line(Ox, 0, Ox, 480); {оси координат}
{разметка оси Оx}
For I:=-3 to 3 do
begin
X:=Ox+Mx*I; Line(Trunc(X), Oy-5, Trunc(X), Oy+5);
end;
{разметка оси Оy }
For I:=-2 to 7 do
begin
Y:=Oy-My*I; Line(Ox-5, Trunc(Y), Ox+5, Trunc(Y));
end;
X:=-3; Y:=Sqr(X)-2; {координаты начальной точки}
Moveto(Trunc(Ox+Mx*X), Trunc(Oy-My*Y)); {перемещение указателя в начальную точку}
{построение графика}
While X<=3 do
begin
Y:=sqr(x)-2; Lineto(trunc(ox+mx*x),trunc(oy-my*y));
X:=X+0.1;
end;
Readln;
END.
Пример 3.
Построение кривой, заданной уравнением в полярных координатах:
=a/cos( /3), a > 0 , 0 4
|
Каждая точка кривой, заданной уравнением в полярных координатах f, определяется парой чисел и, где - угол поворота, - радиус |
Для перехода от полярных к декартовым координатам воспользуемся формулами:
x = * cos
y = * sin , где x, y -естественные координаты
Переходя к экранным координатам, получим соотношения:
xэ = 0x + Mx**cos
yэ = 0y - My**sin
Program PR3 ;
Uses Graph;
Var
Dr, Regim, Ox, Oy, Mx, My: integer;
X, Y, F, a, R: real;
BEGIN
Dr:=0; Initgraph(Dr, Regim, 'f:\tpas7\bgi');
Ox:=320; Oy:=240; Mx:=40; My:=40;
{оси координат}
Line(0, oy, 640, oy); Line(ox, 0, ox, 480);
F:=0; a:=1;
{построение графика}
While F<=4*Pi do
Begin
R:=a/cos(F/3); {вычисление радиуса}
{переход к деартовым экранным корродинатам}
X:=Ox+Mx*R*cos(F); Y:=Oy-My*R*sin(F);
Putpixel(Trunc(X), Trunc(Y),10); {изображение точки}
F:=F+0.01; {изменение угла поворота}
End;
Readln
END.
Пример 4.
На экзамене по информатике 25% студентов получили “5” , 45% - - “4”, 30% - “3” . Построить круговую диаграмму .
|
В программе использованы следующие переменные: O5, O4 - количество студентов (в процентах), получивших соответственно “5” и “4”. f1 - угол кругового сектора, обозначающего долю студентов, получивших “5”. f2 - угол кругового сектора, обозначающего долю студентов, получивших “4”. |
Program PR4;
Uses Graph;
Var
Dr, Regim, f1, f2, O5, O4: integer
f: real; ;
BEGIN
O5:=25; O4:=45;
Dr:=0; Initgraph(dr, regim,'f:\tpas7\bgi');
f1:=Trunc(360/100*O5); f2:=Trunc(360/100*O4);
{построение первого сектора}
SetColor(10); SetFillStyle(2,10); Pieslice(320, 240, 0, f1, 100);
{построение второго сектора}
SetColor(3); SetFillStyle(5,3); Pieslice(320, 240, f1, f1+f2, 100);
{построение третьего сектора}
SetColor(14); SetFillStyle(7,14); Pieslice(320,240,f1+f2,360,100);
Readln;
END.
Пример 5.
Построить столбчатую диаграмму, отображающую ежегодную прибыль предприятия (в тыс. руб.) за последние 10 лет. Данные хранятся в массиве a[1..10]. Под каждым столбцом вывести числовое значение.
Этапы решения задачи:
1. Выбор максимального элемента массива Ma.
2. Определение коэффициента пропорциональности k=h/Ma, где h - высота экрана (коэффициент пропорциональности используется для вычисления высоты столбцов и гарантирует, что они не выйдут за пределы экрана).
3. Построение прямоугольников, ширина которых постоянна, а высота определяется как произведение соответствующего a[i] на коэффициент пропорциональности k.
Program PR5;
Uses Graph;
Const
h=460;
a: array[1..10] of integer= (565, 440, 480, 590, 400, 510, 580,655, 780, 715);
Var
Dr, Reg, I, Ma, X, Y: integer;
St: string[3]; k: real;
BEGIN
{выбор максимального}
Ma:=a[1];
For I:=2 to 10 do
If a[i]>Ma then Ma:=a[i];
k:=h/Ma; {коэффициент пропорциональности}
Dr:=0; Initgraph( dr,reg,'f:\tpas7\bgi');
Line(0, h, 640, h);
SetFillStyle(4,3); {выбор стиля и цвета закраски}
{построение диаграммы}
X:=20;
For I:=1 to 10 do
begin
Y:=Trunc(a[i]*k); Bar(x, h-y, x+30, h);
Str(a[i], St); OutTextXY(x+5, 470, St); {вывод a[i]}
x:=x+60;
end;
Readln;
END.
Лабораторная работа № 1
Основные этапы решения задач
Выполните задания своего варианта и составьте письменный отчет. Отчет должен содержать:
математическую модель;
запись алгоритма в словесной форме или в виде блок-схемы;
программу;
проверку результатов ее выполнения.
Вариант 1
Найти площадь криволинейной трапеции, ограниченной линиями y=ex, х=0, х=1 (методом трапеций) при n = 5, 10, 100, 1000.
Найти сумму ряда с точностью 0,00001 и определить количество слагаемых этой суммы:
1/(1+2) + 1/(1+2+3) +...
Для нахождения знаменателя напишите функцию пользователя.
Вариант 2.
1. Найти значение выражения по схеме Горнера:
(p(2.7) + p(4))/2, где p(x)=5x5 +9x4 - 2.6x3 + x2 +11.4x + 0.9;
2. Вычислить значение суммы с точностью Е=0.0001
S =1/2! + 1/3! + ...
Для нахождения знаменателя напишите функцию пользователя.
Вариант 3.
1. Вычислить площадь криволинейной трапеции, ограниченной линиями: y=(x-4)2 , x=1, x=4. Выполнить вычисления для n=100,500,1000.
2. Вычислить значение суммы с точностью Е=0.0001
S = 1/(1+2) - 1/(1+2+3) + ...
Для нахождения знаменателя напишите функцию пользователя.
Вариант 4.
1. Найти значение выражения по схеме Горнера:
p(1.7) + p(4.8), где p(x)=7x5 +9x4 - 2.6x3 + 3x2 +11.4x - 0.9;
2. Вычислить значение суммы с точностью Е=0.00001
S = 1/2! - 1/4! + ...
Для нахождения знаменателя напишите функцию пользователя.
Вариант 5.
1. Вычислить площадь криволинейной трапеции, ограниченной линиями: y=ln(x-1), x=2, x=4. Выполнить вычисления для n=100,200,1000.
2. Вычислить значение суммы с точностью Е=0.000001
S = 1/(1+2!) + 1/(2+3!) + ...
Для нахождения знаменателя напишите функцию пользователя.
Вариант 6.
1. Найти значение выражения по схеме Горнера:
2p(7) + p(2)/2, где p(x)=15x5 +9x4 - 2x3 + x2 +11.4x - 9;
2. Вычислить значение суммы с точностью Е=0.001
S = 1/(1+3) - 1/(1+3+5) + ...
Для нахождения знаменателя напишите функцию пользователя.
Вариант 7.
1. Вычислить площадь криволинейной трапеции, ограниченной линиями: y=|2cos x +1| , x=0, x= . Выполнить вычисления для n=100,500,1000.
2. Вычислить значение суммы с точностью Е=0.00001
S = 1/3! - 1/5! + ...
Для нахождения знаменателя напишите функцию пользователя.
Вариант 8.
1. Найти значение выражения по схеме Горнера:
p(1.7) + p(8)/2, где p(x)=19x4 - 0.6x3 +5x2 +11.4x - 10.9;
2. Вычислить значение суммы с точностью Е=0.00001
S = 1/(2+3!) +1/(3+5!) + ...
Вариант 9.
1. Вычислить площадь криволинейной трапеции, ограниченной линиями: y=|3sinx-1|, x= /2, x=2 . Выполнить вычисления для n=100,200,500.
2. Найти сумму ряда с точностью 0,00001 и определить количество слагаемых этой суммы:
1/(2+4) + 1/(2+4+6) +...
Для нахождения знаменателя напишите функцию пользователя.
Вариант 10.
1. Найти значение выражения по схеме Горнера:
2p(0.7) + 3p(2), где p(x)=5x5 + x4 - 0.6x3 + 2x2 + x - 2.9;
2. Вычислить значение суммы с точностью Е=0.0001
S = 1/2! - 1/4! + ...
Для нахождения знаменателя напишите функцию пользователя.
Лабораторная работа № 2
Поиск данных.
Выполните задания своего варианта и составьте письменный отчет. Отчет должен содержать программу и ручную проверку работы программы (рассмотреть конкретный массив).
Вариант 1
Сформировать массив а[1..10], элементы которого выбираются случайным образом из интервала [10,90]. Определить методом последовательного поиска, содержит он заданное число. Если элемент найден, то удалить его из массива.
Сформировать массив а[1..10], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент не найден, то вставить его в массив на первое место.
Вариант 2
Сформировать массив а[1..8], элементы которого выбираются случайным образом из интервала [-10, 10]. Определить методом последовательного поиска, содержит он заданное число. Если элемент не найден, то вставить его на первое место.
Сформировать массив а[1..12], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент найден, то удалить его из массива.
Вариант 3
Сформировать массив а[1..20], элементы которого выбираются случайным образом из интервала [40, 90]. Определить методом последовательного поиска, содержит он заданное число. Если элемент найден, то удалить его и следующий за ним элемент из массива.
Сформировать массив а[1..15], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент не найден, то вставить его в массив на третье место.
Вариант 4
Сформировать массив а[1..18], элементы которого выбираются случайным образом из интервала [-20, 40]. Определить методом последовательного поиска, содержит он заданное число. Если элемент не найден, то вставить его на последнее место.
Сформировать массив а[1..12], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент найден, то удалить его и следующий за ним элемент из массива.
Вариант 5
Сформировать массив а[1..12], элементы которого выбираются случайным образом из интервала [101, 290]. Определить методом последовательного поиска, содержит он заданное число. Если элемент найден, то удалить его и стоящий перед ним элемент из массива.
Сформировать массив а[1..10], упорядоченный по убыванию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент не найден, то вставить его в массив на второе место.
Вариант 6
Сформировать массив а[1..14], элементы которого выбираются случайным образом из интервала [-20, 50]. Определить методом последовательного поиска, содержит он заданное число. Если элемент не найден, то вставить его на последнее место.
Сформировать массив а[1..20], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент найден, то удалить его из массива.
Вариант 7
Сформировать массив а[1..11], элементы которого выбираются случайным образом из интервала [-40, 70]. Определить методом последовательного поиска, содержит он заданное число. Если элемент найден, то удалить его и следующий за ним элемент из массива.
Сформировать массив а[1..10], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент не найден, то вставить его в массив на первое место.
Вариант 8
Сформировать массив а[1..18], элементы которого выбираются случайным образом из интервала [20, 140]. Определить методом последовательного поиска, содержит он заданное число. Если элемент не найден, то вставить его на последнее место.
Сформировать массив а[1..12], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент найден, то удалить его и следующий за ним элемент из массива.
Вариант 9
Сформировать массив а[1..8], элементы которого выбираются случайным образом из интервала [10, 70]. Определить методом последовательного поиска, содержит он заданное число. Если элемент не найден, то вставить его на второе место.
Сформировать массив а[1..20], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент найден, то удалить следующий за ним элемент из массива.
Вариант 10
Сформировать массив а[1..16], элементы которого выбираются случайным образом из интервала [100, 200]. Определить методом последовательного поиска, содержит он заданное число. Если элемент найден, то удалить стоящий перед ним элемент из массива.
Сформировать массив а[1..10], упорядоченный по убыванию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент не найден, то вставить его в массив на второе место.
Лабораторная работа № 3
Сортировка данных.
Вариант 1.
Сформировать массив а[1..20], элементы которого выбираются случайным образом из интервала [1,100]. Отсортировать по невозрастанию элементы, занимающие четные позиции.
Сформировать матрицу NxN, элементы которой выбираются случайным образом из интервала [10, 50]. Отсортировать строки матрицы по неубыванию.
Вариант 2.
Сформировать массив а[1..10], элементы которого выбираются случайным образом из интервала [0, 60]. Отсортировать по невозрастанию элементы с 1-го по 5-й и по неубыванию элементы с 6-го по 10-й.
Сформировать матрицу NxN, элементы которой выбираются случайным образом из интервала [10, 90]. Отсортировать четные строки матрицы по неубыванию.
Вариант 3.
Сформировать массив а[1..12], элементы которого выбираются случайным образом из интервала [1,10]. Отсортировать по невозрастанию элементы, занимающие нечетные позиции.
Сформировать матрицу NxN, элементы которой выбираются случайным образом из интервала [10, 80]. Отсортировать строки матрицы по невозрастанию.
Вариант 4.
Сформировать массив а[1..20], элементы которого выбираются случайным образом из интервала [0, 60]. Отсортировать по невозрастанию элементы с n-го по k-й.
Сформировать матрицу 5x6, элементы которой выбираются случайным образом из интервала [40, 80]. Отсортировать нечетные строки матрицы по неубыванию.
Вариант 5.
Сформировать массив а[1..12], элементы которого выбираются случайным образом из интервала [10,150]. Отсортировать по возрастанию элементы, занимающие четные позиции.
Сформировать матрицу 4x6, элементы которой выбираются случайным образом из интервала [20, 60]. Отсортировать строки матрицы по неубыванию.
Вариант 6.
Сформировать массив а[1..18], элементы которого выбираются случайным образом из интервала [0, 120]. Отсортировать по возрастанию элементы с 1-го по 9-й и по убыванию элементы с 10-го по 18-й.
Сформировать матрицу 5x5, элементы которой выбираются случайным образом из интервала [100, 500]. Отсортировать нечетные строки матрицы по неубыванию.
Вариант 7.
Сформировать массив а[1..15], элементы которого выбираются случайным образом из интервала [0, 200]. Отсортировать по невозрастанию элементы, занимающие четные позиции.
Сформировать матрицу 6x6, элементы которой выбираются случайным образом из интервала [10, 60]. Отсортировать столбцы матрицы по невозрастанию.
Вариант 8.
Сформировать массив а[1..16], элементы которого выбираются случайным образом из интервала [0, 90]. Отсортировать по возрастанию элементы с n-го по k-й.
Сформировать матрицу 4x6, элементы которой выбираются случайным образом из интервала [10, 99]. Отсортировать нечетные строки матрицы по убыванию.
Вариант 9.
Сформировать массив а[1..10], элементы которого выбираются случайным образом из интервала [100, 300]. Отсортировать по возрастанию элементы, занимающие нечетные позиции.
Сформировать матрицу 6x4, элементы которой выбираются случайным образом из интервала [10, 99]. Отсортировать столбцы матрицы по возрастанию.
Вариант 10.
Сформировать массив а[1..10], элементы которого выбираются случайным образом из интервала [10, 150]. Отсортировать по возрастанию элементы с n-го по k-й.
Сформировать матрицу 5x6, элементы которой выбираются случайным образом из интервала [100, 200]. Отсортировать четные строки матрицы по убыванию.
Лабораторная работа № 4
Моделирование стека
Вариант 1.
Сформировать стек из 7 чисел. Найти сумму 5-го и 6-го элементов и поместить ее в стек.
Сформировать стек из 10 чисел. Найти количество положительных чисел стека.
Вариант 2.
Сформировать стек из 5 чисел. Найти произведение 4-го и 3-го элементов и поместить ее в стек.
Сформировать стек из 10 чисел. Найти количество четных чисел стека.
Вариант 3.
Сформировать стек из 6 чисел. Найти сумму 3-го и 5-го элементов.
Сформировать стек из 10 чисел. Найти количество отрицательных чисел стека и поместить в стек.
Вариант 4.
Сформировать стек из 5 чисел. Найти произведение 2-го и 3-го элементов и поместить ее в стек.
Сформировать стек из 8 чисел. Найти количество нечетных чисел стека и поместить в стек.
Вариант 5.
Сформировать стек из 5 чисел. Удвоить сумму 3-го и 4-го элементов и поместить ее в стек.
Сформировать стек из 9 чисел. Найти среднее арифметическое положительных чисел стека.
Вариант 6.
Сформировать стек из 7 чисел. Удвоить 4-й элемент и поместить его в стек.
Сформировать стек из 10 чисел. Найти среднее арифметическое четных чисел стека.
Вариант 7.
Сформировать стек из 6 чисел. Утроить сумму 3-го и 5-го элементов.
Сформировать стек из 10 чисел. Найти сумму отрицательных чисел стека и поместить в стек.
Вариант 8.
Сформировать стек из 6 чисел. Найти произведение 4-го и 5-го элементов и поместить ее в стек.
Сформировать стек из 8 чисел. Найти сумму нечетных чисел стека и поместить в стек.
Вариант 9.
Сформировать стек из 7 чисел. Уменьшить на единицу 4-й элементов и поместить его в стек.
Сформировать стек из 9 чисел. Найти среднее арифметическое чисел, кратных трем.
Вариант 10.
Сформировать стек из 10 чисел. Удвоить сумму 4-го и 6-го элементов и поместить ее в стек.
Сформировать стек из 6 чисел. Найти среднее арифметическое чисел, кратных 4-м.
Лабораторная работа № 5
Моделирование очереди
Вариант 1.
Сформировать очередь из 7 чисел. Удвоить 4-й элемент и поместить его в очередь.
Сформировать очередь из 10 чисел. Найти среднее арифметическое четных чисел очереди.
Вариант 2.
Сформировать очередь из 5 чисел. Найти произведение 1-го и 3-го элементов и поместить ее в очередь.
Сформировать очередь из 8 чисел. Найти сумму нечетных чисел очереди.
Вариант 3.
Сформировать очередь из 10 чисел. Удвоить сумму 4-го и 6-го элементов и поместить ее в очередь.
Сформировать очередь из 6 чисел. Найти среднее арифметическое чисел, кратных 4-м.
Вариант 4.
Сформировать очередь из 5 чисел. Найти произведение 1-го и 3-го элементов и поместить ее в очередь.
Сформировать очередь из 10 чисел. Найти количество четных чисел очереди.
Вариант 5.
Сформировать очередь из 6 чисел. Найти сумму 2-го и 4-го элементов.
Сформировать очередь из 10 чисел. Найти количество отрицательных чисел и поместить в очередь.
Вариант 6.
Сформировать очередь из 5 чисел. Найти произведение 2-го и 3-го элементов и поместить ее в очередь.
Сформировать очередь из 8 чисел. Найти количество нечетных чисел и поместить в очередь.
Вариант 7.
Сформировать очередь из 5 чисел. Удвоить сумму 3-го и 4-го элементов и поместить ее в очередь.
Сформировать очередь из 9 чисел. Найти среднее арифметическое положительных чисел очереди.
Вариант 8.
Сформировать очередь из 5 чисел. Найти произведение 2-го и 3-го элементов и поместить ее в очередь.
Сформировать очередь из 10 чисел. Найти количество четных чисел очереди.
Вариант 9.
Сформировать очередь из 6 чисел. Утроить сумму 3-го и 5-го элементов.
Сформировать очередь из 10 чисел. Найти сумму отрицательных чисел и поместить в очередь.
Вариант 10.
Сформировать очередь из 6 чисел. Найти произведение 3-го и 5-го элементов и поместить ее в очередь.
Сформировать очередь из 8 чисел. Найти сумму нечетных чисел и поместить в очередь.
Лабораторная работа № 6
Подготовка к контрольной работе №1
Для подготовки к контрольной работе выполните предложенные задания и составьте письменный отчет. Отчет должен содержать программу и ручную проверку ее работы.
Задания
Найти сумму ряда с точностью 0.0001: S = + +...
Найти корень уравнения cos x - = 0 методом половинного деления с точностью Е=0.0001.
Протабулировать функцию y= sin x2 + ln x на отрезке [1, 2] с шагом h=0.1 и упорядочить значения функции по невозрастанию.
Сформировать массив a[1..n], упорядоченный по возрастанию. Определить, содержит ли он заданное число методом бинарного поиска. Если элемент найден, то вставить перед ним новый элемент.