ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.05.2024
Просмотров: 71
Скачиваний: 0
СОДЕРЖАНИЕ
Завдання на навчальну практику студента
2.8 Завдання № 9 Програмування алгоритмів, що розгалужуються
2.9 Завдання № 10 Програмування циклічних алгоритмів.
3.1 Програмування лінійних алгоритмів
3.2 Програмування алгоритмів, що розгалужуються
3.3 Програмування циклічних алгоритмів
3.4 Програмування з використанням одновимірних масивів
3.5 Покажчики. Програмування з використанням динамічних двовимірних масивів
// 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 CLab_04_1Dlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CLab_04_1Dlg::OnAdd()
{
UpdateData(1); int NumCars = car[0].NumCars;
if (m_edAdd != "" && NumCars < 10)
{
m_lbGarage.AddString(m_edAdd);
car[NumCars].Litres = m_edLitres;
car[NumCars].Price = m_edPrice;
car[NumCars].Way = m_edWay;
car[NumCars].Tonnage = m_edTonnage;
car[NumCars].Weight = m_edWeight;
strcpy(car[NumCars].Cars, m_edAdd);
float z;
if (m_edTonnage > 0)
{
m_edNum = int(m_edWeight / m_edTonnage);
z = float(m_edWeight) / float(m_edTonnage);
if (m_edNum < z) m_edNum = m_edNum++;
}
else m_edNum = 1;
Result = (m_edWay/100)*m_edLitres*m_edPrice*m_edNum;
CString s s.Format("%0.2f", Result);
m_lbResult.AddString(s);
m_lbGarage.SetCurSel(NumCars);
m_lbResult.SetCurSel(NumCars);
NumCars car[0].NumCars = NumCars;
UpdateData(0);
}
}
void CLab_04_1Dlg::OnGarage()
{
int x = m_lbGarage.GetCurSel();
m_edLitres = car[x].Litres;
m_edPrice = car[x].Price;
m_edWay = car[x].Way;
m_edTonnage = car[x].Tonnage;
m_edWeight = car[x].Weight;
float z;
if (m_edTonnage > 0) {
m_edNum = int(m_edWeight / m_edTonnage);
z = float(m_edWeight) / float(m_edTonnage);
if (m_edNum < z) m_edNum = m_edNum++;
}
else m_edNum = 1;
Result = (m_edWay/100)*m_edLitres*m_edPrice*m_edNum;
CString s; s.Format("%0.2f", Result); m_lbResult.DeleteString(x);
m_lbResult.InsertString(x, s);
m_lbResult.SetCurSel(xUpdateData(0);
void CLab_04_1Dlg::OnDel()
{
int NumCars = car[0].NumCars;int i;
Garage Mas[10]; int x = m_lbGarage.GetCurSel(); for (int i = 0; i < NumCars; i++) Mas[i] = car[i];
if (NumCars > 0) NumCars--;
for (i = 0; i < NumCars; i++)
if (i < x) car[i] = Mas[i];
else car[i] = Mas[i + 1];
m_lbGarage.DeleteString(x)
m_lbResult.DeleteString(x);
if (NumCars > 0 {
m_lbGarage.SetCurSel(NumCars - 1);
m_lbResult.SetCurSel(NumCars - 1);
CLab_04_1Dlg::OnGarage(); };
car[0].NumCars = NumCars;
}
void CLab_04_1Dlg::OnSave()
{
int NumCars = car[0].NumCars;
if (NumCars > 0)
{
int x = m_lbGarage.GetCurSel();
UpdateData(1);
car[x].Litres = m_edLitres;
car[x].Price = m_edPrice;
car[x].Tonnage = m_edTonnage;
if (m_cbWay == 0) car[x].Way = m_edWay;
else
for (int i = 0; i < NumCars; i++) car[i].Way = m_edWay;
if (m_cbWeight == 0) car[x].Weight = m_edWeight;
else
for (int i = 0; i < NumCars; i++)
car[i].Weight = m_edWeight;
for (int i = 0; i < NumCars; i++)
{
m_lbGarage.SetCurSel(i);
CLab_04_1Dlg::OnGarage();
UpdateData(0);
m_lbGarage.SetCurSel(x);
CLab_04_1Dlg::OnGarage(); }
CFileDialog fd(FALSE,NULL,"*.dat",NULL,"(*.*)|*.*|(*.dat)|*.dat|");
int res = fd.DoModal();
if (res = IDOK)
{
FILE *F;
F = fopen(fd.GetPathName(), "w");
fwrite(&car, sizeof(car), 1, F);
fclose(F);
}
}
void CLab_04_1Dlg::OnOptimum()
{
int NumCars = car[0].NumCars;
for (int i = 0; i < NumCars; i++)
{
m_lbGarage.SetCurSel(i);
CLab_04_1Dlg::OnGarage();
UpdateData(0);
}
if (NumCars > 0)
{
CString st;
m_lbResult.GetText(0, st);
Result = atof(st);
int j = 0;
float n;int i;
for (i = 1; i < NumCars; i++)
{
m_lbResult.GetText(i, st);
n = atof(st);
if (n < Result)
{
Result = n;
j = i;
} }
m_lbGarage.GetText(j, st);
st = "optimalniy variant" + st;
AfxMessageBox(st);
}
}
void CLab_04_1Dlg::OnOpen()
{
CFileDialog fd(TRUE,NULL,"*.dat",NULL,"(*.*)|*.*|(*.dat)|*.dat|");
int res = fd.DoModal();
if (res = IDOK)
{
for (int i = car[0].NumCars - 1; i >= 0 ; i--)
{
m_lbGarage.DeleteString(i);
m_lbResult.DeleteString(i);
}
FILE *F;
if ((F = fopen(fd.GetPathName(), "r")) != NULL)
fread(&car, sizeof(car), 1, F);
fclose(F);int i;
for (i = 0; i < car[0].NumCars; i++)
m_lbGarage.AddString(car[i].Cars);}}
Рис. 9 Результат виконання завданяя №6
2.6 Завдання № 7
Створення меню в Windows Application (на базі одиндокументного застосування). Підключення команд меню до коду програми.
Код програми:
#include "stdafx.h"
#include "lab_07.h"
#include "MainFrm.h"
#include "lab_07Doc.h"
#include "lab_07View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
BEGIN_MESSAGE_MAP(CLab_07App, CWinApp)
//{{AFX_MSG_MAP(CLab_07App)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
// NOTE - the ClassWizard will add and remove mapping macros here.
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP,
CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
CLab_07App::CLab_07App()
{
}
CLab_07App theApp;
BOOL CLab_07App::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic();
statically
#endif
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(); // Load standard INI file options (including MRU)
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CLab_07Doc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CLab_07View));
AddDocTemplate(pDocTemplate);
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if (!ProcessShellCommand(cmdInfo))
return FALSE;
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
}
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
// No message handlers
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
// App command to run the dialog
void CLab_07App::OnAppAbout()
Рис. 10 Результат виконання завданяя №7
2.7 Завдання № 8
Обчислити значення виразу . Порівняти набуте значення з вказаним правильним результатом (При x = 17.421; в = 10.365 ; z = 0.828 відповідь s = 0.086815.).
Код програми:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <math.h>
int main ()
{
double x,y,z,a,b,s;
cout << "Vvedite x: ";
cin >> x;
cout << "Vvedite y: ";
cin >> y;
cout << "Vvedite z: ";
cin >> z;
a = pow(y+(pow((x-1),1/3)), 1/4 );
b = fabs(x-y)*(pow(sin(z),2)+tan(z));
s=a/b;
cout << "Result s= " << s << endl;
return 0;getch();}
Рис. 12 Результат виконання завданяя №8
2.8 Завдання № 9 Програмування алгоритмів, що розгалужуються
Завдання
Код програми:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <math.h>
int main ()
{
double x,y,z,a,b,s;
cout << "Vvedite x: ";
cin >> x;
cout << "Vvedite y: ";
cin >> y;
cout << "Viberite f: 1 - sh(x), 2 - x^2, 3 - exp(x)";
cin >> z;
a = pow(y+(pow((x-1),1/3)), 1/4 );
b = fabs(x-y)*(pow(sin(z),2)+tan(z));
s=a/b;
cout << "Result s= " << s << endl;
return 0;getch();}
Рис. 13 Результат виконання завданяя №9
2.9 Завдання № 10 Програмування циклічних алгоритмів.
-
а
b
S(x)
n
Y(x)
–2
–0.1
160
Таблиця 1
Код програми:
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
int main()
{
double a,b,h,x,y,s,p;
int n,i;
cout << "Vvedite a,b,n" << endl;
cin >> a >> b >> n;
h=(b-a)/10;
x=a;
do
{
p=s=1;
for (i=0; i<=n; i++)
{
s += pow((-1),i)*(2*n*n+1)*pow(x,(2*n))/(2*n);
}
y=(1-x*x/2)*cos(x)-x/2*sin(x);
cout << setw(15) << x << setw(15) << y << setw(15) << s << endl;
x += h;}
while (x <= b+h/2);
cout << endl;
return 0;
}
Рис. 14 Результат виконання завданяя №10