Разработка алгоритма программы на языке С++, которая вычисляет значения емкости и чувствительности плоского и цилиндрического датчиков
Формулы расчета емкости плоскопараллельного датчика и его чувствительности. Таблица символических имен: макроопределения, абстрактные классы и функции. Текст программы на языке Си. Результаты в виде таблиц и графиков. Анализ работоспособности программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 03.11.2012 |
Размер файла | 988,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Постановка задачи
В измерительной технике широко используются датчики ёмкости. Так для измерения толщины тонкой ленты из диэлектрика применяется плоскопараллельный датчик.
Его ёмкость вычисляется по формуле:
где
- ёмкость датчика(ПФ)
- расстояние между обложками конденсатора (см)
- толщина ленты (см)
- относительная диэлектрическая проницаемость материала ленты.
- площадь обложек конденсатора (см2)
Чувствительность датчика:
где
- чувствительность (ПФ/см)
Ещё один датчик ёмкости применяется для измерения уровня жидкости. Его ёмкость измеряется по формуле:
где
- ёмкость датчика (ПФ)
- высота электрода (см)
- уровень жидкости (см)
- относительная диэлектрическая проницаемость жидкости.
- диаметры внутреннего и внешнего электродов датчика (см2)
Чувствительность датчика:
Описать абстрактный класс «Датчик» с элементами данных С, о. Предусмотреть чистые виртуальные функции:
1) Чтение данных из файла
2) Расчеты параметров С, о.
3) Занос в файл результатов и входных данных.
Описать походные от абстрактного классы «Датчик_плоский» «Датчик_цилиндр». Предвидеть в них необходимые элементы данных.
Кроме виртуальных функций предвидеть перевантажену операцию присвоения, а также конструкторы: пустой, с инициализацией и копирования.
Привести пример программы, в которой применить все конструкторы, члены функций и оператор присвоения.
Для воды =80. Для полихлорвинила =3,4. Другие данные задать самостоятельно.
Таблица символических имен
Макроопределения #define |
||
E_ymol4aniju_p |
Значения, использующиеся в конструкторе с инициализацией для плоского датчика. |
|
d_ymol4aniju |
||
delta_ymol4aniju |
||
S_ymol4aniju |
||
E_ymol4aniju_c |
Значения, использующиеся в конструкторе с инициализацией для цилиндрического датчика. |
|
H_ymol4aniju |
||
h_ymol4aniju |
||
d1_ymol4aniju |
||
d2_ymol4aniju |
Абстрактный класс Dat4ik |
||
C |
Ёмкость датчика. Это значение нужно вычислить. |
|
ksi |
Чувствительность датчика. Это значение нужно вычислить. |
|
E |
Относительная диэлектрическая проницаемость материала ленты. Это значение дано в условии. |
|
vvod_dannih_iz_faila |
Функция, которая читает исходные данные из файла. Чистая виртуальная функция. |
|
vi4islenie_C_ksi |
Функция, которая вычисляет значения параметров С и о. Чистая виртуальная функция. |
|
vivod_v_fail_rezyltatov |
Функция, которая выводит исходные и результирующие данные в файл. Чистая виртуальная функция. |
|
vivod_na_ekran_rezylatov |
Функция, которая выводит результирующие данные на экран. Чистая виртуальная функция. |
Класс dat4ik_ploskii |
||
S |
Площадь обложек конденсатора. Это значение дано в условии. |
|
d |
Расстояние между обложками конденсатора. Это значение дано в условии. |
|
delta |
Толщина ленты. Это значение дано в условии. |
|
dat4ik_ploskii() |
Пустой конструктор. Параметры E, S, d, delta, C, ksi обнуляются. |
|
dat4ik_ploskii (float E_ymol4a,float S_ymol4a, float d_ymol4a, float delta_ymol4a) |
Конструктор с инициализацией. Параметрам E, S, d, delta присваиваются необходимые пользователю значения. А параметры C, о обнуляются. |
|
dat4ik_ploskii (dat4ik_ploskii &a) |
Конструктор копирования. |
|
vvod_dannih_iz_faila |
Функция, которая читает исходные данные E, d, delta, S из файла. |
|
vi4islenie_C_ksi |
Функция, которая вычисляет значения параметров С и о по заданным формулам. |
|
vivod_v_fail_rezyltatov |
Функция, которая выводит исходные E, d, delta, S и результирующие С, о данные в файл. |
|
vivod_na_ekran_rezylatov |
Функция, которая выводит результирующие данные С, о на экран. |
|
dat4ik_ploskii&operator= (const dat4ik_ploskii&a) |
Перевантажена операция присваивания. |
|
Класс dat4ik_cilindri4eskii |
||
H |
Высота электрода. Это значение дано в условии. |
|
h |
Уровень жидкости. Это значение дано в условии. |
|
d1 |
Диаметр внутреннего электрода датчика. Это значение дано в условии. |
|
d2 |
Диаметр внешнего электрода датчика. Это значение дано в условии. |
|
dat4ik_cilindri4eskii(); |
Пустой конструктор. Параметры E, H, h, d1, d2, C, о обнуляются. |
|
dat4ik_cilindri4eskii (float E_ymol4a,float H_ymol4a, float h_ymol4a, float d1_ymol4a,float d2_ymol4a); |
Конструктор с инициализацией. Параметрам E, H, h, d1, d2 присваиваются необходимые пользователю значения. А параметры C, о обнуляются. |
|
dat4ik_cilindri4eskii (dat4ik_cilindri4eskii &b); |
Конструктор копирования. |
|
vvod_dannih_iz_faila |
Функция, которая читает исходные данные E, H, h, d1, d2 из файла. |
|
vi4islenie_C_ksi |
Функция, которая вычисляет значения параметров С и о по заданным формулам. |
|
vivod_v_fail_rezyltatov |
Функция, которая выводит исходные E, H, h, d1, d2 и результирующие С, о данные в файл. |
|
vivod_na_ekran_rezylatov |
Функция, которая выводит результирующие данные С, о на экран. |
|
dat4ik_cilindri4eskii&operator= (const dat4ik_cilindri4eskii&b); |
Перевантажена операция присваивания. |
емкость датчик чувствительность программа
Функция main |
||
x |
Параметры типа dat4ik_ploskii. С их помощью показываем работу всех конструкторов, операторов и функций класса dat4ik_ploskii. |
|
x_ymol4aniju (E_ymol4aniju_p, d_ymol4aniju, delta_ymol4aniju) |
||
x_kopirivanie(x_ymol4aniju) |
||
x_prisvaivanie |
||
y |
Параметры типа dat4ik_cilindri4eskii. С их помощью показываем работу всех конструкторов, операторов и функций класса dat4ik_cilindri4eskii. |
|
y_ymol4aniju (E_ymol4aniju_c, H_ymol4aniju, h_ymol4aniju, |
||
y_kopirivanie(y_ymol4aniju) |
||
y_prisvaivanie; |
Текст программы на языке Си. Результаты в виде таблиц и графиков
Текст программы на языке Си.
# include<math.h>
# include<fstream.h>
# include<stdlib.h>
# include<stdio.h>
# include<conio.h>
//zna4enija po ymol4aniju dlja parametrov ploskogo dat4ika
# define E_ymol4aniju_p 3.4
# define d_ymol4aniju 5
# define delta_ymol4aniju 1
# define S_ymol4aniju 9
//zna4enija po ymol4aniju dlja parametrov cilindri4eskogo dat4ika
# define E_ymol4aniju_c 80
# define H_ymol4aniju 100
# define h_ymol4aniju 50
# define d1_ymol4aniju 5
# define d2_ymol4aniju 10
//Abstraktnii klass 'Dat4ik'
class dat4ik
{
protected:
float C;
float ksi;
float E;//zadano v faile
public:
virtual void vvod_dannih_iz_faila(char*s)=0;
virtual void vi4islenie_C_ksi()=0;
virtual void vivod_v_fail_rezyltatov(char*s)=0;
virtual void vivod_na_ekran_rezylatov()=0;
};
//Proizvodnii klass 'Dat4ik_ploskii'
class dat4ik_ploskii:public dat4ik
{
protected:
float S; //zadano v faile
float d; //zadano v faile
float delta;//zadano v faile
public:
dat4ik_ploskii();
dat4ik_ploskii(float E_ymol4a,float S_ymol4a, float d_ymol4a, float delta_ymol4a);
dat4ik_ploskii(dat4ik_ploskii &a);
virtual void vvod_dannih_iz_faila(char*s);
virtual void vi4islenie_C_ksi();
virtual void vivod_v_fail_rezyltatov(char*s);
virtual void vivod_na_ekran_rezylatov();
dat4ik_ploskii&operator=(const dat4ik_ploskii&a);
};
dat4ik_ploskii::dat4ik_ploskii()
{
E=0;
S=0;
d=0;
delta=0;
C=0;
ksi=0;
}
dat4ik_ploskii::dat4ik_ploskii(float E_ymol4a,float S_ymol4a, float d_ymol4a, float delta_ymol4a)
{
E=E_ymol4a;
S=S_ymol4a;
d=d_ymol4a;
delta=delta_ymol4a;
C=0;
ksi=0;
}
dat4ik_ploskii::dat4ik_ploskii(dat4ik_ploskii &a)
{
E=a.E;
S=a.S;
d=a.d;
delta=a.delta;
}
void dat4ik_ploskii::vvod_dannih_iz_faila(char*s)
{
ifstream fin(s);
if (!fin)
{
cout<<"Izvinite, no k sogaleniju fail '"<<s<<"' ne otkrilsja."<<endl;
exit(1);
}
fin>>E;
fin>>d;
fin>>delta;
fin>>S;
}
void dat4ik_ploskii::vi4islenie_C_ksi()
{
C=0.089*S/(d-(1-1/E)*delta);
ksi=0.089*S*(1-1/E)/pow( (d- (1-1/E)* delta) ,2);
}
void dat4ik_ploskii::vivod_v_fail_rezyltatov(char*s)
{
ofstream fout(s);
fout<<"Ishodanie dannie:"<<endl;
fout<<" E="<<E<<endl;
fout<<" S="<<S<<endl;
fout<<" d="<<d<<endl;
fout<<" delta="<<delta<<endl<<endl;
fout<<"Rezyltati:"<<endl;
fout<<" V ploskom dat4ike C="<<C<<endl;
fout<<" V ploskom dat4ike Ksi="<<ksi<<endl;
}
void dat4ik_ploskii::vivod_na_ekran_rezylatov()
{
cout<<" V ploskom dat4ike C="<<C<<endl;
cout<<" V ploskom dat4ike Ksi="<<ksi<<endl<<endl;
}
dat4ik_ploskii&dat4ik_ploskii::operator=(const dat4ik_ploskii&a)
{
E=a.E;
S=a.S;
d=a.d;
delta=a.delta;
return *this;
}
//Proizvodnii klass 'Dat4ik_cilindri4eskii'
class dat4ik_cilindri4eskii:public dat4ik
{
protected:
float H; //zadano v faile
float h; //zadano v faile
float d1,d2;//zadano v faile
public:
dat4ik_cilindri4eskii();
dat4ik_cilindri4eskii(float E_ymol4a,float H_ymol4a, float h_ymol4a, float d1_ymol4a,float d2_ymol4a);
dat4ik_cilindri4eskii(dat4ik_cilindri4eskii &b);
virtual void vvod_dannih_iz_faila(char*s);
virtual void vi4islenie_C_ksi();
virtual void vivod_v_fail_rezyltatov(char*s);
virtual void vivod_na_ekran_rezylatov();
dat4ik_cilindri4eskii&operator=(const dat4ik_cilindri4eskii&b);
};
dat4ik_cilindri4eskii::dat4ik_cilindri4eskii()
{
E=0;
H=0;
h=0;
d1=0;
d2=0;
C=0;
ksi=0;
}
dat4ik_cilindri4eskii::dat4ik_cilindri4eskii(float E_ymol4a,float H_ymol4a, float h_ymol4a, float d1_ymol4a,float d2_ymol4a)
{
E=E_ymol4a;
H=H_ymol4a;
h=h_ymol4a;
d1=d1_ymol4a;
d2=d2_ymol4a;
C=0;
ksi=0;
}
dat4ik_cilindri4eskii::dat4ik_cilindri4eskii(dat4ik_cilindri4eskii &b)
{
E=b.E;
H=b.H;
h=b.h;
d1=b.d1;
d2=b.d2;
}
void dat4ik_cilindri4eskii::vvod_dannih_iz_faila(char*s)
{
ifstream fin(s);
if (!fin)
{
cout<<"Izvinite, no k sogaleniju fail '"<<s<<"' ne otkrilsja."<<endl;
exit(1);
}
fin>>E;
fin>>H;
fin>>h;
fin>>d1;
fin>>d2;
}
void dat4ik_cilindri4eskii::vi4islenie_C_ksi()
{
C=0.6*(H+(E-1)*h)/(log(d2/d1));
ksi=0.56*(E-1)/(log(d2/d1));
}
void dat4ik_cilindri4eskii::vivod_v_fail_rezyltatov(char*s)
{
ofstream fout(s);
fout<<"Ishodanie dannie:"<<endl;
fout<<" E="<<E<<endl;
fout<<" H="<<H<<endl;
fout<<" h="<<h<<endl;
fout<<" d1="<<d1<<endl;
fout<<" d2="<<d2<<endl<<endl;
fout<<"Rezyltati:"<<endl;
fout<<"V cilindri4eskom dat4ike C="<<C<<endl;
fout<<"V cilindri4eskom dat4ike Ksi="<<ksi<<endl;
}
void dat4ik_cilindri4eskii::vivod_na_ekran_rezylatov()
{
cout<<" V cilindri4eskom dat4ike C="<<C<<endl;
cout<<" V cilindri4eskom dat4ike Ksi="<<ksi<<endl<<endl;
}
dat4ik_cilindri4eskii&dat4ik_cilindri4eskii::operator=(const dat4ik_cilindri4eskii&b)
{
E=b.E;
H=b.H;
h=b.h;
d1=b.d1;
d2=b.d2;
return *this;
}
void main()
{
dat4ik_ploskii x, x_ymol4aniju(E_ymol4aniju_p, S_ymol4aniju, d_ymol4aniju, delta_ymol4aniju),x_kopirivanie(x_ymol4aniju),x_prisvaivanie;
dat4ik_cilindri4eskii y,y_ymol4aniju(E_ymol4aniju_c ,H_ymol4aniju, h_ymol4aniju, d1_ymol4aniju, d2_ymol4aniju),y_kopirivanie(y_ymol4aniju),y_prisvaivanie;
//rabota s ploskim dat4ikom
cout<<"Ploskii dat4ik"<<endl<<endl;
cout<<"Dannie vzjati iz faila"<<endl;
x.vvod_dannih_iz_faila("polihlor.txt");
x.vi4islenie_C_ksi();
x.vivod_v_fail_rezyltatov("rez_p.txt");
x.vivod_na_ekran_rezylatov();
cout<<"Dannie vzjati po ymol4aniju"<<endl;
x_ymol4aniju.vi4islenie_C_ksi();
x_ymol4aniju.vivod_na_ekran_rezylatov();
cout<<"Dannie vzjati s pomowjiju konstryktora kopirovanija"<<endl;
x_kopirivanie.vi4islenie_C_ksi();
x_kopirivanie.vivod_na_ekran_rezylatov();
cout<<"Dannie vzjati s pomowjiju operacii prisvaivanija"<<endl;
x_prisvaivanie=x;
x_prisvaivanie.vi4islenie_C_ksi();
x_prisvaivanie.vivod_na_ekran_rezylatov();
getch();
//rabota s cilindri4eskim dat4ikom
cout<<"Cilindri4eskiii dat4ik"<<endl<<endl;
cout<<"Dannie vzjati iz faila"<<endl;
y.vvod_dannih_iz_faila("voda.txt");
y.vi4islenie_C_ksi();
y.vivod_v_fail_rezyltatov("rez_v.txt");
y.vivod_na_ekran_rezylatov();
cout<<"Dannie vzjati po ymol4aniju"<<endl;
y_ymol4aniju.vi4islenie_C_ksi();
y_ymol4aniju.vivod_na_ekran_rezylatov();
cout<<"Dannie vzjati s pomowjiju konstryktora kopirovanija"<<endl;
y_kopirivanie.vi4islenie_C_ksi();
y_kopirivanie.vivod_na_ekran_rezylatov();
cout<<"Dannie vzjati s pomowjiju operacii prisvaivanija"<<endl;
y_prisvaivanie=y;
y_prisvaivanie.vi4islenie_C_ksi();
y_prisvaivanie.vivod_na_ekran_rezylatov();
getch();
}
Результаты в виде таблиц и графиков.
Плоский датчик
Исходные данные:
E=3.4
d=5 см
delta=1 см
S=9 см2
Результаты программы:
Результаты в Excel:
Е= |
3,4 |
C= |
0,18653425 |
|
d= |
5 |
ksi= |
0,03066316 |
|
delta= |
1 |
|||
S= |
9 |
Цилиндрический датчик
Исходные данные
E=80
H=100
h=50
d1=5
d2=10
Результаты программы:
Результаты в Excel:
E= |
80 |
C= |
3505,74895 |
|
H= |
100 |
ksi= |
63,8248286 |
|
h= |
50 |
|||
d1= |
5 |
|||
d2= |
10 |
Выводы
Выполняя курсовую работу, разработан алгоритм программы на языке Си++, которая вычисляет значения ёмкости и чувствительности плоского и цилиндрического датчиков.
Исходные данные берутся из файлов «polihlor.txt» и «voda.txt» соответственно.
Результаты программы заносятся в файлы «REZ_P.txt» и «REZ_V.txt» соответственно.
Работоспособность алгоритма и программы проверена на контрольных примерах.
Список использованной литературы
1. Курс дистанционного бучения по предмету «Системное программирование». Авраменко Виктор Васильевич
2. «Язык программирования C++. Специальное издание» Страуструп Б.
3. «Дизайн и эволюция C++» Страуструп Б.
Размещено на Allbest.ru
Подобные документы
Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.
курсовая работа [742,6 K], добавлен 03.07.2011Использование класса статических массивов структур и базы данных "ODER" при создании программы на языке С++. Основные формы выдачи результатов. Технические и программные средства. Тесты для проверки работоспособности алгоритма создания программы.
курсовая работа [1,1 M], добавлен 17.03.2015Характеристика и описание массива структур из 3-х элементов. Блок-схемы главной функции main и текст программы на языке Си. Построение графика изменения напряженности поля заряженной частицы. Таблица символических имен, работоспособность программы.
курсовая работа [365,8 K], добавлен 02.02.2010Разработка программы, которая по заданной самостоятельно функции будет выполнять интегрирование методом прямоугольников. Блок-схема алгоритма вычисления интеграла (функция rectangle_integrate). Экспериментальная проверка программы, ее текст на языке C.
курсовая работа [232,0 K], добавлен 27.05.2013Этапы процедуры принятия решений. Разработка математического алгоритма. Блок-схема алгоритма работы программы. Разработка программы на языке программирования С++ в среде разработки MFC. Текст программы определения технического состояния станка с ЧПУ.
курсовая работа [823,0 K], добавлен 18.12.2011Разработка алгоритма и написание программы на языке Turbo Pascal. Построение электронных таблиц, отражающих расчеты за услуги фирмы. Вычисление значения функций и построение их графиков в Excel в одной системе координат. Порядок создания Web-страниц.
курсовая работа [1,9 M], добавлен 18.12.2012Разработка и тестирование программы класса Точка. Спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров функций программы. Текст программы на языке C++. Особенности тестирования программы.
лабораторная работа [43,1 K], добавлен 21.07.2012Выбор метода проектирования транслятора с языка Паскаль на язык Си, разработка и кодирование алгоритма программы. Использование допустимых операторов в исходном тексте, определение типов переменных и синтаксиса логических и арифметических выражений.
курсовая работа [1,0 M], добавлен 03.07.2011Создание транслятора, обрабатывающего код программы на языке Паскаль и за счет эквивалентных операторов генерирующего программу на Си. Особенности внешней спецификации и работы лексического анализатора. Структура программы, вывод результатов на экран.
курсовая работа [254,0 K], добавлен 02.07.2011Введение в объектно-ориентированное программирование. Постановка задачи. Описание алгоритма решения в псевдокоде (команды в виде текста на русском языке). Исходный текст программы на С. Тестирование программы. Модификация программы. Полиморфизм.
курсовая работа [294,0 K], добавлен 08.09.2008