Разработка программного модуля

Двухполюсник с определённым значением ёмкости и малой проводимостью, устройство для накопления заряда и энергии электрического поля. Структурная диаграмма программного модуля. График экспоненты и касательной к ней. Блок-схема алгоритма метода Рунге-Кутта.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 05.06.2014
Размер файла 604,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Содержание

электрический заряд программный модуль

Введение

1. Техническое задание

1.1 Анализ предметной области

1.2 Описание метода решения задачи

2. Описание программы

2.1 Общие сведения

2.2 Функциональное назначение

2.3 Описание логической структуры

2.4 Используемые технические средства

2.5 Вызов и загрузка

2.6 Входные данные

2.7 Выходные данные

3. Руководство оператора

3.1 Назначение программы

3.2 Условия выполнения программы

3.3 Выполнение программы

3.4 Сообщения оператору

4. Тестирование

Заключение

Список использованных источников

Приложение А

Введение

В данном курсовом проекте разработанная программа реализовывает решение дифференциального уравнения методом Рунге-Кутта. Программа решает уравнение с исходными параметрами, которые по желанию пользователя можно изменить. Также возможен ввод исходных данных с клавиатуры или из двоичного файла. Решение уравнения выводится либо в консоль, либо в текстовый файл, по запросу пользователя. В конце программа по желанию пользователя рисует график уравнения в MS Office Excel.

В первом разделе рассмотрено техническое задание (анализ предметной области и описание метода решения задачи).

Во втором разделе рассмотрено описание программы.

В третьем разделе рассмотрено руководство оператора.

В четвёртом разделе проводится тестирование программы.

Алгоритм программы реализован в среде SharpDevelop 5.0.

1. Техническое задание

1.1 Анализ предметной области

Конденсатор (от лат. сondensare - «уплотнять», «сгущать») - двухполюсник с определённым значением ёмкости и малой проводимостью, устройство для накопления заряда и энергии электрического поля. Конденсатор является пассивным электронным компонентом. В простейшем варианте конструкция состоит из двух электродов в форме пластин (называемых обкладками), разделённых диэлектриком, толщина которого мала по сравнению с размерами обкладок. Практически применяемые конденсаторы имеют много слоёв диэлектрика и многослойные электроды, или ленты чередующихся диэлектрика и электродов, свёрнутые в цилиндр или параллелепипед со скруглёнными четырьмя рёбрами (из-за намотки).

Схема конденсатора представлена на рисунке 1.

Рисунок 1. Схема установки

Зарядим разряженный конденсатор емкостью С путем перевода переключателя П в положение 1 (см рисунок 1) до некоторого напряжения Uco

Uc= Uco (1)

В частности, при бесконечно большом времени зарядки t Uco= е.

Затем переключатель П мгновенно перевести в положение 2, и конденсатор разряжается через сопротивление R. Введем следующие обозначения:

Uc - мгновенное значение напряжения на конденсаторе;

Uco - напряжение на конденсаторе при начале разрядки;

UR - мгновенное значение напряжения на сопротивлении;

i - мгновенное значение тока в цепи;

q - заряд на обкладке конденсатора.

UR = Ri = R * (dq/dt)

UC = (1/C)q (2)

Напомним второй закон Кирхгофа: в любом контуре алгебраическая сумма ЭДС равна алгебраической сумме напряжений на сопротивлениях, входящих в этот контур. Поэтому можно записать

UR + UC = 0 (3)

Из уравнений (2) и (3) получим

R* (dq/dt) + (1/C)q=0

Преобразуем это уравнение к следующему виду

(dq/dt)+ (1/RC)q=0 (4)

Уравнение (4) представляет собой линейное однородное дифференциальное уравнение 1-го порядка. Его легко проинтегрировать, разделив переменные, т.е. записав в виде

dq/q = - (1/RC) dt

откуда следует

? (1 / q) * dq = - ? (1/RC) * dt

Взяв интегралы, получим

lg q = - (t/RC) + ln const

Имея в виду дальнейшие преобразования, мы постоянную интегрирования написали в виде ln const.

Потенцирование этого соотношения дает

(q / const) = e - (t / RC)

Отсюда

q = const * e - (t / RC) (5)

Выражение (5) является общим решением уравнения (4). Значение const найдем из начальных условий. При t = 0 из (1) и (2) получим

q = UcoC

После подстановки полученного выражения в уравнение (5) получим:

UcoC = const * e - (0 / RC) = const 1

Поэтому уравнение (5) может быть представлено в следующем виде:

q = UcoC * C * e - (t / RC)

Разделив левую и правую части этого уравнения на С с учетом (2) можно записать

UC = Uco * e - (t / RC) (6)

Из (6) следует, что при коротком замыкании цепи R, С напряжение на конденсаторе убывает по экспоненциальному закону от Uco при t = 0 от 0 при t=?. Теоретически UC будет всегда больше нуля, т. к. t всегда конечная величина.

При полной разрядке конденсатора (при нулевом показании вольтметра, измеряющего напряжение на конденсаторе) мгновенно переключим переключатель П в положение 1 (см. рисунок 1).

По второму закону Кирхгофа можно записать:

UR + UC = е (7)

Получим:

R * (dq / dt) + (1 / C) * q = е

Преобразуем это уравнение к следующему виду:

(dq / dt) + (1 / RC) * q = е / R (8)

Уравнение (8) представляет собой линейное неоднородное дифференциальное уравнение 1-го порядка. Как известно из теории дифференциальных уравнений, общее решение линейного неоднородного дифференциального уравнения можно получить, прибавив любое его частное решение к общему решению соответствующего однородного уравнения. Уравнение (5) дает общее решение однородного уравнения. Частное решение получим из условия, что конденсатор заряжается до напряжения UС = е при бесконечно большом времени зарядки t. Поэтому

qчастн = е * C (9)

Сложив (5) и (9), получим

q = е * C + const * e - (t / RC) (10)

Найдем const из начального условия при t = 0, UC = 0, q = 0.

0 = е * C - е * C * e - (t / RC)

const = е * C

Тогда из (10) будем иметь:

q = е * C - е * C * e - (t / RC)

Разделив это уравнение на С, с учетом (2), запишем:

UС = е (1 - e - (t / RC)) (11)

Из уравнений (6) и (11) следует, что напряжение на емкости изменяется по экспоненциальному закону. Напряжение уменьшается или возрастает тем медленнее, чем больше произведение RС. Поэтому произведение RС называют постоянной времени и обозначают буквой ф (тау).

ф = RС (12)

Найдем физический смысл постоянной времени ф. В соответствии с (6)

(UC / UC (t + ф)) = (UCO * e - (t / RC)) / (UCO * e - (t+ф ) / (RC)) = e (ф / RC) =e (RC / RC) = e

Следовательно, ф - это время, за которое напряжение на конденсаторе уменьшится в е раз.

Постоянную времени ф называют также временем релаксации (от латинского «relaxatio» - ослабление, уменьшение напряжения).

Найдем уравнение касательной к экспоненте (6) с учетом (12).

dUC / dt = UCO * e - (t / ф) * (- (l / ф)) = - UC / ф = tg б

Экспонента и касательная к ней в момент t показаны на рисунке 2.

Рисунок 2. График экспоненты и касательной к ней

Из рисунка 2 следует, что ф - это время, за которое напряжение на конденсаторе достигло бы установившегося значения UC=0, если с момента t скорость изменения напряжения на конденсаторе не изменялась бы.

1.2 Описание метода решения задачи

Метод Рунге-Кутта - численный алгоритм решения обыкновенных дифференциальных уравнений и их систем. Данный итеративные метод явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М.В. Куттой.

Формально, методом Рунге - Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка.

Метод Рунге - Кутты четвёртого порядка столь широко распространён, что его часто называют просто методом Рунге -- Кутты.

Рассмотрим задачу Коши:

(13)

Тогда приближенное значение в последующих точках вычисляется по итерационной формуле:

(14)

Вычисление нового значения проходит в четыре стадии:

,

,

,

, (15)

где h -- величина шага сетки по x.

Этот метод имеет четвёртый порядок точности, то есть суммарная ошибка на конечном интервале интегрирования имеет порядок O(h4) (ошибка на каждом шаге порядка O(h5)).

2. Описание программы

2.1 Общие сведения

Продукт разработан в среде SharpDevelop 5.0. Для успешного запуска программы на компьютере должна быть установлена среда .NET Framework 4.5. Также на компьютере должен быть установлен пакет MS Office (2003 или выше), для запуска построения графика в Excel. Программа написана на языке программирования C#.

2.2 Функциональное назначение

Программа предназначена для решения дифференциального уравнения методом Рунге-Кутта, в соответствии с темой курсового проекта, с возможностью корректировать или изменять исходные данные. В конце программа строит график уравнения в среде Microsoft Office Excel.

2.3 Описание логической структуры

Программа содержит в себе следующие методы:

static void Main(string[] args) - главный метод программы, в нём производится вызов других методов;

static void title() - метод выводит в консоль экран-приветствие с информацией об теме курсового проекта и об исполнителе;

static void menu() - метод выводит главное меню программы, с последующим вызовом остальных методов;

static double f(double x, double y) - метод, возвращающий значение дифференциального уравнения в заданной точке;

Параметры метода f:

x - независимая переменная x,

y - зависимая переменная y.

static double function(double x) - метод, возвращающий значение аналитического решения в заданной точке;

Параметры метода function:

x - значение аргумента функции.

static void mrk(int viv) - метод решает дифференциальное уравнение методом Рунге-Кутта и выводит результат;

Параметры метода mrk:

viv - параметр для выбора, куда выводить данные.

static void create() - метод для создания двоичного файла с исходными данными, введёнными пользователем;

static void grafik() - метод, который строит график уравнения в MS Office Excel;

static int vvod_int(int an, int bn) - метод для ввода пунктов меню, обеспечивающий контроль ввода данных;

Параметры метода vvod_int:

an - начальный пункт меню;

bn - конечный пункт меню.

static double vvod_double() - метод для ввода вещественных чисел, обеспечивающий контроль ввода;

static void vvod() - метод для ввода исходных данных пользователем с клавиатуры.

static void vvodf() - метод для считывания исходных данных уравнения из двоичного файла.

Структурная диаграмма программного модуля представлена на рисунке 3.

Рисунок 3. Структурная диаграмма программного модуля

Ниже приводится блок-схема алгоритма решения уравнения.

Блок-схема алгоритма метода Рунге-Кутта представлена на рисунке 4 (метод mrk()).

Рисунок 4. Блок-схема алгоритма метода Рунге-Кутта (метод mrk())

2.4 Используемые технические средства

Программа выполняется на персональном компьютере с операционной системой Windows. Для запуска программы необходима установленная среда .NET Framework 4.5.

2.5 Вызов и загрузка

Для запуска программы необходимо запустить файл Kursovaya.exe из папки Debug.

2.6 Входные данные

Входные данные представлены в таблице 1.

Таблица 1. Описание входных данных

Назначение элемента

Обозначение в программе

Тип

Диапазон допустимых значений

Сопротивление резистора

R

double

2.2e-308 … 1.8e308

Ёмкость конденсатора

C

double

2.2e-308 … 1.8e308

Заряд батареи

V

double

2.2e-308 … 1.8e308

Момент времени t начальное

t0

double

2.2e-308 … 1.8e308

Заряд конденсатора q в момент времени t = 0

q0

double

2.2e-308 … 1.8e308

Начало интервала

a

double

2.2e-308 … 1.8e308

Конец интервала

b

double

2.2e-308 … 1.8e308

2.7 Выходные данные

Выходные данные представлены в таблице 2.

Таблица 2. Описание выходных данных

Назначение элемента

Обозначение в программе

Тип

Диапазон допустимых значений

Момент времени t

t

double

2.2e-308 … 1.8e308

Заряд конденсатора q в момент времени t

q

double

2.2e-308 … 1.8e308

Точное значение заряда конденсатора

function(t)

double

2.2e-308 … 1.8e308

3. Руководство оператора

3.1 Назначение программы

Программа предназначена для решения дифференциального уравнения из задания курсового проекта методом Рунге-Кутта, с выводом результата в консоль или в текстовый файл. Также программа рисует график уравнения в MS Office Excel.

3.2 Условия выполнения программы

Для успешного запуска программы на компьютере должна быть установлена OC Windows (XP или выше), со средой .NET Framework 4.5. Также на компьютере должен быть установлен пакет MS Office (2003 или выше), для запуска построения графика в Excel.

3.3 Выполнение программы

Для выполнения программы запустите файл Kursovaya.exe. После запуска программы откроется консольное окно с приветствием (см. рисунок 5).

Рисунок 5. Заставка-приветствие программы

После нажатия любой клавиши в окно выведется главное меню программы (рисунок 6).

Рисунок 6. Главное меню программы

Далее необходимо выбрать нужное вам действие. Для решения уравнения с исходными данными по умолчанию (из задания) необходимо выбрать пункт 1 (рисунок 7).

Рисунок 7. Решение уравнения с иходными данными по умолчанию

Чтобы произвети корректировку исходных данных нужно нажать 1, в противном случае 2 (рисунок 8).

Рисунок 8. Корректировка исходных данных

Для повторения процедуры корректирования выберите 1, для возврата к решению 2. Далее необходимо выбрать, куда выводить результат. Для вывода в консоль нужно выбрать 1, для записи результата в текстовый файл необходимо выбрать 2 (рисунок 9).

Рисунок 9. Выбор вывода результата

При выборе пункта 1 результаты вычислений будут выведены в консоль (рисунок 10).

Рисунок 10. Вывод результатов программы в консоль.

При выборе пункта 2 результаты будут записаны в файл result.txt (рисунок 11).

Рисунок 11. Содержимое файла result.txt

Далее необходимо выбрать, строить ли график в Excel. Для построения графика нужно выбрать 1, для отмены - 2 (рисунок 10). При выборе 1 откроется окно Excel с графиком уравнения (рисунок 12).

Рисунок 12. График уравнения в MS Office Excel

Далее программа вернётся в экран приветствие, откуда можно попасть в главное меню. Для ввода своих исходных данных необходимо выбрать 2. Откроется меню ввода исходных данных (рисунок 13).

Рисунок 13. Меню ввода исходных данных

Для ввода исходных данных с клавиатуры необходимо выбрать 1, для ввода из двоичного файла - 2 (но перед этим необходимо создать двоичный файл!). При выборе пункта 1 программа попросит вас ввести исходные данные (рисунок 14).

Рисунок 14. Ввод исходных данных

Дальнейшее выполнение программы описано выше.

Для создания двоичного файла с исходными данными выберите 3. Программа попросит вас ввести исходные данные, а потом запишет их в файл (рисунок 15).

Рисунок 15. Создание двоичного файла

Далее программа вернётся в меню выбора метода. Для выхода из программы нажмите 3.

3.4 Сообщения оператору

При вводе некорректных исходных данных программа выдаст соответствующую ошибку, и попросит вас заново ввести данные (рисунок 16).

Рисунок 16. Сообщение об ошибке.

Также присутствует контроль ввода пунктов меню. При выборе несуществующего пункта меня ничего не происходит, пока не введено правильное значение.

4. Тестирование

Полученное решение уравнения с исходными данными в программе (рисунок 17).

Рисунок 17. Результат выполнения программы.

Сравниваем полученное решение с решением в программе Mathcad (рисунок 18).

Рисунок 18. Решение уравнение в программе Mathcad

Решение уравнения в Matcad совпадает с полученным решением.

Заключение

В данном курсовом проекте был рассмотрен алгоритм решения дифференциального уравнения методом Рунге-Кутта. Получены навыки работы с дифференциальными уравнениями. Алгоритм программы реализован в среде SharpDevelop 5.0. Выполнены все пункты задания. В программе предусмотрена обработка ошибок ввода пользователя. Тестирование показало, что программа работает корректно.

Список использованных источников

1. Павловская, Т.А. C#. Программирование на языке высокого уровня/ Т.А. Павловская. - СПб.: Питер, 2009. - 512 с.

2. Троелсен, Э. C# и платформа .NET/ Э. Троелсен. - СПб: Питер, 2004. - 265 с.

3. Шилдт, Г. Полный справочник по C#/ Г. Шилдт. - Москва: Вильямс, 2004. - 476 с.

Приложение А

Текст программы

Functions.cs

using System;

using Excel = Microsoft.Office.Interop.Excel;

using System.Windows.Forms;

using System.IO;

namespace Kursovaya

{ /// <summary>

/// Description of Functions.

/// </summary>

public class Functions

{double R;

double C;

double V;

double t0 = 0;

double q0 = 0;

double q;

double t;

double a = 0;

double b = 0.05;

public Functions()

{t0 = 0;

q0 = 0;

a = 0;

b = 0.05;

} public void title()

{Console.Clear();

Console.Title = "Якубов А. Г. Курсовая работа";

Console.WriteLine("\n\n\n\n\n\n\n\t\t\t\tКурсовая работа\n\n\t\t\t\tМетод Рунге-Кутта" + "\n\n\t\t\t\tВариант 21\n\t\t\t\t\t\t\t\tЯкубов А. Г.\n\t\t\t\t\t\t\t\tАСОИ - 131");

Console.Write("\n\n\n\n\n\n\t\t\tНажмите для продолжения...");

Console.ReadKey();

menu();

}

void menu()

{

Console.Clear();

Console.WriteLine("Выберите действие\n\t1. Решить уравнение с исходными данными\n\t2. Ввод исходных данных\n" + "\t3. Создать двоичный файл\n\t4. Выход");

Console.Write("Ваш выбор: ");

int p = vvod_int(1, 4);

if (p == 1)

{Console.WriteLine("Произвести корректировку исходных данных?\n" + "\t1. Да\n\t2. Нет\n\t3. Назад");

Console.Write("Ваш выбор: ");

int p1 = vvod_int(1, 3);

if (p1 == 1)

{int p2 = 1;

while (p2 == 1)

{

Console.Write("Введите R: ");

R = vvod_double();

Console.Write("Введите С: ");

C = vvod_double();

Console.Write("Введите V: ");

V = vvod_double();

Console.WriteLine("Произвести корректировку ещё раз?:\n" + "\t1. Да\n\t2. Нет");

Console.Write("Ваш выбор: ");

p2 = vvod_int(1, 2);

}

}

else if (p1 == 2)

{

R = 1000;

C = 0.00001;

V = 10;

}

else if (p1 == 3)

{

menu();

}

Console.WriteLine("Куда произвести вывод данных?\n" + "\t1. В консоль\n\t2. В текстовый файл\n\t3. Назад");

Console.Write("Ваш выбор: ");

p1 = vvod_int(1, 3);

if (p1 == 1)

{

mrk(1);

}

else if (p1 == 2)

{

mrk(2);

}

else if (p1 == 3)

{

menu();

}

}

else if (p == 2)

{

Console.WriteLine("Выберите действие:\n\t1. Ввод данных с клавиатуры\n" + "\t2. Ввод данных из двоичного файла\n\t3. Назад");

Console.Write("Ваш выбор: ");

int p1 = vvod_int(1, 3);

if (p1 == 1)

{

vvod();

Console.WriteLine("Куда произвести вывод данных?\n" + "\t1. В консоль\n\t2. В текстовый файл\n\t3. Назад");

Console.Write("Ваш выбор: ");

int p2 = vvod_int(1, 3);

if (p2 == 1)

{

mrk(1);

}

else if (p2 == 2)

{

mrk(2);

}

else if (p2 == 3)

{

menu();

}

}

else if (p1 == 2)

{

vvodf();

Console.WriteLine("Куда произвести вывод данных?\n" + "\t1. В консоль\n\t2. В текстовый файл\n\t3. Назад");

Console.Write("Ваш выбор: ");

int p2 = vvod_int(1, 3);

if (p2 == 1)

{

mrk(1);

}

else if (p2 == 2)

{

mrk(2);

}

else if (p2 == 3)

{

menu();

}

}

else if (p1 == 3)

{

menu();

}

}

else if (p == 3)

{

create();

}

else if (p == 4)

{

Environment.Exit(0);

}

Console.ReadKey();

}

double f(double x, double y)

{

return V / R - y / (R * C);

}

double function(double x)

{

return C *V * (1 - Math.Exp(-x / (R * C)));

}

void vvod()

{

Console.Write("Введите R: ");

R = vvod_double();

Console.Write("Введите С: ");

C = vvod_double();

Console.Write("Введите V: ");

V = vvod_double();

}

void vvodf()

{

try

{

FileStream file = new FileStream("data.bin", FileMode.Open);

BinaryReader br = new BinaryReader(file);

R = br.ReadDouble();

C = br.ReadDouble();

V = br.ReadDouble();

br.Close();

file.Close();

Console.WriteLine("R = "+ R + "\tC = " + C + "\tV = " + V);

}

catch

{

Console.WriteLine("Сначала создайте двоичный файл!");

Console.ReadKey();

menu();

}

}

void create()

{

FileStream file = new FileStream("data.bin", FileMode.Create);

BinaryWriter bw = new BinaryWriter(file);

Console.Write("Введите R: ");

R = vvod_double();

Console.Write("Введите С: ");

C = vvod_double();

Console.Write("Введите V: ");

V = vvod_double();

bw.Write(R);

bw.Write(C);

bw.Write(V);

bw.Close();

file.Close();

R = C = V = 0;

Console.WriteLine("Исходные данные успешно записаны в двоичный файл!\n");

Console.Write("\t\t\tНажмите любую клавишу...");

Console.ReadKey();

menu();

}

void grafik()

{

Console.WriteLine("Построить граффик?\n\t1. Да\n\t2. Нет");

Console.Write("Ваш выбор: ");

int g = vvod_int(1, 2);

if (g == 1)

{

FileStream file = new FileStream("excel.txt", FileMode.Create);

StreamWriter str = new StreamWriter(file);

double x1;

for (x1 = a; x1 <= b; x1 += (b-a)/10)

{

str.WriteLine("{0}", x1.ToString().Replace(",", "."));

str.WriteLine("{0}", function(x1).ToString().Replace(",", "."));

}

str.Close();

file.Close();

Excel.ApplicationClass ex = new Excel.ApplicationClass();

ex.Visible = true;

string filename = System.Windows.Forms.Application.StartupPath + "\\таблица.xls";

ex.Workbooks.Open(filename);

Console.WriteLine("График успешно построен!");

Console.Write("\n\n\n\t\t\tНажмите для продолжения...");

Console.ReadKey();

title();

}

else

title();

}

static int vvod_int(int an, int bn)

while(true)

{

try

{

int p;

do

{

p = Convert.ToInt32(Console.ReadLine());

}

while(!(p >= an && p <= bn));

return p;

}

catch

{

Console.WriteLine("Введите целое число от " + an + " до " + bn + "!");

}

}

}

static double vvod_double()

{

while(true)

{

try

{

double p;

p = Convert.ToDouble(Console.ReadLine());

return p;

}

catch

{

Console.WriteLine("Введите вещественное число!");

}

}

}

void mrk(int viv)

{

FileStream file = new FileStream("result.txt", FileMode.Create);

StreamWriter str = new StreamWriter(file);

if (viv == 2)

{

str.WriteLine("R = " + R);

str.WriteLine("C = " + C);

str.WriteLine("V = " + V);

}

t = t0;

q = q0;

double i = 1;

double h;

double k1;

double k2;

double k3;

double k4;

h = (b - a) / 10;

if (viv == 1)

{

Console.WriteLine("t\t\tq\t\t\tТочное решение");

Console.WriteLine("t = {0:0.000}\tq = {1:0.00000000}\t\t{2:0.00000000}", t, q, function(t));

}

if (viv == 2)

{

str.WriteLine("t\t\tq\t\t\tТочное решение");

str.WriteLine("t = {0:0.000}\tq = {1:0.00000000}\t\t{2:0.00000000}", t, q, function(t));

}

do

{

k1 = f(t, q);

k2 = f(t+h/2, q+k1*h/2);

k3 = f(t+h/2, q+k2*h/2);

k4 = f(t+h,q+h*k3);

q += (k1+2*k2+2*k3+k4)*h/6;

t += h;

if (viv == 1)

Console.WriteLine("t = {0:0.000}\tq = {1:0.00000000}\t\t{2:0.00000000}", t, q, function(t));

if (viv == 2) str.WriteLine("t = {0:0.000}\tq = {1:0.00000000}\t\t{2:0.00000000}", t, q, function(t));

i++;

}

while( i <= 10 );

str.Close();

file.Close();

if (viv == 2)

{

Console.WriteLine("Результат успешно записан в файл!");

}

grafik();

}

}

}

Program.cs

using System;

using System.Windows.Forms;

using System.IO;

namespace Kursovaya

{

class Program

{

public static void Main(string[] args)

{

while(true)

{

//title();

Functions obj = new Functions();

obj.title();

}

}

}

}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.