Разработка алгоритма программы на языке С++, которая вычисляет значения емкости и чувствительности плоского и цилиндрического датчиков

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    750,32 Кб
  • Опубликовано:
    2012-10-08
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка алгоритма программы на языке С++, которая вычисляет значения емкости и чувствительности плоского и цилиндрического датчиков

Постановка задачи

В измерительной технике широко используются датчики ёмкости. Так для измерения толщины тонкой ленты из диэлектрика применяется плоскопараллельный датчик.

Его ёмкость вычисляется по формуле:


где

 - ёмкость датчика(ПФ)

 - расстояние между обложками конденсатора (см)

 - толщина ленты (см)

 - относительная диэлектрическая проницаемость материала ленты.

 - площадь обложек конденсатора (см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 обнуляются.

Конструктор с инициализацией. Параметрам 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'dat4ik

{:C;ksi;E;//zadano v faile:void vvod_dannih_iz_faila(char*s)=0;void vi4islenie_C_ksi()=0;void vivod_v_fail_rezyltatov(char*s)=0;void vivod_na_ekran_rezylatov()=0;

//Proizvodnii klass 'Dat4ik_ploskii'dat4ik_ploskii:public dat4ik

{:S; //zadano v failed; //zadano v failedelta;//zadano v faile:ik_ploskii();ik_ploskii(float E_ymol4a,float S_ymol4a, float d_ymol4a, float delta_ymol4a);ik_ploskii(dat4ik_ploskii &a);void vvod_dannih_iz_faila(char*s);void vi4islenie_C_ksi();void vivod_v_fail_rezyltatov(char*s);void vivod_na_ekran_rezylatov();ik_ploskii&operator=(const dat4ik_ploskii&a);

};ik_ploskii::dat4ik_ploskii()

{=0;=0;=0;=0;=0;=0;

}ik_ploskii::dat4ik_ploskii(float E_ymol4a,float S_ymol4a, float d_ymol4a, float delta_ymol4a)

{=E_ymol4a;=S_ymol4a;=d_ymol4a;=delta_ymol4a;=0;=0;

}ik_ploskii::dat4ik_ploskii(dat4ik_ploskii &a)

{=a.E;=a.S;=a.d;=a.delta;

}dat4ik_ploskii::vvod_dannih_iz_faila(char*s)

{fin(s);(!fin)

{<<"Izvinite, no k sogaleniju fail '"<<s<<"' ne otkrilsja."<<endl;(1);

}>>E;>>d;>>delta;>>S;

}dat4ik_ploskii::vi4islenie_C_ksi()

{=0.089*S/(d-(1-1/E)*delta);=0.089*S*(1-1/E)/pow( (d- (1-1/E)* delta) ,2);

}dat4ik_ploskii::vivod_v_fail_rezyltatov(char*s)

{fout(s);<<"Ishodanie dannie:"<<endl;<<" E="<<E<<endl;<<" S="<<S<<endl;<<" d="<<d<<endl;<<" delta="<<delta<<endl<<endl;<<"Rezyltati:"<<endl;<<" V ploskom dat4ike C="<<C<<endl;<<" V ploskom dat4ike Ksi="<<ksi<<endl;

}dat4ik_ploskii::vivod_na_ekran_rezylatov()

{<<" V ploskom dat4ike C="<<C<<endl;<<" V ploskom dat4ike Ksi="<<ksi<<endl<<endl;

}ik_ploskii&dat4ik_ploskii::operator=(const dat4ik_ploskii&a)

{=a.E;=a.S;=a.d;=a.delta;*this;

}

//Proizvodnii klass 'Dat4ik_cilindri4eskii'dat4ik_cilindri4eskii:public dat4ik

{:H; //zadano v faileh; //zadano v failed1,d2;//zadano v faile:ik_cilindri4eskii();ik_cilindri4eskii(float E_ymol4a,float H_ymol4a, float h_ymol4a, float d1_ymol4a,float d2_ymol4a);ik_cilindri4eskii(dat4ik_cilindri4eskii &b);void vvod_dannih_iz_faila(char*s);void vi4islenie_C_ksi();void vivod_v_fail_rezyltatov(char*s);void vivod_na_ekran_rezylatov();ik_cilindri4eskii&operator=(const dat4ik_cilindri4eskii&b);

};ik_cilindri4eskii::dat4ik_cilindri4eskii()

{=0;=0;=0;=0;=0;=0;=0;

}ik_cilindri4eskii::dat4ik_cilindri4eskii(float E_ymol4a,float H_ymol4a, float h_ymol4a, float d1_ymol4a,float d2_ymol4a)

{=E_ymol4a;=H_ymol4a;=h_ymol4a;=d1_ymol4a;=d2_ymol4a;=0;=0;

}ik_cilindri4eskii::dat4ik_cilindri4eskii(dat4ik_cilindri4eskii &b)

{=b.E;=b.H;=b.h;=b.d1;=b.d2;

}dat4ik_cilindri4eskii::vvod_dannih_iz_faila(char*s)

{fin(s);(!fin)

{<<"Izvinite, no k sogaleniju fail '"<<s<<"' ne otkrilsja."<<endl;(1);

}>>E;>>H;>>h;>>d1;>>d2;

}dat4ik_cilindri4eskii::vi4islenie_C_ksi()

{=0.6*(H+(E-1)*h)/(log(d2/d1));=0.56*(E-1)/(log(d2/d1));

}dat4ik_cilindri4eskii::vivod_v_fail_rezyltatov(char*s)

{fout(s);<<"Ishodanie dannie:"<<endl;<<" E="<<E<<endl;<<" H="<<H<<endl;<<" h="<<h<<endl;<<" d1="<<d1<<endl;<<" d2="<<d2<<endl<<endl;<<"Rezyltati:"<<endl;<<"V cilindri4eskom dat4ike C="<<C<<endl;<<"V cilindri4eskom dat4ike Ksi="<<ksi<<endl;

}dat4ik_cilindri4eskii::vivod_na_ekran_rezylatov()

{<<" V cilindri4eskom dat4ike C="<<C<<endl;<<" V cilindri4eskom dat4ike Ksi="<<ksi<<endl<<endl;

}ik_cilindri4eskii&dat4ik_cilindri4eskii::operator=(const dat4ik_cilindri4eskii&b)

{=b.E;=b.H;=b.h;=b.d1;=b.d2;*this;

}main()

{ik_ploskii x, x_ymol4aniju(E_ymol4aniju_p, S_ymol4aniju, d_ymol4aniju, delta_ymol4aniju),x_kopirivanie(x_ymol4aniju),x_prisvaivanie;ik_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<<"Ploskii dat4ik"<<endl<<endl;<<"Dannie vzjati iz faila"<<endl;.vvod_dannih_iz_faila("polihlor.txt");.vi4islenie_C_ksi();.vivod_v_fail_rezyltatov("rez_p.txt");.vivod_na_ekran_rezylatov();<<"Dannie vzjati po ymol4aniju"<<endl;_ymol4aniju.vi4islenie_C_ksi();_ymol4aniju.vivod_na_ekran_rezylatov();<<"Dannie vzjati s pomowjiju konstryktora kopirovanija"<<endl;_kopirivanie.vi4islenie_C_ksi();_kopirivanie.vivod_na_ekran_rezylatov();<<"Dannie vzjati s pomowjiju operacii prisvaivanija"<<endl;_prisvaivanie=x;_prisvaivanie.vi4islenie_C_ksi();_prisvaivanie.vivod_na_ekran_rezylatov();();

//rabota s cilindri4eskim dat4ikom<<"Cilindri4eskiii dat4ik"<<endl<<endl;<<"Dannie vzjati iz faila"<<endl;.vvod_dannih_iz_faila("voda.txt");.vi4islenie_C_ksi();.vivod_v_fail_rezyltatov("rez_v.txt");.vivod_na_ekran_rezylatov();<<"Dannie vzjati po ymol4aniju"<<endl;_ymol4aniju.vi4islenie_C_ksi();_ymol4aniju.vivod_na_ekran_rezylatov();<<"Dannie vzjati s pomowjiju konstryktora kopirovanija"<<endl;_kopirivanie.vi4islenie_C_ksi();_kopirivanie.vivod_na_ekran_rezylatov();<<"Dannie vzjati s pomowjiju operacii prisvaivanija"<<endl;_prisvaivanie=y;_prisvaivanie.vi4islenie_C_ksi();_prisvaivanie.vivod_na_ekran_rezylatov();

getch();

}

Результаты в виде таблиц и графиков.

Плоский датчик

 

Исходные данные:

E=3.4

d=5 см=1 см=9 см2



Результаты программы:


Результаты в Excel:

Е=

3,4

C=

0,18653425

d=

5

ksi=

0,03066316

delta=

1



S=




Цилиндрический датчик

 

Исходные данные

E=80=100=50=5=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++. Специальное издание» Страуструп Б. <http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D1%83%D1%81%D1%82%D1%80%D1%83%D0%BF,_%D0%91%D1%8C%D1%91%D1%80%D0%BD>

3.         «Дизайн и эволюция C++» Страуструп Б. <http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D1%83%D1%81%D1%82%D1%80%D1%83%D0%BF,_%D0%91%D1%8C%D1%91%D1%80%D0%BD>

Похожие работы на - Разработка алгоритма программы на языке С++, которая вычисляет значения емкости и чувствительности плоского и цилиндрического датчиков

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!