Хід роботи

1. Завантажите C++ Builder.

2. Замініть Caption форми з "Forml" на "Обчислення вираження".

3. Відмовіться від системних кнопок форми, задавши значення False в усіх позиціях властивості Borderlcons: biSystemMenu, biMinimize, biMaximize і biHelp.

Роботові з програмою завершуватимемо натисненням на кнопку "Вихід".

4. Розташуєте на формі об' єкти так, як показано на малий. 3.

5.Введите описи класів і функцій, які використовуватимуться в цьому завданні.

Для цього відкрийте вікно тексту програми, і після рядка

TForm1 *Form1; // Цей рядок вже є в програмі

вставте програмний код опису класів Telement, Number, Plus, Mult ітекст функції формування дерева form (см "Теоретичні сведения-і аналіз завдання" цього лабораторного). Збережете проект ітекст програми.

Вычисление выражения Выражение x f(x) Результаты вычислений X= f(x)= Точность десятичных знаков
Вычисление выражения Выражение x f(x) Результаты вычислений X= f(x)= Точность десятичных знаков
Выход
Выход
Вычислить
 
38,00
5,00
X*x+2*x+3
2+3
Вычислить
 
Edit4
Edit3
Edit2
Edit1

Рис.3.Форма "Обчислення вираження". Рис.4. Приклад роботи програми.

6. Введіть математичні вирази в поля Edit1 і Edit2 і очистите полярезультатів Edit3 і Edit4. Запрограмуйте кнопку "Вихід".

Зверніть увагу на ті, що у виразах допускаються лише операції "+", "*", дійсні числа і змінна x, задана маленькою латинською буквою. У вираженні для x не використовуйте змінну x. Для набору символу десяткової точки в дійсних числах використовуйте символ, передбачений операційною системою комп'ютера. Тестовий приклад і результати обчислень показані на малий. 4.

7. Задайте початкову точність обчислень, яка дорівнює двомдесятковим знакам.

Для цього властивість Text об' єкту ComboBox1 задайте числом "2" без лапки.

8. Запрограмуйте кнопку "Вичислити" так:

void_ fastcall TForm1::Button1Click(TObject *Sender)

{

int dec = StrToInt(ComboBox1 -> Text); // Знаків після десяткової. точки

Telement* x = form(Edit1 -> Text); // x - покажчик на вершину

// // // // дерева, побудованого за вираженням в полі Edit1

// // // // Результат обчислення x записуємо як рядок символів в полі Edit3 Edit3 -> Text = FloatToStr(x -> rezult(), ffFixed, 25, dec);

// // // // fx - покажчик на вершину дерева,

// // // // побудованого за вираженням в Edit2

Telement* fx = form(Edit2 -> Text);

// // // // Результат обчислення f(x) записуємо як рядок символів в Edit4

Edit4 -> Text = FloatToStr(fx -> rezult(), ffFixed, 25, dec);

}

9. Запрограмуйте функцію, яка виконуватиметься після зміни числа в полі ComboBox1.

Для цього запрограмуйте подію Change об' єкту ComboBox1 так, щоб виконувалися дії для кнопки "Вичислити" (функція Button1Click);

vold_ fastcall TForm1::ComboBox1Change(TObject *Sender)

{

Button1Click(Button1);

////////Допустимий також запис: Button1Click(ComboBox1);Button1Click(Null);

}

Зауваження 1. Фактичним параметром функції Button1Click може бути покажчик на будь-який візуальний об' єкт форми, адже в описі цієї функції формальним параметром є покажчик на базовий тип TObject середовища візуального програмування C++ Builder (см п.8). Таким аргументом може бути також нуль-покажчик NULL. У складніших програмах цей параметр можна використовувати для передачі певної інформації у функцію.

Зауваження 2. Повторні виклики функції Button1Click() після шкірного виконання події ComboBox1Change шкірного разу призводитимуть до створення дерев математичних виразів для x і f(x). Адже покажчики на ці дерева є локальними змінними функції Button1Click(). Тому побудовані дерева знищуватимуться після завершення роботи цієї функції шляхом неявного виклику деструкцій об' єктів x і fx: x -> (Telement(); fx -> ~Telement().


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: