Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая.docx
Скачиваний:
25
Добавлен:
11.05.2015
Размер:
701.83 Кб
Скачать

7.Руководство пользователя по работе с программой.

При запуске программы предоставляется выбор: ввести данные с клавиатуры или ввести название файла, из которого необходимо прочесть эти данные.

При вводе данных необходимо учесть, что:

  1. Пределы интегрирования (x1и x2) должны иметь значения от -1000 до 1000, их разность не должна быть нулевой;

  2. Коэффициенты в уравнениях являются (a, b, c) являются вещественными числами;

  3. Число интервалов разбиения (n) - натуральное число не более 500.

При нарушении этих требований ввод данных необходимо повторить.

Файл с исходными данными должен иметь следующую структуру данных:

Значения x1,x2,a, b, c,n, разделенные пробелами или знаками переноса на следующую строку.

Если файл будет не найден, ввод необходимо повторить.

После корректного ввода данных будет отображены для заданных значений:

  1. Значение интеграла, вычисленного методом левых прямоугольников;

  2. Точное значение интеграла;

  3. Абсолютная погрешность вычисления;

  4. Относительная погрешность вычисления.

Для каждого из 3х уравнений:

  1. ;

  2. ;

  3. .

И отображены графики этих уравнений для заданных исходных данных.

8.Блок-схема программы

Главная программа проекта

Вычисление интеграла методом левых прямоугольников

Вычисление точного значения интеграла

Вычисление значение функции с номером k

Вычисление значение первообразной от функции с номером k

Отображение графика одного уравнения с номером kна области отminxдоminyпо вертикали

Отображение трех графиков на одном экране

9.Распечатка текста программы

Main.cpp– главный элемент проекта

# include <iostream.h>

# include <conio.h>

# include <stdio.h>

# include <process.h>

# include <string.h>

#include "integral.cpp"

# ifndef __fstream_h

# include <fstream.h>

# endif

#include "graph.cpp"

void main()

{

float a, b, c,//коэффициенты уравнения

x1, x2;//пределы интегрирования

int n;//число интервалов разбиения

clrscr();

int successVubor,//успешный выбор команды меню и корректный выбор исходных значений

successVvod;//успещный ввод данных

do

{

cout<<"\nVvod dannuh:\n 1. S klaviatyru;\n 2. Iz faila;\n e. Vuhod.\n";

successVubor = 0;

switch(getch())

{

case '1'://ввод исходных данных с клавиатуры

do

{

fflush(stdin);//очистка буфера

cout<<"\nVvedite levuj predel integrirovaniya: ";

if((scanf("%f",&x1))==0)//если введено не число

{

cout<<"Tol'ko chislovoe znachenie!\n";

successVvod = 1;

}

else successVvod = 0;

}

while(successVvod);//пока не будет введено число

do

{

fflush(stdin);//очистка буфера

cout<<"Vvedite pravuj predel integrirovaniya: ";

if((scanf("%f",&x2))==0)//если введено не число

{

cout<<"Tol'ko chislovoe znachenie!\n";

successVvod = 1;

}

else successVvod = 0;

}

while(successVvod);//пока не будет введено число

do

{

fflush(stdin);//очистка буфера

cout<<"Vvedite znachenie a: ";

if((scanf("%f", &a))==0)//если введено не число

{

cout<<"Tol'ko chislovoe znachenie!\n";

successVvod = 1;

}

else successVvod = 0;

}

while(successVvod);//пока не будет введено число

do

{

fflush(stdin);//очистка буфера

cout<<"Vvedite znachenie b: ";

if((scanf("%f", &b))==0)//если введено не число

{

cout<<"Tol'ko chislovoe znachenie!\n";

successVvod = 1;

}

else successVvod = 0;

}

while(successVvod);//пока не будет введено число

do

{

fflush(stdin);//очистка буфера

cout<<"Vvedite znachenie c: ";

if((scanf("%f", &c))==0)//если введено не число

{

cout<<"Tol'ko chislovoe znachenie!\n";

successVvod = 1;

}

else successVvod = 0;

}

while(successVvod);//пока не будет введено число

do

{

fflush(stdin);//очистка буфера

cout<<"Vvedite kolichestvo otrezkov razbienij: ";

if((scanf("%d", &n))==0)//если введено не число (округляется, если введено нецелое)

{

cout<<"Tol'ko celoe chislovoe znachenie!\n";

successVvod = 1;

}

else successVvod = 0;

}

while(successVvod);//пока не будет введено число

break;

case '2'://чтение данных из файла

do

{

cout<<"\nVvedite pyt' i imya faila (vuhod iz programmu: e): ";

char fileName[40];

cin>>fileName;

if(!strcmp(fileName, "e"))

exit(1);

ifstream stream(fileName, ios::in);

if(stream == NULL)

cout<<"Oshibka otkrutiya faila. Prover'te pravilnost pyti faila.";

else

{

stream>>x1>>x2>>a>>b>>c>>n;

stream.close();

break;

}

}

while(1);

break;

case 'e'://выход

exit(1);

break;

default://любая другая клавиша = неудачный выбор подменю

successVubor = 1;

}

if(!successVubor)//если был осуществлен ввод исходных данных => проверка на их корректность

{

if(x1 == x2)

{

cout<<"Oshibka. Nylevoj interval integrirovaniya. Povtorite vvod.";

successVubor = 1;

}

if((x1 > 1000) || (x1 < -1000) || (x2 > 1000) || (x2 < -1000))

{

cout<<"Oshibka. Predelu integrirovaniya doljnu but' ot -1000 do 1000. Povtorite vvod.";

successVubor = 1;

}

if((n < 1) || (n > 500))

{

cout<<"Oshibka. Chislo razbienij doljno but 0 < n <= 500.";

successVubor = 1;

}

}

}

while(successVubor);//пока не будет осуществлен корректный ввод исходных данных

for(int k = 0; k < 3; k++)//для каждого из 3х уравнений

{//вычисляем приближенное значение интеграла, точное значение, абсолютную и относительную погрешности

float pribl = integr(x1, x2, n, a, b, c, k),

toch = integrToch(x1, x2, a, b, c, k);

cout<<"\n\nReshaem integral ot "<<(k + 1)<<" yravneniya.\nNaidennoe znachenie: "<<

pribl<<

"\nTochnoe znachenie: "<<toch<<

"\nAbsolytnaya pogr: "<<fabs(pribl - toch)<<

"\nOtnositelnaya pogr: "<<fabs((pribl - toch)) / toch * 100;

}

getch();

showGraphs(x1, x2, n, a, b, c);//отображаем графики этих уравнений

}