СПО_Praktikum_k_lab_rabotam
.pdf11
<<osvi.dwMajorVersion << "."
<<osvi.dwMinorVersion
<<osvi.szCSDVersion
<<"(Build "
<<(osvi.dwBuildNumber & 0xFFFF)<<")\n";
}
else
{
cout << osvi.szCSDVersion << "(Build " << (osvi.dwBuildNumber & 0xFFFF) << ")\n";
*file << osvi.szCSDVersion << "(Build " << (osvi.dwBuildNumber & 0xFFFF) << ")\n";
}
break;
// # # Windows 95. case VER_PLATFORM_WIN32_WINDOWS:
//xfy z fc {y| }~ z c$y•y| ocf ! #=# !
//# Winˆ.
break;
}
return TRUE;
}
//////////////////////////////////////////////////////////////////
//
void MemmoryStat(std::ofstream *file)
{
// ! ! =?
MEMORYSTATUS stat;
stat.dwLength = sizeof(MEMORYSTATUS); // ! =
GlobalMemoryStatus (&stat);
cout << "\nMemmory Statistics\n"; cout << "===================\n";
//xfy z fc {y| }~ z c$y•y| ocf ! #=# !
//ƒ
*file << "\nMemmory Statistics\n"; *file << "===================\n";
//xfy z fc {y| }~ z c$y•y| ocf ! #=# !
//#
}
/////////////////////////////////////////////////////////////
// P ! void CurrentDir(std::ofstream *file)
{
char szCurrentDir[_MAX_PATH];
12
char szFullDisk[5];
//P !
GetCurrentDirectory(_MAX_PATH-1, szCurrentDir);
//xfy z fc {y| }~ z c$y•y| ocf ! #=# !
//P ! # ƒ
}
1.2.1. Windows
. ! ! / Windows 2 / ) 9 /
B 02 /! 02. !" 8 /) ) 0
1 2.
|
|
BOOL |
(& ! !) (B ! 9 1 !# ) TRUE |
|
FALSE). |
BYTE |
(!6 (8 "). |
CHAR |
Windows. |
CONST |
! !. |
DWORD |
6 (32 " !). |
INT |
> # 1 !. |
LONG |
32-!1 )/ 1 ! 8. |
LONGLONG |
. !) ! !<? 6 # 6 / 6 6 / 0 (64 |
|
" !). |
LPCCH |
!1! 9 ! ) 06 Windows. |
LPCH |
!1! 9 ! Windows. |
LPCSTR |
!1! 9 ! ) &< & Windows |
|
& 0 8. |
LPCTSTR |
!1! 9 ! ) &< & Unicode & 0 |
|
8 & Windows |
LPSTR |
!1! 9 ! & ! Windows & 0 - |
|
8. |
LPTCH |
!1! 9 ! Unicode Windows. |
LPVOID |
!1! 9 ! <" 6 . |
LPWORD |
!1! 9 ! " 1 1 ! ! (16 "). |
|
|
13 |
|
|
|
LPWSTR |
|
!1! 9 ! 9 &< & Unicode & 0 |
|
|
|
|
||
|
|
|
8. |
|
|
PCCH |
|
!1! 9 ! ) 06 Windows. |
|
|
PCHAR |
|
!1! 9 ! Windows. |
|
|
PCSTR |
|
!1! 9 ! ) &< & Windows |
|
|
|
|
& 0 8. |
|
|
PLONG |
|
!1! 9 ! 1 ! 8 / 6 (32 " !). |
|
|
PSTR |
|
!1! 9 ! & Windows & 0 |
|
|
|
|
8. |
|
|
PTCH |
|
!1! 9 ! Windows Unicode. |
|
|
PTCHAR |
|
!1! 9 ! Windows Unicode. |
|
|
PTSTR |
|
!1! 9 ! 9 &< & Windows Unicode |
|
|
|
|
& 0 8. |
|
|
PUCHAR |
|
!1! 9 ! Windows " 1 1 ! !. |
|
|
PUINT |
|
!1! 9 ! 8 # " 1 1 ! !. |
|
|
PULONG |
|
!1! 9 ! " 11 ! 8 / 6 (32 " !). |
|
|
PVOID |
|
!1! 9 ! <" 6 . |
|
|
PWSTR |
|
!1! 9 ! 9 &< & Unicode & 0 |
|
|
|
|
8. |
|
|
TCHAR |
|
Unicode Windows. |
|
|
UCHAR |
|
Windows " 1 1 ! !. |
|
|
UINT |
|
> # " 1 1 ! !. |
|
|
ULONG |
|
8 # " 1 1 ! ! (32 " !). |
|
|
VOID |
|
5<" 6 . |
|
|
WCHAR |
|
Unicode. |
|
|
WORD |
|
( 1 1 ! ! (16 "). |
|
1.2.2.
) ) 7 !8 / ! B 91 ! 9
7& 8 < GetDriveType. K # 9 !) 7& 8 ):
UINT GetDriveType(
LPCTSTR lpRootPathName // > .
14
);
M& 8 ) 1 !?! / !:
DRIVE_UNKNOWN |
// ># |
DRIVE_NO_ROOT_DIR |
// ! # |
DRIVE_REMOVABLE |
// ># = ! |
DRIVE_FIXED |
// … ! |
DRIVE_REMOTE |
// ! =, . . # |
DRIVE_CDROM |
// DROM – # ! |
DRIVE_RAMDISK |
// ! # # |
1.2.3." #
) ) /! 02 " / ! # 2 / !2
91& ) 7& 8 ) GetDiskFreeSpace 6,
/:
BOOL GetDiskFreeSpace( LPCTSTR lpRootPathName,
LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters
);
M& 8 ) 1 ! 7 !8 < " / /, <- #!) "i " / ! ! ! /.
.! ! 0:
•lpRootPathName – c! / )<?!) 6 ! ! &- 6 !, "i !/ / 9(!. “A:\”-/ ) /-
/!). m lpRootPathName ! NULL, 1 !?! ) "i &? ! ).
•lpSectorsPerCluster – # ! !.
•lpBytesPerSector – # "!6 ! .
•lpNumberOfFreeClusters – # " / 02 ! ! /.
•lpTotalNumberOfClusters – # ! ! /.
15
1 !?! 0 1 !# ):
•m 7& 8 ) / " ! ) & 2!, 1 !?! 1 !# –
TRUE;
•m 7& 8 ) &/!#&, 1 !?! !) # ! –
FALSE.
16
1.2.4. # % -
BOOL GetVersionEx(
LPOSVERSIONINFO lpVersionInfo // > ,
//# !
//.
);
& & ! LPOSVERSIONINFO /:
typedef struct _OSVERSIONINFOEX |
|
|
{ |
|
// > = |
DWORD dwOSVersionInfoSize; |
||
DWORD dwMajorVersion; |
// ! |
|
DWORD dwMinorVersion; |
// = |
|
// ! # |
||
DWORD dwBuildNumber; |
// ! |
|
DWORD dwPlatformId; |
// |
|
TCHAR szCSDVersion[128]; |
// ! |
|
WORD |
wServicePackMajor; |
// |
// ! Service Pack |
||
WORD |
wServicePackMinor; |
// # Service Pack |
WORD |
wSuiteMask; |
// ! ! |
BYTE |
wProductType; |
// ! |
BYTE |
wReserved; |
// > > # # |
}OSVERSIONINFOEX;
. / 91 ! 7& 8 GetVersionEx !/ & !1! 9 !1 & & 0 ! ! dwOSVersionInfoSize.
, !8 6 0 / ) ) 1 !# ) dwPlat-
formId, wProductType, wProductType, dwMajorVersion dwMinorVersion !" 8 6.
17
dwPlatformId |
wProductType |
|
dwMajorVersion |
dwMinorVersion |
, OS |
|
|
|
|
|
|
VER_PLATFORM_WIN32_NT |
VER_NT_WORKSTATION |
5 |
|
1 |
Microsoft |
|
|
|
Windows XP |
||
|
|
|
|
|
|
|
VER_NT_SERVER |
5 |
|
2 |
Microsoft |
|
|
|
|
Windows |
|
|
|
|
|
|
.NET |
|
|
4 |
|
2 |
|
|
|
|
|
|
|
VER_PLATFORM_WIN32_WINDOWS |
F / |
4 |
|
0 |
Windows 95 |
|
|
4 |
|
10 |
Windows 98 |
|
|
|
|
|
Microsoft |
|
|
4 |
|
90 |
Windows |
|
|
|
Millennium |
||
|
|
|
|
|
|
|
|
|
|
|
Edition |
1.2.5. ( %
) ) /! 02 &? 6 / 91& )
7& 8 ) GetCurrentDirectory. . 7& 8:
DWORD GetCurrentDirectory |
|
|
( |
// |
> |
DWORD nBufferLength, |
||
LPTSTR lpBuffer |
// |
> |
); |
|
|
1.3. * +, - - 1 /23-- 42/ .-
18
) ) /! 02 ! ) 91& ) 7& 8 ) GlobalMemoryStatus. . 7& 8:
void GlobalMemoryStatus ( |
// ! = |
MEMORYSTATUS *stat |
|
); |
|
& & ! MEMORYSTATUS /:
typedef struct _MEMORYSTATUS {
DWORD dwLength; |
// > = |
DWORD dwMemoryLoad; |
// > # |
DWORD dwTotalPhys; |
// > , |
DWORD dwAvailPhys; |
// # ! > , |
DWORD dwTotalPageFile; |
// > !, |
DWORD dwAvailPageFile; |
// # ! =? # ! |
DWORD dwTotalVirtual; |
// # , > |
DWORD dwAvailVirtual; |
// |
// # ! # |
} MEMORYSTATUS, *LPMEMORYSTATUS;
F "2 / 9 /&, # / 01 7& 8 GlobalMemoryStatus "2 / ! 8 ! 1!8 ) ) dwLength.
1.4. 2F2 - 2 2< 2. +6 2< .+
F! ! 9 ! &, 0 /)?&< ! G ! !:
•&< 7 !8 < " / 6 ! ) ! 2 # 2 / !2 2 !2;
•&< 7 !8 < ! );
•7 !8 < OS;
•7 !8 < &? 6 / &? # /-;
•/ ) 0 /! 2 "? 6, 9 G 1 B, 9- 1 ! 9 8&.
19
2.& )2. *- 12 4 /2. '2 .5 1
2.1.!- 2< 2. 0 2< .=
> ) /! 6 !" ! 6 !" 0 ) )< ):
1. ! 0 !" 0 ! / 6 6;
2.1 ! & 0 ! ! " !" 7- !8;
3.1 ! ! /! 0 7& 8 ) ! 7!6 ! /.
. / B 9 9 !" 0:
•! ) 9 !) !" ! – 4 #! !;
•!" ! ! 9< – 2 #! !.
2.2.= F- / . F2H 4-2 120
0, ! 1& 0 ! !, #! B !1/ 9 ! / & 0: 8 # & 0.
! ! D 91& ) ) & - / ) 7& 8, / ! !<? 1!/! ! 1 !# ) 6 B 7& 8, / & ! & !. ! ! - ) G 1 !#!, # 7& 8 ) 010 ! ! & "). F!, 0#-
7! ! ! 1!/! ) /&<? & 0 D:
0 = 1= ∙ − 1
. / ! 9 !) / ! ! /!:
= 1 ∙ 2 ∙ 3 ∙ 4 ∙ … ∙ = !
20
N & &< 7& 8 < 0# ) 7! ! ! B / !-
9 /&<? " !1:
double Factorial(int n)
{
double f;
if(n<0) return -1; // ƒ g
//# # > … • #=
//(#=? ! > ).
if(n==0 || n == 1) f = 1.0;
else
f = n*Factorial(n-1); return f;
}
A" ! ! ! 1 !# ) 1 !?! 7& 8 6
Factorial().
. ! & ) ?9< ! !
if(n==0 || n == 1)
" # ! 9 1 B 9 ) 0# ) 7!-
! 1! 0!, 1! D 7& 8 " 1 91- ! ) &. ! 0 2 / "- # , ! /, !. K / ! ! 6-
& 1! D < ! 0.
0# 7! ! ! /! 0 9- 1 ! ) 6 &. 1 B ! !) & ), /! 7& 8 ) " !?! ) " / !, .& 01 ! / & 6 7& 8 6 / B ) 01 6.
. &? ! & 02 ! ) )< ) 1!/!#!2,
02 G 1 9 2 / " 02 & G.
. / " 6 &!8 ) ) ) ! ! ! ( . 2.1): !B/!) ! ! B / B! 9 ! 7!6 0, ! / & !.
) , # "0 0 / B !B/ ! ! !, "2- / 0 9 / !8: 0 !1 ! ) 2 7!6 !2-