Лабораторные работы МИРЭА 2014 (1017113), страница 19
Текст из файла (страница 19)
#include <StdCtrls.hpp>
#include <Forms.hpp>
class TForml: public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TEdit *Editl;
TEdit *Edit2;
TButton *Buttonl;
TButton *Button2;
TLabel *Label4;
void__fastcall ButtonlClick(TObject *Sender);
void__fastcall Button2Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForml(TComponent* Owner);
};
extern PACKAGE TForml *Form1;
#endif
Листинг 2.7. Модуль формы (Amper_1.cpp)
#include <vcl.h>
#pragma hdrstop
#include "Amper_l.h"
#ragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForml::TForml(TComponent* Owner)
: TForm(Owner)
{
}
// щелчок на кнопке Вычислить
void__fastcall TForm1::Button1Click(TObject *Sender)
{
float u; // напряжение
float r; // сопротивление
float i; // сила тока
// получить данные из полей ввода
// возможно исключение
try
{
u = StrToFloat(Editl->Text);
r = StrToFloat(Edit2->Text);
}
catch (EConvertError &e)
{
ShowMessage("При вводе дробных чисел используйте запятую.");
return;
}
// вычислить силу тока
// возможно исключение
try
{
i = u/r;
}
catch (EZeroDivide &e)
{
ShowMessage("Сопротивление не должно быть равно нулю");
Edit1->SetFocus(); // курсор в поле Сопротивление
return;
}
// вывести результат в поле метки Label4->Caption = "Ток : " +
FloatToStrF(i,ffGeneral,7,3);
}
// щелчок на кнопке Завершить
void__fastcall TForml::Button2Click(TObject *Sender)
{
Form1->Close(); // закрыть окно программы
}
Следует отметить, что значительное количество работы по генерации программного кода выполнил C++ Builder. Он полностью сформировал главный модуль (Amper.cpp), заголовочный файл модуля формы (Amper_l.h), значительную часть модуля формы (Amper_l.cpp). Кроме того, C++ Builder, анализируя действия программиста, сформировал описание формы, файл проекта и файл ресурсов проекта.
Задания для самостоятельной работы
Используя возможности C++ Builder, создайте следующие программы:
1. Электроэнергия.
Программа предназначена для вычисления суммы оплаты израсходованной электроэнергии. Программа представляет собой форму с окнами. В окна записываются предыдущее показание счетчика, текущее показание, стоимость одного кВт-час.
2. Игра «угадай число».
Цель игры – угадать целое число случайным образом определенное программой.
Для того чтобы игра была более интересной игроку могут быть предложены подсказки, например, данное число находится в пределах от nmax до nmin, или данное число четное или нечетное, или оно делится на 3, и т.п.
Игра будет еще более интересной если вести запись имен игроков.
3. Гороскоп
Напишите астрологическую программу. В ответ на ввод пользователем дня рождения программа должна выводить соответствующие знак зодиака и гороскоп. Месяц может вводиться в виде числа от 1 до 12. Учтите, что если день рождения попадает в интервал одного-двух дней от соседнего знака зодиака, то программа должна сообщать об этом, а также выдавать гороскоп для смежного знака зодиака. Эта программа будет содержать множественное ветвление. Тексты гороскопов следует хранить в файле. Программа должна содержать цикл, предусматривающий повторный ввод пользователем дня рождения и возможность явного завершения работы с программой.
4. Межгород
Напишите программу расчета стоимости междугородных переговоров. Стоимость звонка рассчитывается по следующей шкале:
а) любой звонок в интервале от 8:00 до 18:00 с понедельника по пятницу стоит $0.40 в минуту;
б) любой звонок в интервале до 8:00 и после 18:00 с понедельника по пятницу стоит $0.25 в минуту;
в) любой звонок в субботу и воскресенье стоит $0.15 в минуту.
Ввод должен иметь следующий вид: день недели, время начала звонка, длительность разговора в минутах. Вывод — стоимость разговора. Время вводится в 24-часовом формате.
Продолжительность разговора в минутах должна вводиться в виде целого значения (типа int). В программе должен быть реализован цикл, позволяющий пользователю повторное применение программы и явное завершение работы с ней. После завершения отладки этой программы создайте ее более совершенную версию, выполняющую считывание из файла информации обо всех произведенных в течение недели звонках и записывающую счет за телефонные разговоры в другой файл. В счете должны быть перечислены все телефонные разговоры (дата, время начала, продолжительность), их стоимость, а также итоговая стоимость. Порядок телефонных разговоров в файле вывода должен совпадать с порядком из файла ввода. Если вы решаете эту задачу в аудитории, проконсультируйтесь с преподавателем относительно имен файлов и места их хранения.
5. Millennium
Напишите программу для преобразования года из обычного формата записи в виде четырех цифр в формат записи в виде римских цифр. Для этого используются следующие римские цифры: V — 5, X — 10, L — 50, С — 100, D — 500, М — 1000. Напомним, что некоторые числа формируются посредством следующих правил вычитания римских цифр: так, IV равно 4 (V минус I), ХL — 40, СМ — 900 и т.д. Для наглядности приведем несколько примеров: МСМ — 1900, МСМL — 1950, МСМLХ - 1960, МСМХL - 1940, МСМЕХХХ1Х - 1989. Предположим, что вводимый пользователем год находится в пределах между 1 и 3000. Программа должна включать цикл, позволяющий пользователю повторно вводить год и выполнять его преобразование в римские цифры до явного завершения программы.
6. Алфавит
Напишите программу, которая бы считывала строку текста и выводила список всех букв, встречающихся в ней, а также количество повторений каждой из букв в строке.
Буквы должны быть перечислены в определенном порядке. Чем чаще встречается буква в строке, тем раньше в списке она стоит. Используйте массив, базовым типом которого является структура, такая, чтобы в каждом элементе этого массива можно было хранить и буквы, и целые числа, указывающие количество их повторений. Можно принять соглашение, что ввод будет состоять только из строчных букв. Например, при вводе
do be do bo
вывод должен быть следующим:
Буква: Количество повторений
о 3
d 2
b 2
е 1
Программа должна сортировать массив по целым значениям-членам используемой структуры. Если задание выполняется в учебной группе, выясните у преподавателя, следует ли осуществлять ввод и вывод с помощью клавиатуры и экрана, либо с помощью файлов (в последнем случае преподаватель должен сообщить вам имена файлов, которые нужно использовать).
7. Палиндром
1. Палиндром — это слово, которое одинаково читается слева направо и справа налево, например "радар". Напишите программу, которая бы принимала символьную строку, заканчивающуюся точкой, и определяла, является ли данное слово (без учета точки) палиндромом. Можно считать, что вводятся только строчные буквы и что длина вводимого слова не превышает двадцати букв. Не нужно, что бы программа проверяла, употребляется ли данное слово в русском (английском) языке. Слово "ааббсббаа" программа тоже должна определять как палиндром. Используйте в программе цикл, позволяющий выполнять проверку новых слов до тех пор, пока пользователь не даст команду прекратить работу программы.
8. Метеослужба
В этом проекте три версии задания.
Версия 1 (полностью интерактивная).
Напишите программу, которая бы считывала реальные количества осадков, выпавших в каждом из двенадцати месяцев года. Затем программа должна выдавать аккуратно отформатированную таблицу, в которой приводятся данные о количестве осадков, выпавших в каждом из последних двенадцати месяцев, и о том, на сколько это количество отличается от среднегодового.
Завершив работу над программой, напишите ее улучшенную версию, которая бы выводила гистограмму с данными по среднему и реально выпавшему количеству осадков для каждого из двенадцати месяцев. Программа должна запрашивать пользователя, хочет ли он получить таблицу или диаграмму, а затем выводить данные в указанном формате.
Версия 2 (интерактивная версия с выводом в файл).
Чтобы улучшить программу, обеспечьте возможность вывода таблицы и гистограммы в файл по запросу пользователя. Название файла также вводится пользователем. Чтобы написать программу, способную читать название файла, следует воспользоваться материалом раздела "Ввод имен файлов"
Версия 3 (ввод-вывод из файла).
Подобна версии 1, но ввод в ней берется из файла, а вывод направляется в файл. Таблица и гистограмма выводятся в один и тот же файл. Если занятия происходят в учебной группе, имена файлов задает преподаватель.
9. Статистика
Стандартное отклонение набора чисел — это мера того, насколько они отклоняются от среднего значения набора. Если стандартное отклонение мало, числа сконцентрированы возле среднего значения. Если же стандартное отклонение велико, то числа рассеяны по большому интервалу и могут значительно отклоняться от среднего значения. Стандартное отклонение S набора, состоящего из N чисел xj определяется следующим образом:
где — среднее значение N чисел x1,x2....
Напишите программу, которая позволяет вводить n чисел типа float и вычислять их среднее изначение и стандартное отклонение.
10. Кафе.
Программа предназначена для вычисления цены обеда в кафе. Программа представляет собой форму на которой изображено меню. В меню указаны названия блюд, напитков, и т.п. и их цены. Составитель меню может менять названия и цены. Посетитель кафе, делая выбор, должен после каждого выбора видеть цену обеда. Предусмотрите возможность отказа от блюда, или от всего обеда.
145