Министерство образования и науки РФ
Новосибирский Государственный Технический Университет
ОТЧЕТ
По лабораторной работе №2: “Расчет общего среднего времени выбора пункта меню”
Выполнили: Астапчук Л.А.
Данилов А.С.
Мещков Д.В.
Студенты: гр.ВИ-61
Проверила: Лыгина Н.И.
Новосибирск,2010.
Цель работы: написать программу, которая позволяет рассчитать время выбора пункта меню и подсчитать общее время работы с этой же программой.
Ход работы.
Алгоритм.
//N-общее количество пунктов меню.
//L- общее количество циклов.
//на основании того, какие пункты
выбираться чаще всего.
//время, которое у вас уйдет на выбор
того или иного пункта меню,
минимальное и максимальное.
Да, продолжаем работу
Нет, окончание работы.
Интерфейс имеет вид, приведенный на рисунке. Чтобы программа начала работать, вводим количество пунктов меню, количество прогонов (повторений) программы, время выбора пункта меню, минимальное и максимальное. Далее жмем на кнопку «Вычисление». И на выходе получаем «Пункт меню», вернее, его номер, и общее среднее время работы программы. Все предельно просто.
Графический интерфейс:
Как было в самом начале.
Как стало:
Ниже приведен код, использованный в программе, с комментариями.
Листинг.
#include <vcl.h>
#pragma hdrstop
#include "uRedaktor.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float x; //случайное число
float k; //пункт меню
float n; //количество пунктов меню
float l; //количество прогонов
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnOperationClick(TObject *Sender)
{
x=random(10)*0.1; //получение случайного числа
float n, tmax, tmin, k;
int i=1;
tmax=StrToInt(edMax->Text); //получение максимального времени из компонента Edit
tmin=StrToInt(edMin->Text); //получение минимального времени из компонента Edit
n=StrToInt(edN->Text); //получение количества пунктов меню из компонента Edit
p=i/n; //Подсчет вероятностей
if (i!=n)
{
while (p<i/n)
{
i++;
}
}
edK->Text=IntToStr(i); //вывод пункта меню на экран
float T;
T=(tmin+(tmax-tmin)*x); //нахождение времени выбора пункта меню по нормальному закону
float Vre;
Vre=Vre+T; //нахождение общего времени работы с программой
float sre;
float l;
l=StrToInt(edL->Text); //получение количества прогонов из компонента Edit
sre=Vre*l/l; //нахождение общего среднего времени работы с программой
edCountMiddleTime->Text=FloatToStr(sre); //выводим на экран
}
Результаты
1. Количество
Количество прогонов |
10 |
100 |
1000 |
5000 |
Среднее время |
1,89 |
1,39 |
1,2 |
1,1 |
2. Число пунктов
Вероятности выбора |
Равномерная вероятность выбора |
V |
VV |
VVV |
VVVV |
VVVV |
VVVV |
Среднее время |
2,3 |
1,29 |
1,6 |
2,2 |
2,5 |
3,09 |
3,4 |
3. Среднее время
Вероятности выбора |
Min=1 Max=4 |
Min=5 Max=8 |
Min=6 Max=8 |
Среднее время |
1,29 |
6,19 |
6,59 |
Могу сказать, что в случае увеличения прогонов у нас общее время работы с программой снижается. Этому есть простое объяснение – при усреднении большого числа параметров у нас на выходе получается цифра все меньше.
При работе всего с одним пунктом время работы с программой очень мало, и это естественно. Чем больше пунктов, тем дольше работаешь с программой.
При увеличении времени выбора время работы увеличивается. И правильно, ведь если мы тратим на выбор пункта много времени, то логично, что время работы с программой увеличивается.
Вывод. Для начала мы поставили задачу – написать алгоритм и сделать по нему программу. Построение алгоритма было самой важной частью работы, поскольку без правильной постановки задачи невозможно реализовать ее правильно. После написания алгоритма мы создали графический интерфейс и адаптировали код под алгоритм. И в конце концов научились делать еще одну программу.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.