Диалоговая программа, проверяющая правильность вычисления площади треугольника (по формуле Герона)

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Реферат

Курсовая работа: 23 с., 13 рис., 2 табл., 5 источников, 3 прил.

СРЕДА BORLAND С++BUILDER, ЛОГИЧЕСКАЯ ПРОГРАММА, ВЫЧИСЛЕНИЯ ПЛОЩАДИ ТРЕУГОЛЬНИКА, IMAGE, ФАЙЛ

Объект исследования -среда BorlandС++Builder.

Предмет исследования- применение среды программирования BorlandС++Builder для создания диалоговой программы.

Цель работы -составить диалоговую программу, проверяющую правильность вычисления площади треугольника средствами С++Builder.

Основой для выполнения работы стала справочная, научная и учебная литература.

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

Областью возможного практического применения данной работы является использование материала проекта для создания диалоговых программ.

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

1.2 Теоретические аспекты предметной области

1.3 Алгоритм решения задачи

1.4 Блок-схема алгоритма решения задачи

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1 Описание объектов, свойств, методов

2.2 Формы и основные модули текста программы

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

2.4 Анализ результатов

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ A

ПРИЛОЖЕНИЕ Б

ПРИЛОЖЕНИЕ В

ВВЕДЕНИЕ

В последние десятилетия резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь цифровых технологий.

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую «быструю разработку», среди которых можно выделить C++ Builder.

Главным достоинством C++ Builder является то, что здесь реализованы идеи визуального программирования. Среда визуального программирования превращает процесс создания программы в приятное и легко понимаемое конструирование приложения из большого набора графических и структурных примитивов.

В данной курсовой работе будут изучены такие важные и актуальные направления применения среды C++Builder как создание диалоговых программ? проверяющих правильность математических вычислений.

Актуальность заключается в удобстве создания программ в среде С++Builder, в широких возможностях, в том числе для обработки текстовой информации, с использованием файлов.

Цель курсовой работы: обобщить знания по управляющим операторам языка С/С++; получить практические навыки работы с файлами, овладеть практическими навыками в организации ввода/вывода значений комбинированных типов данных, получить практические навыки программирования задач с использованием массивов, записей и файлов в среде С++Builder.

Для достижения названной цели в исследовании необходимо решить следующие задачи:

1) постановка задачи в формализованном виде;

2) построение алгоритма решения задачи;

3) реализация алгоритма на ПК путем создания пользовательского программного продукта;

4) анализ результатов;

5) использование компьютерной модели для проведения испытаний;

6) анализ полученных данных и формулировка выводов;

7) создание пояснительной записки.

Для выполнения этих задач будем использовать среду объектно-ориентированного программирования С++Builder.

Основой для выполнения работы стала справочная, научная и учебная литература и материалы периодической печати.

Основными методами исследования были выбраны общенаучные методы анализа и синтеза.

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

К работе прилагается электронный носитель информации.

1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

В данной курсовой работе требуется создать Windows-приложение в среде визуального программирования С++Builder, которое предназначена для обработки текста следующим образом: составить обучающую программу, проверяющую правильность вычисления площади треугольника по заданным сторонам (по формуле Герона). Обучаемому предлагается шесть задач. Обучаемому предлагается вопрос и три числа а, b, с, решив задачу он должен ввести ответ. Если ответ правильный, то обучаемому предлагается следующий вопрос и сообщение «Правильно». В противном случае обучаемому предлагается снова ответить на вопрос. Если повторный ответ также неправильный, то предложить вычислить сначала p=(а+b+с)/2, затем х1=р (р-а), x2=х1(р- b), далее хз = x2 (р -- с) и. После трех неудачных попыток ответить на вопрос, выдать обучаемому правильный ответ и предложить следующий. Переход к следующей задаче возможен только после правильного решения предыдущей. Подсчитать число правильных ответов на задачи с первой попытки. Программа должна анализировать достоверность исходных данных.

1.2 Теоретические аспекты предметной области

Формула Герона позволяет вычислить площадь треугольника (S) по его сторонам a, b, c где p -- полупериметр треугольника: (формула 1. 1)

pФормула 1. 1-полупериметр треугольника

В выражении для вычисления площади используется библиотечная функция sqrt () -- квадратный корень. Данная функция относится к библиотеке математических функций. Для подключения этой библиотеки к нашей программе используется директива препроцессора #include < math. h>. Здесь math. h -- имя заголовочного файла этой библиотеки.

Так же в форме программы использовались компоненты Tbutton — для создания кнопок меню, Tlabel — для вывода дополнительной информации. Для всплывающих окон с информацией использовались ShowMessage, MessageBox.

Работа с файлами. Файлы позволяют пользователю считывать большие объемы данных непосредственно с диска, не вводя их с клавиатуры. Существуют два основных типа файлов: текстовые и двоичные. Программирование операций ввода/вывода с файлами начинается с объявления файловой переменной:

FILE *< Файловая переменная> ;

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

< Файловая переменная> = fopen (< Имя файла> ,<Операция [+] [Тип]>);

где < Имя файла> - строковая переменная или константа — полное имя файла с путем -при указании имени файла без пути файл ищется только в текущем каталоге; < Операция[+]> - кодируется следующим образом:

· r — для чтения; если файла нет, то возникает ошибка;

· w — для записи, если файла с заданным именем нет, то он будет создан, если же такой файл существует, то перед открытием прежняя информация уничтожается;

· a — добавление к существующему файлу новой информации в конец или создание файла для вывода;

· r+ - ввод/вывод в существующий файл;

· w+ - ввод/вывод в существующий или создание нового файла для ввода/вывода;

· a+ - то же, что и для a, только запись можно выполнять в любое место файла, доступно и чтение файла.

Если при открытии файла произошла ошибка, функция fopen возвращает значение NULL. Открытый файл обязательно должен быть закрыт. При закрытии файла вывода оставшиеся записи из буфера переписываются в файл, и если файл новый, то формируется соответствующий элемент оглавления. Поэтому, прежде чем переименовывать или удалять файл, его обязательно нужно закрыть:

fclose (< Файловая переменная>);

1.3 Алгоритм решения задачи

Для решения данной задачи будет использоваться следующий алгоритм. Программа предлагает пользователю стороны треугольника. По заданным сторонам пользователь должен найти площадь треугольника и ввести ответ. Программа проверит ввод данных, если ответ правильный то предлагается другая задача, иначе еще одна попытка ввести ответ, если повторный ответ также неправильный, то программа предложит вычислить по формуле и ввести ответ еще раз. Если пользователь три раза ошибся, то выводится сообщения с правильным ответом и переходит к другой задаче. Так же в программе предлагается тест, за правильные ответы обучаемый получает 5 баллов. За правильный ответ в задаче с первой попытки 10 баллов, со второй попытки -5 баллов и с третей попытки -3 балла. После решение всех задач сохраняется в файл имя пользователя и его балл.

1.4 Блок-схема Алгоритм решения задачи

На рисунке 1.1 представлена блок-схема процесса обработки диалоговой программы, вычисляющую площадь треугольника.

Рисунок 1. 1-Блок-схема процесса обработки вычисляющую площадь треугольника

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1 Описание объектов, свойств, методов

Основными объектами работы программного проекта являются Button, LabelиEdit.

GroupBox — служит для объединения нескольких компонентов с целью удобства пользования.

Компоненты, предназначенные для ввода-вывода

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

Компонента Memo. Для вывода результатов работы программы обычно используется окно многострочного редактора текста, представленное компонентой Memo.

Компонента Label. Данная компонента используется для вывода надписей, и в нужном месте формы устанавливается надпись Label1, регулируется размер, место положения, изменяется свойство Caption инспектора объектов, в котором вводится нужный текст, например, строка «Значение X = «, а также выбирается стиль.

КомпонентRadioGroup организует группу кнопок — зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. Номер активного зависимого переключателя хранится в значении свойства ItemIndex. Нумерация кнопок начинается с нуля. Количество кнопок и подписи к ним определяются свойством Items. Расположение зависимых переключателей, которые отображает данный компонент, подбирается автоматически с учетом заданного в свойстве Columns количества колонок.

Image — компонент для отображения изображений.

Функция-обработчик FormCreate

При запуске программы возникает событие «создание формы» (OnCreate). Нажимаем двойной щелчок кнопкой мыши на любом свободном месте формы, между символами { }, которые обозначают начало и конец функции, соответственно, туда можно записать нужный текст программы. После чего в листинг программы (Unit1. cpp) автоматически вносится заготовка для создания функции: ее заголовок … FormCreate (…) и фигурные скобки.

Form — форма, основной компонент приложения. На ней размещаются все другие компоненты (таблица 1. 1).

Таблица 1. 1- Основные свойства Form и их значения

Свойство

Значение

AlphaBlend

Если установлено true, то форму можно сделать прозрачной.

AutoSize

Если установлено true, форма сама подгоняет свои размеры под расположенные на неё компоненты.

BorderIcons

Свойство, содержащее несколько подсвойств. Позволяет управлять кнопками приложения в правом верхнем углу.

biSystemMenu — Отключает все кнопки и запрещает вызов меню по комбинации клавиш Alt+ Space (Пробел)

biMinimize — Кнопка сворачивания приложения

biMaximize — Кнопка растягивания приложения во весь экран

biHelp — Кнопка «?» справки (подсказки)

BorderStyle

Определяет вид границы приложения.

bsDialog — Запрещено растягивание за углы и нет кнопок «Свернуть» и «Закрыть».

bsNone — Нет никаких границ, форму нельзя перетаскивать. Такое используется для создания заставок приложений.

bsSingle — Запрещено растягивание за углы.

bsSizeable — Можно растягивать форму за края и все кнопки доступны.

bsSizeToolWin — Упрощенный вид формы с возможностью растягивания за края и наличием только кнопки «Закрыть».

bsToolWindow — Упрощенный вид формы без возможности растягивания за края без кнопок «Свернуть» и «Закрыть».

BorderWidth

Толщина границ формы

Caption

Название формы (Отображается в левом верхнем углу)

FormStyle

Стиль формы, по умолчанию fsNormal. Если установить fsStayOnTop, то эта форма будет поверх других окон. Это удобно использовать, если форма отвечает за ввод логина с паролем или это окно настроек.

Icons

Значок, который отображается в верхнем левом углу формы. Можно загрузить в формате ico.

Menu

Выбор основного MainMenu из выпадающего списка (если у вас больше одного)

Position

Позиция формы относительно экрана. По умолчанию poDesigned. Наиболее полезные варианты — poDesktopCenter и poScreenCenter — размещение формы по центру рабочего стола и экрана соответственно.

Button — обычная кнопка без рисунка (таблица 1. 2).

Таблица 1. 2- Основные свойства buttonи их значения

Свойство

Назначение

Caption

Надпись на компоненте.

Cursor

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

Enabled

Если это свойство установлено в false, то компонент становится бледнее и по нему уже нельзя щелкнуть клавишей мыши (можно, но действие в обработчике щелчка не произойдет) или ввести/скопировать какие-либо данные.

Hint

Всплывающая подсказка, ShowHint должно быть установлено в true.

Name

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

ParentShowHint

Наследования характеристик родителя, как правило формы, в данном случае, разрешение на отображение всплывающей подсказки.

ReadOnly

Только для чтения. Если установлено true, то вы не сможете изменять данные, но в отличие от Enabled можете выделить и скопировать данные.

ShowHint

Определяет показывать или не показывать всплывающую подсказку, true — показывать

Visible

Если установлено true, то компонент становится невидимым.

2.2 Формы и основные модули текста программы

Программный проект курсовой работы состоит из трех форм (рисунок 2. 1)

Рисунок 2.1 — Основная форма программы

В меню «Справка» можно получить информацию о программе и о авторе (рисунок 2. 2)

Рисунок 2. 2- меню «Справка»

При выборе пункта «О программе» откроется окно с информацией (рисунок 2. 3)

Рисунок 2.3 — Форма «О программе»

Нажав на кнопку «Далее» можно ознакомиться с примерами (рисунок 2. 4)

Рисунок 2.4 — Форма «О программе», примеры

При выборе пункта «О авторе» откроется окно с информацией (рисунок 2. 5)

Рисунок 2.5 — Форма «О авторе»

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

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

Откроется форма программы (рисунок 2. 6)

Рисунок 2.6 — Основное окно программы

Для того, что бы приступить к задаче: нажмите «Файл» а затем «Начать» (рисунок 2. 7)

Рисунок 2. 7-меню пункт «Файл»

Затем в появившемся окне пользователь должен ввести своё имя и фамилию (рисунок 2. 8)

Рисунок 2. 8-Ввод данных

После ввода данных нужно нажать кнопку «Начать» затем откроется основная форма программы (рисунок 2. 6). Далее, в появившейся форме предлагается тест (ответы на предложенные вопросы) и шесть задач (рисунок 2. 9).В каждой задаче будет по три попытки найти ответ.

Рисунок 2. 9- Решение тестовых вопросов

После того как решили тестовые вопросы нужно нажать на кнопку «Приступить к задаче». После нажатия программа предложит три числа a, b, c (стороны треугольника). Решив задачку по формуле Герона, вводим ответ и нажимаем на кнопку «Ответ». Если правильно, то выскачет сообщение «Правильно» (рисунок 3. 1).

Рисунок 3. 1- Результат нажатия на кнопку «Ответ»

И так последовательно нужно решить шесть задач. Если со второй попытки найти ответ не удалось, то тогда предлагается вычислить задачку по частям (рисунок3. 2)

Рисунок 3. 2- Вычисления площади треугольника по частям

Чтобы ознакомиться с результатами нажмите «Файл» а затем «Результаты». Затем в появившимся окне кнопку «Показать результаты"(рисунок 3. 3).

Рисунок 3. 3-ознокомления с результатами

Все набранные результаты сохраняется.

Закрытие программы осуществляется нажатием на кнопку «Закрыть», стандартно располагающуюся в верхнем правом углу программы.

2.4 Анализ результатов

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

диалоговый программа модуль c++

ЗАКЛЮЧЕНИЕ

Система C++Builder позволяет решать множество задач, в частности:

· Быстро создавать профессиональный оконный интерфейс для любых приложений.

· Создавать приложения для Windows самой различной направленности: от вычислительных и логических, до графических и мультимедиа.

C++Builder — это комбинация нескольких важнейших технологий:

· Высокопроизводительный компилятор в машинный код

· Объектно-ориентированная модель компонент

· Визуальное построение приложений из программных прототипов

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

В процессе выполнения курсового проекта были усвоены некоторые возможности С++Builder. Но даже этот небольшой объем материала позволил мне убедиться в колоссальности данной среды.

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

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

1. Компоненты C++ Builder// HighLevelLanguageC++ [Электронный ресурс]. — 2014. — Режим доступа: http: //h-l-l. ru/publ/44-Дата доступа: 17. 04. 2014.

2. Компоненты C++ Builder — [Электронный ресурс]. — 2014. — Режим доступа: http: //bigcamagan. ru/-Дата доступа: 21. 04. 2014.

3. Компоненты C++ Builder// Работа с объектами — [Электронный ресурс]-2014- Режим доступа: http: //cubook. supernew. org/object. html -Дата доступа: 21. 04. 2014.

4. Основы программы на C++ Builder- [Электронный ресурс]-2014- Режим доступа: http: //kufas. ru/programming118. htm

5. ИвановаГ. С. Объектно-ориентированное программирование Г. С. Иванова, Т. Н. Ничушкина, Е. К. Пугачев; под ред. Г. С. Иванова. -М. :Изд-во МГТУ им. Н. Э. Баумана, 2003,-368 с.

ПРИЛОЖЕНИЕ А

Форм1. Основнойформ

#include< vcl. h>

#pragmahdrstop

#include «Unit1. h»

#include «Unit2. h»

#include «Unit3. h»

#include «Unit4. h»

#include «Unit5. h»

#include < stdio. h>

#include < math. h>

#include < Math. hpp> //dlyarounto

//---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource «*. dfm»

TForm3 *Form3;

//---------------------------------------------------------------------------

__fastcall TForm3: :TForm3(TComponent* Owner)

: TForm (Owner)

{}

float a, b, c, p, x1, x2, x3, ap, X1, X2, X3;

int j=0, J=0, ball=0, L=0; //j-cislozadac… J-cislowwodimyhotwetow.

float s, S; // s-formula gerona

double B; int d=0; // B-dlyaokrugleniya

FILE *f; //file for save result

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button4Click (TObject *Sender)

{ // otkrywaetpolyadlyawwodaiwywodaiwywoditznaceniya

Edit2-> Enabled=true;//wwodotweta

randomize ();

a=rand ()% 90;

b=rand ()% 90;

c=rand ()% 90;

if ((a + b > c) || (b + c > a) || (a + c > b)) {

p=(a+b+c)/2;

x1=fabs (p*(p-a)); x2=fabs (p*(p-b)); x3=fabs (p*(p-c));

s=sqrt (x3); j++;

B= SimpleRoundTo (s, -2); //otwet 2 znakaposlezapyatyh s okrugleniem

S=B;

Edit1-> Text=(«a="+ FloatToStr (a)+» b="+FloatToStr (b)+" c="+ FloatToStr (c)); //wywodabcstorontriugolnika

Button4-> Enabled=false;//open knopkupristup k zadace

Button1-> Enabled=true;//otwet

J=0; }// obnulyayu 'J' ctob ne pereshel k drugimuslowiam a pereshel k drugoyzadace

GroupBox2-> Hide ();//hide group spodskazkoy

Label7-> Caption=(«Задача «+IntToStr (j) +"из 6»); }// label

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button1Click (TObject *Sender)

{float u;

for (int o=1; o <= 3; o++) { //pozwolaetotwetitnawopros 3 popytkami

u=StrToFloat (Edit2-> Text); J++; //otwetpolzawotelya J++ otwety (=6)

if (u==S) { //srawniwayuotwetpolzowatelya s prawilnymotwetom

ShowMessage («Правильно!»);

Edit2-> Text=""; //ocishayu pole otweta

Button1-> Enabled=false;//knopkaotwet

Button4-> Enabled=true; break; }

else if

(J==3) {

Edit2-> Text="";

ShowMessage («Не Правильно! Правильный ответ „+FloatToStr (B)+“ Переходите к другой задаче»); break; }

elseShowMessage («Не Правильно! Попробуйте еще раз. Попытка «+IntToStr (J)); break; }

if ((J==2) & & (u≠S)) { //esli 2 razapopytka ne udacnaya to perehodet k podskazke

Edit2-> Text="";

Button1-> Enabled=false; //skruwayuknopku 'otwet'

Button8-> Show (); // open but 'p'

Edit6-> Enabled=true; //otkrytwwod p

GroupBox2-> Show (); // otkrywayugruppu s podskazkoy

ShowMessage («Попробуйтьевычислить p=(a+b+c)/2»); }

if ((J==3) & & (j≠6)){//esliwwod 'otwet' skrywaetsya a wod 'pristupit k zadace' open

Button1-> Enabled=false; Button4-> Enabled=true;}

// - otsenka —

if ((J==1) & & (u==S))

{ball+=10; }

else if ((J==2) & & (u==S))

{ball+=5; }

else if ((J==3) & & (u==S))

{ball+=2; }

if (((j==6) & & (J==3)) || ((j==6) & & (u==S)))

//eslikolwwedenyhotwetow max i s 1 popytkiudacna to tozakrytgruppu s zadacami

//eslikolwwedenyhotwetow max i ne udaca 3 popytkami to zakrytgruppu s zadacami

{GroupBox4-> Enabled=false;

//wystawlenieotsenki

f=fopen («C: //test. txt», «a+»);

fprintf (f, «Балл=»);

fprintf (f, «%6d», ball);

fprintf (f, «n//-------/------/------/------/------//n»);

fclose (f); }}

//eslikolwoprosow 6. ikolwwedennyhotwetow 3 to togdaskryt gbox6}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button7Click (TObject *Sender)

{int but1=0; //dlyaprowerkiwwodaknopkictobpereyti w sled

switch (RadioGroup1-> ItemIndex) { //otwety yes no

case 0: but1++; break;

case 1: but1++; break;

case 2: but1++; ball+=5; break;

case 3: but1++; break; }

if (but1≠0){

Button7-> Visible=false; // close but 1

Button6-> Visible=true; // open but 2

Image3-> Visible=true;

Image1-> Visible=false;

}RadioGroup1-> ItemIndex=-1;}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button6Click (TObject *Sender)

{int but2=0; //dlyaprowerkiwwodaknopkictobpereyti w sled

switch (RadioGroup1-> ItemIndex) { //otwety yes no

case 0: but2++; ball+=5; break;

case 1: but2++; break;

case 2: but2++; break;

case 3: but2++; break; }

if (but2≠0){

Button6-> Visible=false; // close but 1

Button5-> Visible=true; // open but 2

Image4-> Visible=true;

Image3-> Visible=false;}

RadioGroup1-> ItemIndex=-1;}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button5Click (TObject *Sender)

{int but3=0; //dlyaprowerkiwwodaknopkictobpereyti w sled

switch (RadioGroup1-> ItemIndex) { //otwety yes no

case 0: but3++; break;

case 1: but3++; break;

case 2: but3++; break;

case 3: but3++; ball+=5; break; }

if (but3≠0){

Button5-> Visible=false; // close but 1

Button2-> Visible=true;

Image5-> Visible=true;

Image4-> Visible=false;}

RadioGroup1-> ItemIndex=-1;}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button8Click (TObject *Sender)

{ap=StrToFloat (Edit6-> Text);

Button1-> Enabled=true;

if (ap==p) {

ShowMessage («Правильно! Теперь вычислите х1=р*(р -- а)»); // proweryaem p

Edit5-> Enabled=true; // razreshemwwesti x1

Button3-> Show (); //open but x1

Button8-> Hide (); // close but p

Edit6-> Enabled=false; }//zakrytwwod p

else {ShowMessage («НеПравильно!»); GroupBox2-> Hide ();}}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button3Click (TObject *Sender)

{X1=StrToFloat (Edit5-> Text);

Button1-> Enabled=true;

if (X1==x1) {

ShowMessage («Правильно! Теперь вычислите х2=р*(р -- b)»); //proweryaem x1

Edit4-> Enabled=true; //razreshaemwwesti x2

Edit5-> Enabled=false; //zakrytwwod x1

Button9-> Show ();} //open but x2

else {ShowMessage («НеПравильно!»); GroupBox2-> Hide ();}

Button3-> Hide ();}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button9Click (TObject *Sender)

{X2=StrToFloat (Edit4-> Text);

Button1-> Enabled=true;

if (X2==x2) {

ShowMessage («Правильно! Теперь вычислите х3=р*(р -- c)»); //proweryayu x2

Edit3-> Enabled=true; // razreshaemwwesti x3

Edit4-> Enabled=false; //zakrytwwod x2

Button10-> Show (); }//open but x3

else {ShowMessage («НеПравильно!»); GroupBox2-> Hide ();}

Button9-> Hide ();}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button10Click (TObject *Sender)

{X3=StrToFloat (Edit3-> Text);

Button1-> Enabled=true;

if (X3==x3) {

ShowMessage («Правильно, теперь вычислите корень x3»); //proweryaem x3

Edit3-> Enabled=false; } //zakrytwwod x3

else {ShowMessage («НеПравильно!»);

GroupBox2-> Hide (); }

Button10-> Hide ();}

//---------------------------------------------------------------------------

void __fastcall TForm3: :FormCreate (TObject *Sender)

{

ball=0;

if (L==0) { GroupBox2-> Hide (); Button3-> Hide (); Button9-> Hide (); Button10-> Hide ();}

Timer2-> Enabled=true; L++;

if (L==2) {

Label9-> Hide ();}

if (L==3) {

Label9-> Show (); L=1; }}

//---------------------------------------------------------------------------

void __fastcall TForm3: :N3Click (TObject *Sender)

{ Timer2-> Enabled=false;

if (GroupBox5-> Enabled==false) {

Form3-> Hide (); GroupBox5-> Enabled=true;

Form2-> ShowModal ();

Image1-> Visible=true; Label9-> Caption="";

}}

//---------------------------------------------------------------------------

void __fastcall TForm3: :N5Click (TObject *Sender)

{Close (); }

//---------------------------------------------------------------------------

void __fastcall TForm3: :N6Click (TObject *Sender)

{ Form1-> ShowModal (); }

//---------------------------------------------------------------------------

void __fastcall TForm3: :N7Click (TObject *Sender)

{Form4-> ShowModal ();}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button2Click (TObject *Sender)

{int but5=0; //dlyaprowerkiwwodaknopkictobpereyti w sled

switch (RadioGroup1-> ItemIndex) { //otwety yes no

case 0: but5++; break;

case 1: but5++; break;

case 2: but5++; break;

case 3: but5++; ball+=5; break; }

if (but5≠0){

Button2-> Visible=false;

Button11-> Visible=true;

Image6-> Visible=true;

Image5-> Visible=false;}

RadioGroup1-> ItemIndex=-1;}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button11Click (TObject *Sender)

{int but6=0; //dlyaprowerkiwwodaknopkictobpereyti w sled

switch (RadioGroup1-> ItemIndex) { //otwety yes no

case 0: but6++; ball+=5; break;

case 1: but6++; break;

case 2: but6++; break;

case 3: but6++; break; }

if (but6≠0){

Button11-> Visible=false;

Button12-> Visible=true;

Image7-> Visible=true;

Image6-> Visible=false;}

RadioGroup1-> ItemIndex=-1;}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button12Click (TObject *Sender)

{int but7=0; //dlyaprowerkiwwodaknopkictobpereyti w sled

switch (RadioGroup1-> ItemIndex) { //otwety yes no

case 0: but7++; break;

case 1: but7++; break;

case 2: but7++; break;

case 3: but7++; ball+=5; break; }

if (but7≠0){

Button12-> Visible=false;

Button13-> Visible=true;

Image8-> Visible=true;

Image7-> Visible=false;}

RadioGroup1-> ItemIndex=-1;}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button13Click (TObject *Sender)

{int but8=0; //dlyaprowerkiwwodaknopkictobpereyti w sled

switch (RadioGroup1-> ItemIndex) { //otwety yes no

case 0: but8++; break;

case 1: but8++; break;

case 2: but8++; break;

case 3: but8++; ball+=5; break; }

if (but8≠0){

Button13-> Visible=false;

Button14-> Visible=true;

Image9-> Visible=true;

Image8-> Visible=false;}

RadioGroup1-> ItemIndex=-1;}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Button14Click (TObject *Sender)

{int but4=0; //dlyaprowerkiwwodaknopkictobpereyti w sled

switch (RadioGroup1-> ItemIndex) { //otwety yes no

case 0: but4++; break;

case 1: but4++; break;

case 2: but4++; break;

case 3: but4++; ball+=5; break; }

if (but4≠0){

Button14-> Enabled=false;

GroupBox3-> Hide ();

}RadioGroup1-> ItemIndex=-1;

GroupBox1-> Visible=false;}

//---------------------------------------------------------------------------

void __fastcall TForm3: :N4Click (TObject *Sender)

{ Form5-> ShowModal (); }

//---------------------------------------------------------------------------

void __fastcall TForm3: :Edit6Click (TObject *Sender)

{Edit6-> Text=""; }

//---------------------------------------------------------------------------

void __fastcall TForm3: :Edit5Click (TObject *Sender)

{Edit5-> Text="";}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Edit4Click (TObject *Sender)

{Edit4-> Text="";}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Edit3Click (TObject *Sender)

{Edit3-> Text="";}

//---------------------------------------------------------------------------

void __fastcall TForm3: :Label11Click (TObject *Sender)

{Label11-> Caption=FloatToStr (B);}

void __fastcall TForm3: :GroupBox5MouseMove (TObject *Sender, TShiftState Shift,

int X, int Y)

{Label11-> Caption="розмет"; }

ПРИЛОЖЕНИЕ Б

Форм2. Сохранение данных

#include< vcl. h>

#pragma hdrstop

#include < fstream>

#include < stdio. h>

#include < io. h>

#include «Unit2. h»

#include «Unit3. h»

#include < windows. h>

//---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource «*. dfm»

TForm2 *Form2;

//---------------------------------------------------------------------------

__fastcall TForm2: :TForm2(TComponent* Owner)

: TForm (Owner)

{}

//---------------------------------------------------------------------------

void __fastcall TForm2: :Button1Click (TObject *Sender)

{

FILE *file;

char* file_name =(«C: //test. txt»);

if (Edit1-> Text=="" || Edit2-> Text=="")

ShowMessage («Не все поля заполнены»);

else {

file = fopen (file_name, «a+»);

fputs («n», file); //

fputs (Edit1-> Text. c_str (), file); //imya

fputs (««, file); //new stroke

fputs (Edit2-> Text. c_str (), file); //familiya

fputs («n», file); // newsrtoke

fclose (file);

Form2-> Close ();

Form3-> Show ();}}

//---------------------------------------------------------------------------

void __fastcall TForm2: :Button2Click (TObject *Sender)

{Form2-> Close ();

Form3-> Close ();}

ПРИЛОЖЕНИЕ В

Форм3. Выводрезультатов

void __fastcall TForm5: :Button1Click (TObject *Sender)

{Memo1-> Lines->LoadFromFile («C://test. txt»);}//wywodfayl w memo

ПоказатьСвернуть
Заполнить форму текущей работой