Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
practikumporesheniyuzadachnaibm (1).doc
Скачиваний:
6
Добавлен:
14.07.2019
Размер:
665.6 Кб
Скачать

Построение графиков функций и диаграмм

Пример 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], упорядоченный по возрастанию. Определить, содержит ли он заданное число методом бинарного поиска. Если элемент найден, то вставить перед ним новый элемент.