
4.5 Тестовый пример
Для проверки правильности работы и функционирования программы был подготовлен тестовый пример.
Задание 1
На участке от -10 до 0 функция задана прямой y = -0.5*x-3.
На участке от 0 до 3 функция задана уравнением окружности y=-√r2- x2
На участке от 3 до 6 функция задана уравнением окружности y=√r2- x2
Y = -0,5*(-10,00)-3=5-3=2
Y = -0,5*(-8,70)-3=4,35-3=1,35
Y = -0,5*(-7,40)-3=3,7-3=0,70
Y = -0,5*(-6,10)-3=3,05-3=0,05
Y = -0,5*(-4,80)-3=2,4-3=-0,60
Y = -0,5*(-3,50)-3=1,75-3=-1,25
Y = -0,5*(-2,20)-3=1,1-3=-1,90
Y = -0,5*(-0,90)-3=0,05-3=-2,55
y=√32- 0,42=-2,97
y=√32- 1,72=-2,47
y=√32- 32 =0,00
y=√32- 4,32=2,47
y=√32- 5,62=2,97
Задание 2
Пусть R=3, точка А с координатами x=3, y=4. При таких значениях точка лежит выше оси Х и вне окружности, следовательно результатом работы программы должно быть значение «Ne popal»
Пусть R= 3, точка А с координатами x=1, y=1. При таких значениях точка лежит выше оси Х в окружности, следовательно результатом работы программы должно быть значение «Popal !!!»
Задание 3
Для проверки правильности вычислений значения функции, заданной с помощью ряда Тейлора, используется математический пакет Matlab 7. Для вычисления значения натурального логарифма необходимо ввести команду log(x), вместо x подставить тестовые значения. Возьмем интервал от 0 до 1, шаг равный 0,3 и посчитаем соответствующие значения логарифма:
log(1,00)=0;
log(1,30)= 0.26236426446749
log(1,60)= 0.47000362924574
log(1,90)= 0.64155388617239
Если результаты работы программы совпали с контрольными, это значит что программа работает верно, и техническое задание выполнено в полном объёме.
Вывод
В соответствии с полученными данными работы программы и результатами тестового примера, можно сделать вывод, что разработанная программа работает верно.
ЛИСТИНГ ПРОГРАММЫ
ПРИЛОЖЕНИЕ А
(обязательное)
using System;
using System.Collections.Generic;
using System.Text;
namespace Laba1var4
{
class Programm
{
//----------------Задание 1. Таблица значений функции
public void graph()
{
double r = 3, y, s;
bool err;
do
{
Console.Clear();
do
{
err = false;
//Console.Clear();
Console.WriteLine("Zadaite velichinu shaga:");
try
{
s = Convert.ToDouble(Console.ReadLine());
}
catch (Exception e)
{
Console.WriteLine(e.Message);
s = 0;
err = true;
}
}
while (err);
Console.WriteLine("\nx\ty");
Console.WriteLine("_______\t_______");
for (double i = -10; i <= 6; i += s)
{
Console.Write("{0:N}\t", i);
if (i < 0)
Console.WriteLine("{0:N}", y = -0.5*i-3);
if (i >= 0 && i < 3)
Console.WriteLine("{0:N}", Math.Round(y =-Math.Sqrt(Math.Pow(r, 2) - Math.Pow(i , 2)), 2));
if (i >= 3 && i <= 6)
Console.WriteLine("{0:N}", Math.Round(y = Math.Sqrt(Math.Pow(r, 2) - Math.Pow(i-6, 2)), 2));
}
Console.WriteLine("\nNagmite ESC dla vixoda ili lubuu klavishu dla prodolgenia");
}
while (Console.ReadKey().Key != ConsoleKey.Escape);
}
//Задание 2. Серия выстрелов по мишени
public void mish()
{
double x=0, y=0, r=0;
bool err;
ConsoleKeyInfo k;
Console.Clear();
do
{
Console.Write("Vvedite radius mesheni: ");
err = false;
try
{
r = Convert.ToDouble(Console.ReadLine());
}
catch (Exception e)
{
Console.WriteLine(e.Message);
err = true;
}
}
while (err);
do
{
Console.WriteLine("Vvedite koordinati vistrela:");
do
{
err = false;
try
{
Console.Write("x: ");
x = Convert.ToDouble(Console.ReadLine());
Console.Write("y: ");
y = Convert.ToDouble(Console.ReadLine());
}
catch (Exception e)
{
Console.WriteLine(e.Message);
err = true;
}
}
while (err);
if ((y<=x)&&(y>=-r)&&(y<0)&&(x>=-r)&&(x<0) ||
(x >= -r)&&(x<=r)&&(y >= 0)&&(y <= Math.Sqrt(Math.Pow(r, 2) - Math.Pow(x, 2))))
{
Console.WriteLine("\nPopal !!!");
}
else
{
Console.WriteLine("\nNe popal");
}
Console.WriteLine();
do
{
Console.WriteLine("\nVixod - ESC,novii radius - R, prodolgit' - lubaya klavisha");
k = Console.ReadKey();
if (k.Key == ConsoleKey.R)
{
Console.WriteLine();
Console.Write("Novii R: ");
r = Convert.ToDouble(Console.ReadLine());
}
}
while (k.Key == ConsoleKey.R);
Console.Clear();
}
while (k.Key != ConsoleKey.Escape);
}
//Задание 3. Ряды Тэйлора
public void telor()
{
double xn = 0, xk = 0, dx = 0, e = 0, ln = 0;
bool err;
int p=1,j,i=0, s = 0;
do
{
//ввод данных
do
{
Console.Clear();
Console.WriteLine("Vvedite:");
err = false;
try
{
Console.Write("Xn>-1: ");
xn = Convert.ToDouble(Console.ReadLine());
Console.Write("Xk<=1: ");
xk = Convert.ToDouble(Console.ReadLine());
Console.Write("Dx: ");
dx = Convert.ToDouble(Console.ReadLine());
Console.Write("E: ");
e = Convert.ToDouble(Console.ReadLine());
if ((xn < -1) || (xk > 1) || (xk < xn) || (dx>(xk-xn)))
{
Console.WriteLine("\nNeverno ykazani znachenia. Nagmite lubuu klavishu dlay povtora");
err = true;
Console.ReadLine();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
err = true;
Console.ReadLine();
}
}
while (err);
//----------вычисления--------------
Console.WriteLine("x\ty");
Console.WriteLine("____\t____");
double x=xn;
double ln1,ln2,delta;
while (xk>=x)
{
j = 1;
ln = x;
do
{
ln1 = Math.Pow(x, j) / j;
j++;
ln2 = Math.Pow(x, j) / (j);
delta = ln1 - ln2;
if ((j % 2) == 0) p = -1;
else p = 1;
ln = ln + ln2 * p;
}
while (e < delta);
Console.Write("{0:N}\t", x);
Console.Write("{0:f8}",ln );
Console.WriteLine("\nBilo prossumirovano " + j + " elementa riada");
x=x+dx;
}
Console.WriteLine("\nNagmite ESC dla vixoda ili lubuu klavishu dla prodolgenia");
}
while (Console.ReadKey().Key != ConsoleKey.Escape);
}
// главная функция
static void Main(string[] args)
{
string s;
do
{
Console.Clear();
Console.WriteLine("Viberite:\n" +
"--Zadanie 1 (1)\n" +
"--Zadanie 2 (2)\n" +
"--Zadanie 3 (3)\n" +
"--Vixod (4)");
s = Console.ReadLine();
Programm op = new Programm();
switch (s)
{
case "1":
{
op.graph();
break;
}
case "2":
{
op.mish();
break;
}
case "3":
{
op.telor();
break;
}
case "4":
{
return;
}
}
}
while (true);
}
}
}
БЛОК-СХЕМА АЛГОРИТМА ПРОГРАММЫ
ПРИЛОЖЕНИЕ Б
(обязательное)
Метод Main
Метод Graph
Метод Mish
Метод Telor
ЭКРАННЫЕ ФОРМЫ
ПРИЛОЖЕНИЕ В
Рисунок В.1 – Стартовое меню
Рисунок В.2 – Результат выполнения задания 1
Рисунок В.3 – Результат выполнения задания 2
Рисунок В.4 – Результат выполнения задания 3