
3.2 Равномерная и неравномерная дискретизация
После запуска программы появляется главное окно, которое содержит в себе поля для ввода минимального и максимального значений для Х, поля для ввода значений А и В, кнопка «График» и переключатель «Задание 2», который позволяет переключатся между типами дискретизации (Рис. 3.4). Чтобы провести равномерную дискретизацию, нужно ввести значения для Х и нажать на кнопку «График». После этого будут нарисованы 4 графика в соответствии с заданием (Рис. 3.5). Для перехода к неравномерной дискретизации необходимо нажать на переключатель «Задание 2». Чтобы вывести график неравномерной дискретизации нужно ввести значения для Х, а также значения А, В и нажать на кнопку «График» (Рис. 3.6). Числа А и В предназначены для формирования шага дискретизации.
Рис. 3.4
Рис. 3.5
Рис. 3.6
3.3 ТАБЛИЧНОЕ ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ И ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В ВИДЕ МНОГОЧЛЕНА
Для создания таблицы с кодами символов нужно ввести имя и нажать на кнопку «Таблица». После этого появится таблица с кодами (Рис. 3.7). Чтобы закодировать текст его нужно ввести в соответствующее поле и нажать на кнопку «Закодировать». После нажатия на кнопку, ниже появится закодированный текст и представление текста в виде многочлена (Рис. 3.8).
Рис. 3.7
Рис. 3.8
ЗАКЛЮЧЕНИЕ
В данной курсовой работе были разработаны программы и схема алгоритмов а также показана их реализация на языке программирования С++. Разработан простой и удобный интерфейс, не требующий определенных навыков и знаний, и позволяющий пользователю без проблем работать с программами. При выполнении курсовой работы были закреплены все знания по дисциплине “Теория информации и кодирования”.
СПИСОК ЛИТЕРАТУРЫ
Франка П. С++. Учебный курс. – М.: Питер, 2003. – 528 c.
Динман М. С++. Освой на примерах. – СПб.: БХВ-Петербург, 2006. – 377 c.
Лаптев В. В. C++. Экспресс-курс. - СПб.: БХВ-Петербург, 2004. – 512 c.
Крупник А.Б. Изучаем С++. - СПб.: Питер, 2004. – 254 c.
ПРИЛОЖЕНИЕ 1. ПРОГРАММНЫЕ КОДЫ.
Обучающая программа
// CourseDlg.cpp
////////////////////////
#include "stdafx.h"
#include "Course.h"
#include "CourseDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CCourseDlg::CCourseDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCourseDlg::IDD, pParent)
, m_edit_value(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
flag = true;
count = 1;
}
void CCourseDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EXPLORER1, m_browser);
DDX_Control(pDX, IDC_BUTTON1, m_button);
DDX_Control(pDX, IDC_BUTTON2, m_button2);
DDX_Control(pDX, IDC_BUTTON3, m_button3);
DDX_Control(pDX, IDC_STATIC8, m_static);
DDX_Control(pDX, IDC_EDIT1, m_edit);
DDX_Text(pDX, IDC_EDIT1, m_edit_value);
}
BEGIN_MESSAGE_MAP(CCourseDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, &CCourseDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &CCourseDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3, &CCourseDlg::OnBnClickedButton3)
END_MESSAGE_MAP()
BOOL CCourseDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
font.CreateFontA(
17, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"Tahoma");
m_static.SetFont(&font);
test.Create(IDD_FORMVIEW,this);
test.m_answer1.SetFont(&font);
test.m_answer2.SetFont(&font);
test.m_answer3.SetFont(&font);
test.m_answer4.SetFont(&font);
test.m_ch_answer1.SetFont(&font);
test.m_ch_answer2.SetFont(&font);
test.m_ch_answer3.SetFont(&font);
test.m_ch_answer4.SetFont(&font);
m_button2.ShowWindow(SW_HIDE);
m_browser.Navigate(_T("file://localhost/D:/Studio/project/Course/Course/1.html"),0,0,0,0);
return TRUE; // return TRUE unless you set the focus to a control
}
void CCourseDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CCourseDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CCourseDlg::OnBnClickedButton1()
{
std::ifstream file("1.data",std::ios::in);
if(!file)
{
MessageBox("Ошибка!!! Не найден файл 1.data");
OnOK();
}
test.m_question = readStringFromFile(file).c_str();
test.m_answer1.SetWindowTextA(readStringFromFile(file).c_str());
test.m_answer2.SetWindowTextA(readStringFromFile(file).c_str());
test.m_answer3.SetWindowTextA(readStringFromFile(file).c_str());
test.m_answer4.SetWindowTextA(readStringFromFile(file).c_str());
test.UpdateData(false);
m_button.ShowWindow(SW_HIDE);
m_button2.ShowWindow(SW_SHOW);
::ShowWindow( m_browser.GetSafeHwnd(),SW_HIDE);
test.ShowWindow(SW_SHOW);
file.close();
}
std::string CCourseDlg::readStringFromFile(std::ifstream& file)
{
std::string data,buf;
while(!file.eof())
{
file >> buf;
if(buf == "%|")
break;
else
data += buf+" ";
}
return data;
}
void CCourseDlg::OnBnClickedButton2()
{
test.UpdateData(true);
std::string path;
switch(count)
{
case 1:
path = "2.data";
break;
case 2:
path = "3.data";
break;
case 3:
path = "4.data";
break;
case 4:
path = "5.data";
break;
case 5:
path = "4.data";
}
std::ifstream file(path.c_str(),std::ios::in);
if(!file)
{
MessageBox("Ошибка!!! Не найден файл");
OnOK();
}
switch(count)
{
case 1:
if(!test.m_answer4.GetCheck())
{
flag = false;
}
count++;
test.m_question = readStringFromFile(file).c_str();
test.m_answer1.SetWindowTextA(readStringFromFile(file).c_str());
test.m_answer2.SetWindowTextA(readStringFromFile(file).c_str());
test.m_answer3.SetWindowTextA(readStringFromFile(file).c_str());
test.m_answer4.SetWindowTextA(readStringFromFile(file).c_str());
test.UpdateData(false);
break;
case 2:
if(!test.m_answer2.GetCheck())
{
flag = false;
}
count++;
test.m_answer1.ShowWindow(SW_HIDE);
test.m_answer2.ShowWindow(SW_HIDE);
test.m_answer3.ShowWindow(SW_HIDE);
test.m_answer4.ShowWindow(SW_HIDE);
test.m_ch_answer1.ShowWindow(SW_SHOW);
test.m_ch_answer2.ShowWindow(SW_SHOW);
test.m_ch_answer3.ShowWindow(SW_SHOW);
test.m_ch_answer4.ShowWindow(SW_SHOW);
test.m_question = readStringFromFile(file).c_str();
test.m_ch_answer1.SetWindowTextA(readStringFromFile(file).c_str());
test.m_ch_answer2.SetWindowTextA(readStringFromFile(file).c_str());
test.m_ch_answer3.SetWindowTextA(readStringFromFile(file).c_str());
test.m_ch_answer4.SetWindowTextA(readStringFromFile(file).c_str());
test.UpdateData(false);
break;
case 3:
if(!test.m_ch_answer2.GetCheck() || !test.m_ch_answer3.GetCheck())
{
flag = false;
}
count++;
test.m_question = readStringFromFile(file).c_str();
test.m_ch_answer1.SetWindowTextA(readStringFromFile(file).c_str());
test.m_ch_answer2.SetWindowTextA(readStringFromFile(file).c_str());
test.m_ch_answer3.SetWindowTextA(readStringFromFile(file).c_str());
test.m_ch_answer4.SetWindowTextA(readStringFromFile(file).c_str());
test.UpdateData(false);
break;
case 4:
if(!test.m_ch_answer2.GetCheck() || !test.m_ch_answer4.GetCheck())
{
flag = false;
}
count++;
test.m_ch_answer1.ShowWindow(SW_HIDE);
test.m_ch_answer2.ShowWindow(SW_HIDE);
test.m_ch_answer3.ShowWindow(SW_HIDE);
test.m_ch_answer4.ShowWindow(SW_HIDE);
test.m_edit1.ShowWindow(SW_SHOW);
test.m_edit2.ShowWindow(SW_SHOW);
test.m_edit3.ShowWindow(SW_SHOW);
test.m_stat1.ShowWindow(SW_SHOW);
test.m_stat2.ShowWindow(SW_SHOW);
test.m_stat3.ShowWindow(SW_SHOW);
test.m_stat4.ShowWindow(SW_SHOW);
test.m_stat5.ShowWindow(SW_SHOW);
test.m_stat6.ShowWindow(SW_SHOW);
test.m_question = readStringFromFile(file).c_str();
test.m_stat1.SetWindowTextA(readStringFromFile(file).c_str());
test.m_stat2.SetWindowTextA(readStringFromFile(file).c_str());
test.m_stat3.SetWindowTextA(readStringFromFile(file).c_str());
test.m_stat4.SetWindowTextA(readStringFromFile(file).c_str());
test.m_stat5.SetWindowTextA(readStringFromFile(file).c_str());
test.m_stat6.SetWindowTextA(readStringFromFile(file).c_str());
test.UpdateData(false);
break;
case 5:
if(test.m_edit1_value != 3 || test.m_edit2_value != 1 || test.m_edit3_value != 2)
{
flag = false;
}
if(flag == true)
{
test.ShowWindow(SW_HIDE);
m_button2.ShowWindow(SW_HIDE);
CRect rect;
m_browser.GetWindowRect(&rect);
m_browser.Navigate(_T("file://localhost/D:/Studio/project/Course/Course/2.html"),0,0,0,0);
m_browser.SetWindowPos(0,10,10,857,470,SWP_SHOWWINDOW);
::ShowWindow( m_browser.GetSafeHwnd(),SW_SHOW);
m_button3.ShowWindow(SW_SHOW);
m_edit.ShowWindow(SW_SHOW);
m_static.ShowWindow(SW_SHOW);
}
else
{
MessageBox("Вы не прошли тест!");
OnCancel();
}
break;
}
file.close();
}
void CCourseDlg::OnBnClickedButton3()
{
UpdateData(true);
if(m_edit_value == "25")
{
MessageBox("Ответ правильный!");
OnCancel();
}
else
MessageBox("Неправильно!");
}