Язык С++

Характеристика языка программирования С++. Описание классов и методов. Выполнение решения вычислительных процессов по заданным формулам. Создание диалогового приложения. Разработка инструкции пользователя. Операции над одномерными и двумерными массивами.

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

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

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

Таблица 6.1 - свойство элементы управления

Идентификатор

Caption

Disabled

IDC_EDIT3

-

True

IDC_BUTTON1

Посчитать по шаблону

-

IDC_BUTTON2

Посчитать через функцию

-

IDCANCEL

Выход

-

6.3 Описание методов и классов

В проект z5_v13 с помощью мастера ClassWizard был создан для диалоговых окн классы наследники класса CWinApp.

Класс z5_v13Dlg создан путем добавления переменных и методов:

OnButton1 () (выполняется переход на форму работы с конусом);

OnButton2 () (выполняется переход на форму работы с шаром);

Класс С1 создан путем добавления переменных и методов:

переменная h1 типа float; (высота для работы с конусом, связанный с EditBox1);

переменная r1 типа float; (радиус для работы с конусом, связанный с EditBox2);

переменная shar1 типа float; (выводит объем шара, связанный с EditBox4);

OnButton1 () (выполняет вычисление по формулам через шаблон);

OnButton2 () (выполняет вычисление по формулам через функцию);

Класс С2 создан путем добавления переменных и методов:

переменная r типа float; (радиус для работы с конусом, связанный с EditBox5);

переменная shar типа float; (выводит объем шара, связанный с EditBox3);

OnButton1 () (выполняет вычисление по формулам через шаблон);

OnButton2 () (выполняет вычисление по формулам через функцию);

Целью решения задач является расчет по формулам (6.1 и 6.2), которые рассматриваем как объекты.

Разрабатывается класс с именем "vichl" для объекта формула.

Итерфейс класса "vichl" (файл "vichl. h")

class Cvichl: public CObject // создаем новый класс

{float k, r, h;

public:

Cvichl ();

float ob (float);

float ob (float, float);

virtual ~Cvichl ();

const double P=3.1415926535897932384626433832795;

template <class L>L summa (L g, L r, L h)

{L p= (1.0/3.0) *P*pow (r,2) *h;

return (p); }

template <class T>T summa (T g, T r)

{T p= (4.0/3.0) *P*pow (k,3);

return (p); }

6.4 Программный код

Код приложения создан автоматически приложением MFC AppWizard. С помощью Class Wizard созданы обработчики событий. Данные обработчики представляют собой методы созданных классов.

Коды методов класса CZ5_V13Dlg

void CZ5_v13Dlg:: OnButton4 () // кнопочное меню

{C1 q;

q. DoModal (); }

void CZ5_v13Dlg:: OnButton5 () // кнопочное меню

{C2 q;

q. DoModal (); }

Коды методов класса С1

void C1:: OnButton1 () /*обработчик события на кнопку "Посчитать по шаблону*/

{UpdateData ();

if (r1<0) MessageBox ("Радиус не может быть меньше нуля!!!");

else if (h1<0) MessageBox ("Высота не может быть меньше нуля!!!");

else shar1= summa (h1, r1);

UpdateData (false); }

void C1:: OnButton2 ( () /*обработчик события на кнопку "Посчитать через функцию*/

{UpdateData ();

if (r1<0) MessageBox ("Радиус не может быть меньше нуля!!!");

else if (h1<0) MessageBox ("Высота не может быть меньше нуля!!!");

else shar1= z. ob (h1, r1);

UpdateData (false); }

Коды методов класса С2

void C2:: OnButton1 () /*обработчик события на кнопку "Посчитать по шаблону"*/

{UpdateData ();

if (r<0) MessageBox ("Радиус не может быть меньше нуля!!!");

else

shar=summa (r);

UpdateData (false); }

void C2:: OnButton2 () /*обработчик события на кнопку "Посчитать через функцию*/

{UpdateData ();

if (r<0) MessageBox ("Радиус не может быть меньше нуля!!!");

else

shar=z. ob (r);

UpdateData (false); }

Реализация класса "vichl" (файл "vichl. cpp")

float Cvichl:: ob (float k) // вычисление объема шара

{float q;

q= (4.0/3.0) *P*pow (k,3);

return (q); }

float Cvichl:: ob (float r, float h) // вычисление объема конуса

{float w;

w= (1.0/3.0) *P*pow (r,2) *h;

return (w); }

6.5 Инструкция пользователю

Для реализации задания 5 необходимо наличия файла z5_v13. exe.

Для осуществления работы с данным приложением, требуется запустить этот файл. На экране появится диалоговое окно с именем "Главное меню" (см. рисунок 6.1)

Рисунок 6.1 - диалоговое окно z5_v13

При выборе "Работа с конусом" откроется диалоговое окно с именем "Конус" (см. рисунок 6.2)

Рисунок 6.2 - Работа с конусом

Если введены не допустимые значения, выдаст сообщение (см. рисунок 6.2 и 6.3)

Рисунок 6.2 - ошибка о недопустимом значении высоты

Рисунок 6.3 - ошибка о недопустимом значении радиуса

При выборе "Работа с шаром" откроется диалоговое окно с именем "шар" (см. рисунок 6.4)

Рисунок 6.4 - Работа с шаром

6.6 Контрольный пример

Тест 1

Конус

Высота=3Радиус=2ответ=12,57

Шар

Радиус=5ответ=523,6

Тест 2

Конус

Высота=1Радиус=-1ответ = радиус не должна быть меньше нуля

Шар

Радиус=-1ответ = радиус не должна быть меньше нуля

Тест 3

Конус

Высота=3,78Радиус=0,25ответ=0,2474

Шар

Радиус=0,1ответ=0,004

7. Задание 6

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

Основная цель задания 6 состоит в создании приложения по обработке объектов (массивы и геометрические фигуры) с использованием иерархии классов.

В качестве объектов рассматривается динамические массивы.

Для этих объектов создается иерархия классов, один из которых является базовым (Mas1) и классы наследники (Mas2 и Mas3).

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

Входные данные (размерность массива, целочисленные значения-элементы массива) вводятся с экрана.

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

Обработка элементов массива реализуется с помощью методов класса.

В качестве объектов выступают геометрические фигуры (точка, прямая и треугольник), для которых определяются следующие параметры: вычисление длины прямой, вычисления периметра и площади треугольника. Для объектов создаётся иерархия классов. В качестве базового класса выступает точка, на основании которого строятся классы наследники, определяющие геометрические фигуры прямая и треугольник. Обработка выходных данных производится с помощью методов разработанных классов. Выходные данные (длина прямой, периметр треугольника и площадь треугольника) выводится на экран в вещественном типе одинарной точности в отформатированном виде. Входные данные вещественного типа одинарной точности (координаты точек) вводятся с экрана

7.2 Проектирование форм

Для реализации задания 6 создадим диалоговое приложение с помощью

MFC APPWizard, которое будет содержать одно основное диалоговое окно и два дополнительных.

Основное диалоговое окно с именем "Меню".

На основном диалоговом окне спроектируем кнопочное меню.

Кнопочное меню содержит 3 пункта "Первое", "Второе" и "Выход", создается с помощью CButton.

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

Таблица 7.1 - Свойства кнопок

Идентификатор кнопки

Свойство Caption

IDC_BUTTON1

Первое

IDC_BUTTON2

Второе

IDCANCEL

Выход

Диалоговое окно "Первое".

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

Для обозначения вводимых данных добавим четыре GroupBox.

Для выполнения расчета используются три кнопки CButton и две кнопки RadioButton, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств смотреть в таблице 7.2

Таблица 7.2-Свойства элементов управления

Идентификатор

Caption

Disabled

Soft

IDC_BUTTON1

Ввод

-

-

IDC_BUTTON3

Ввод

-

-

IDC_BUTTON4

Поиск

-

-

IDC_EDIT3

-

True

-

Продолжение таблицы 7.2

Идентификатор

Caption

Disabled

Soft

IDC_EDIT4

-

True

-

IDC_STATIC (GroupBox)

Размер

-

-

IDC_STATIC (GroupBox)

Ввод массив

-

-

IDC_STATIC (GroupBox)

Найти минимальный элемент

-

-

IDC_STATIC (GroupBox)

Поиск суммы четных и нечетных чисел

-

-

IDC_LIST1

-

-

False

Диалоговое окно "Второе".

Диалоговое окно служит для выполнения ввода исходных данных и вывода результата, полученных при решении второй задачи. Для этих целей добавим на форму девять Editbox. Для обозначения вводимых данных добавим четыре GroupBox и шесть StaticText.

Для выполнения расчета используются четыре кнопки CButton, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств смотреть в таблице 7.3

Таблица 7.3-Свойства элементов управления

Идентификатор

Caption

Disabled

IDC_BUTTON1

Ввод

-

IDC_BUTTON3

Длина

-

IDC_BUTTON4

Периметр

-

IDC_BUTTON5

Площадь

-

IDCANCEL

Выйти в главное меню

-

IDC_EDIT4

-

True

IDC_EDIT5

-

True

IDC_EDIT6

-

True

IDC_STATIC (GroupBox)

Ввод точек

-

IDC_STATIC (GroupBox)

Периметр

-

IDC_STATIC (GroupBox)

Длина прямой

-

IDC_STATIC (GroupBox)

Площадь

-

7.3 Описание методов и классов

В проект z6_v13 с помощью мастера ClassWizard был создан для диалогового окна классы наследники класса CWinApp.

Класс z6_v13Dlg создан путем добавление методов:

ON_BN_CLICKED (IDC_BUTTON1, OnButton1) (кнопочное меню "Первое")

ON_BN_CLICKED (IDC_BUTTON2, OnButton2) (кнопочное меню "Второе")

Класс C1 создан путем добавление переменных и методов:

переменная n типа int (вводится размер массива, связанный с EditBox1);

переменная m типа int (вводится элементы массива, связанный с EditBox2);

переменная min типа int (выводит минимальный элемент массива, связанный с EditBox3);

переменная summa типа int; (выводит сумму четных или нечетных чисел по выбору, связанный с EditBox4);

переменная lb типа CListBox (служит для вывода массива, связанный с ListBox);

Класс C2 создан путем добавление переменных и методов:

переменная x11 типа float (вводится координата точки, связанный с EditBox1);

переменная x22 типа float (вводится координата точки, связанный с EditBox7);

переменная x33 типа float (вводится координата точки, связанный с EditBox8);

переменная y11 типа float (вводится координата точки, связанный с EditBox2);

переменная y22 типа float (вводится координата точки, связанный с EditBox3);

переменная y33 типа float (вводится координата точки, связанный с EditBox9);

переменная pr типа float (выводится периметр, связанный с EditBox5);

переменная pl типа float (выводится площадь, связанный с EditBox6);

переменная dl типа float (выводится длина, связанный с EditBox4);

ON_BN_CLICKED (IDC_BUTTON5, OnButton5) (Найти площадь)

ON_BN_CLICKED (IDC_BUTTON1, OnButton1) (Ввод координат точек)

ON_BN_CLICKED (IDC_BUTTON3, OnButton3) (Найти длину)

ON_BN_CLICKED (IDC_BUTTON4, OnButton4) (Найти периметр)

В данном задании рассматриваем массив в виде объекта, поэтому создадим класс с именем "clas" и опишем его в файле "clas. h"

class Cclas: public CObject

{public: int *mas;

protected: int i, razm;

public:

Cclas ();

int Vvodmas (int);

void IMas (int);

virtual ~Cclas (); };

class Cmin: public Cclas

{int min;

public: int Min (); };

class Csum: public Cclas

{protected: int sum;

public:

int sum1 ();

int sum2 (); };

Сделаем реализацию класса clas и опишем его в файл "clas. cpp"

Cclas:: Cclas () // конструктор

{i=0; }

Cclas:: ~Cclas () // деструктор

{delete [] mas; }

void Cclas:: IMas (int n) // Виділення динамічної пам'яті массиву

{razm=n;

mas=new int [n];

i=0;

for (int j=0; j<n; j++) mas [j] =0; }

int Cclas:: Vvodmas (int m) // Формування значень массиву

{mas [i] =m;

i++;

return (i); }

int Cmin:: Min () // минимум

{min=999; // mas [0];

for (i=0; i<razm; i++)

if (mas [i] <min) min=mas [i];

return (min); }

int Csum:: sum1 () // нечетные

{sum=0;

for (i=0; i<razm; i++)

if (mas [i] %2==1) sum+=mas [i];

return (sum); }

int Csum:: sum2 () // четные

{sum=0;

for (i=0; i<razm; i++)

if (mas [i] %2==0) sum+=mas [i];

return (sum); }

В данном задании рассматриваем массив в виде объекта, поэтому создадим класс с именем "fig" и опишем его в файле "fig. h"

class Cfig: public CObject // создадим класс точки

{public: void vvod (float, float);

protected: float x1,y1;

public: Cfig ();

virtual ~Cfig (); };

class Cprm: public Cfig /* создадим класс прямая, базовый класс Cfig*/

{protected: float x2,y2, dl1;

public: float dl (float, float,float, float); };

class Ctrg: public Cprm/* создадим класс треугольник, базовый класс Cprm*/

{protected: float x3,y3, pl1,pr1;

public:

float pl ();

float pr (float,float); };

Сделаем реализацию классов и опишем его в файл "fig. cpp"

Cfig:: Cfig ()

{}

Cfig:: ~Cfig ()

{}

void Cfig:: vvod (float x11, float y11)

{x1=x11;

y1=y11; }

float Ctrg:: pl () // ПЛОЩАДЬ

{float a, b, c;

b=dl (x2,y2,x3,y3);

a=dl (x1,y1,x2,y2);

c=dl (x3,y3,x1,y1);

pl1=sqrt (pr1/2.0* (pr1/2.0-a) * (pr1/2.0-b) * (pr1/2.0-c));

return (pl1); }

float Ctrg:: pr (float x33, float y33) // ПЕРИМЕТР

{x3=x33, y3=y33;

pr1=pow (pow (x2-x1,2.0) +pow (y2-y1,2.0),1.0/2.0) +pow (pow (x3-x2,2.0) +pow (y3-y2,2.0),1.0/2.0) +pow (pow (x1-x3,2.0) +pow (y1-y3,2.0),1.0/2.0);

return (pr1); }

float Cprm:: dl (float x11, float y11,float x22, float y22)

{float x111=x11, y111=y11;

x2=x22; y2=y22;

dl1=pow (pow (x2-x111,2.0) +pow (y2-y111,2.0),1.0/2.0);

return (dl1); }

7.4 Программный код

Код приложения создан автоматически приложением MFCWizard. С помощью Class Wizard созданы обработчики событий для кнопок, спроектированных в каждом из диалоговых окон. Данные обработчики представляют собой методы созданных классов.

Коды методов класса CZ6_V13Dlg

void CZ6_v13Dlg:: OnButton1 () // кнопочное меню "Первое"

{C1 q;

q. DoModal (); }

void CZ6_v13Dlg:: OnButton2 () // кнопочное меню "Второе"

{C2 q;

q. DoModal (); }

Коды методов класса C1

void C1:: OnButton1 () // ввод размерности

{int n1;

h=0;

UpdateData ();

int q=lb. GetCount ();

if (n<1) MessageBox ("не меньше 1");

else {n1=n;

z. IMas (n1);

for (int j=0; j<q; j++)

lb. DeleteString (0);

summa=0;

min=0;

h++; }}

void C1:: OnButton3 () // ввод элементов в массив

{if (h==0) MessageBox ("Введите размерность для новых данных");

else{CString str1;

UpdateData ();

int rl=z. Vvodmas (m);

if (rl>n) MessageBox ("Введите размерность для новых данных");

else

{str1. Format ("%d",m);

lb. AddString (str1);

if (rl==n)

MessageBox ("Формування масиву закінчено"); }

h++;

UpdateData (false); }}

void C1:: OnButton4 () // поиск минимального

{if (h==0) MessageBox ("Введите массив для начала");

else

if (h<=n) MessageBox ("Закончите ввод");

else

min=z. Min ();

UpdateData (false); }

void C1:: OnRadio1 () // сумма нечетных

{if (h==0) MessageBox ("Введите массив для начала");

else

if (h<=n) MessageBox ("Закончите ввод");

else

summa=z. sum1 ();

UpdateData (false); }

void C1:: OnRadio2 () // сумма четных

{if (h==0) MessageBox ("Введите массив для начала");

else

if (h<=n) MessageBox ("Закончите ввод");

else

summa=z. sum2 ();

UpdateData (false); }

Коды методов класса C2

void C2:: OnButton1 () // ввод координат точек

{UpdateData ();

fig. vvod (x11,y11);

c++; } void C2:: OnButton3 () // нахождение длины

{if (c==0) MessageBox ("Введите координаты точек ");

else

{float dl;

dl=prm. dl (x11,y11,x22,y22);

dlq. Format ("%5.2f",dl); }

UpdateData (false); }

void C2:: OnButton4 () // нахождение периметра

{if (c==0) MessageBox ("Введите координаты точек");

else

{float pr;

z. vvod (x11,y11);

z. dl (x11,y11,x22,y22);

pr=z. pr (x33,y33);

prq. Format ("%5.2f",pr); }

UpdateData (false); }

void C2:: OnButton5 () // нахождение площади

{if (c==0) MessageBox ("Введите координаты точек ");

else {float pl1;

z. vvod (x11,y11);

z. dl (x11,y11,x22,y22);

z. pr (x33, y33);

pl1=z. pl ();

plq. Format ("%5.2f",pl1); }

UpdateData (false); }

7.5 Инструкция пользователю

Для реализации задания 6 необходимо наличия файла z6_v13. exe.

Для осуществления работы с данным приложением запустить этот файл. На экране появится главное окно (см. рисунок 7.1)

Рисунок 7.1 - главное окно

При выборе команды "Первое" появится диалоговое окно с заданием про массив (см. рисунок 7.2)

Рисунок 7.2 - Работа с массивом

При выборе команды "Второе" появится диалоговое окно с точками на плоскости (см. рисунок 7.3)

Рисунок 7.3 - Работа с точками на плоскости

7.6 Контрольный пример

Задание 1

Тест 1

{-1,1,4}

Минимальный элемент = - 1

Сумма четных чисел = 4

Тест 2

Размер = - 1

Ответ = размер должно быть не меньше 1

Тест 3

{-5,8,3}

Минимальный элемент = - 5

Сумма нечетных чисел = - 2

Задание 2

Тест 1

А (0,0), В (2,1), С (1,2)

Периметр = 5,89

Длина = 2,24

Площадь = 1,5

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

1. "Бьерн Страуструп. Язык программирования C++"

2. Джесс либерти, "Освой самостоятельной С++ за 21 день", изд. Дом "Вильямс", Москва - Санкт-Петербург - Киев, 2001

3. Н. Секунов, "Самоучитель Visual C++ 6", изд. "БХВ - Петербург", Санкт-Петербург, 2003

Список книг и статей, на которые есть прямые ссылки.

1. Bjarne Stroustrup: Adding Classes to C: An Exercise in Language Evolution. Software Practice & Experience, Vol.13.1983. pp.139-61.

2. Bjarne Stroustrup: The C++ Programing Language. Addison-Wesley. 1986

3. Bjarne Stroustrup: Multiple Inheritance for C++. Proc. EUUG String Conference, May 1987. Also USENIX Computer Systems, Vol.2 No 4, Fall 1989.

4. Bjarne Stroustrup and Jonatan Shopiro: A Set of C clsses for Co-Routine Style Programming. Proc USENIX C++ conference, Santa Fe. November 1987. pp.417-439.

5. Bjarne Stroustrup: Standardizing C++. The C++ Report. Vol.1 No.1. January 1989.

6. Для подготовки данной работы были использованы материалы с сайта http://www.realcoding.net

7. Visual C++ на примерах (+CD-ROM): Галина Довбуш, Анатолий Хомоненко - Москва, БХВ - Петербург, 2007г. - 528 с.

8. С/С++ и MS Visual C++ 2010 для начинающих (+ DVD-ROM): Барис Пахомов - Москва, БХВ - Петербург, 2011г. - 726с

9. Visual Basic на приктике (+CD-ROM): - Москва, БХВ-Петербург, 2008г. - 480с.

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


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

  • Особенности синтаксиса языка программирования С++. Создание панели меню, для получения информации о программе, сохранения результата и выхода из программы. Работа с файлами, двумерными и одномерными динамическими массивами, функциями, строками и циклами.

    курсовая работа [782,3 K], добавлен 06.02.2016

  • Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.

    курсовая работа [1,8 M], добавлен 16.09.2015

  • Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.

    курсовая работа [879,8 K], добавлен 11.02.2016

  • Ознакомление с понятием, особенностями объявления, инициализацией и принципами работы с одномерными и двумерными массивами. Изучение смысла тернарной операции вывода элементов матрицы. Рассмотрение сущности и способов использования указателей переменных.

    лабораторная работа [22,1 K], добавлен 15.07.2010

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

    курсовая работа [86,7 K], добавлен 27.05.2012

  • Особенности работы с процедурами и двумерными массивами, последовательность вызова процедур. Способы описания и использования многомерных массивов, назначение процедур, их описание и обращение к ним. Набор программы, ее отладка и тестирование данных.

    лабораторная работа [112,1 K], добавлен 03.10.2010

  • Разработка консольного приложения, которое обрабатывает входной файл с расширением .pas и транслирует в выходной файл с расширением .cpp или .txt (по выбору пользователя). Синонимичные операторы языков Паскаль и С. Разработка алгоритма решения задачи.

    курсовая работа [329,6 K], добавлен 04.06.2013

  • Встроенные типы данных, основные конструкции, структуры и применение языка Javа. Введение в интегрированную среду разработки Eclipse. Листинг программы, иллюстрирующей работу с одномерными массивами (создание массива). Спецификация класса Figure.

    методичка [1,4 M], добавлен 30.06.2009

  • Разработка программы в среде Delphi, позволяющей оперативно вести учет наличия свободных мест на авиарейсах, отправляющихся из города Саранска. Описание алгоритма решения задачи и его машинная реализация. Разработка диалогового приложения пользователя.

    курсовая работа [1,1 M], добавлен 22.03.2014

  • Обоснование языка программирования Object Pascal и среды разработки Delphi. Создание интерфейса пользователя. Проектирование структуры и описание компонентов, использованных при разработке программного продукта. Составление инструкции пользователя.

    курсовая работа [888,7 K], добавлен 20.05.2015

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