Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SPO5

.pdf
Скачиваний:
8
Добавлен:
16.05.2015
Размер:
9.17 Mб
Скачать

11

// " > osvi osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if(!GetVersionEx ((OSVERSIONINFO *) &osvi))

{

return false;

}

switch (osvi.dwPlatformId)

{

//# # Windows NT. case VER_PLATFORM_WIN32_NT:

//# .

if ( osvi.wProductType == VER_NT_WORKSTATION )

{

//xfy z fc {y| }~ z c$y•y| ocf ! #=# !

//.

}

// # #.

else if ( osvi.wProductType == VER_NT_SERVER )

{

//xfy z fc {y| }~ z c$y•y| ocf ! #=# !

//#.

}

//c … #, service pack ( ),

//!.

if ( osvi.dwMajorVersion <= 4 )

{

cout << "version "

<<osvi.dwMajorVersion << "."

<<osvi.dwMinorVersion

<<osvi.szCSDVersion

<<"(Build "

<<(osvi.dwBuildNumber & 0xFFFF)<<")\n"; *file << "version "

<<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;

12

// # # 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]; char szFullDisk[5];

//P !

GetCurrentDirectory(_MAX_PATH-1, szCurrentDir);

//xfy z fc {y| }~ z c$y•y| ocf ! #=# !

//P ! # ƒ

}

1.2.1.

13

. / Windows 2 / ( 9 /

D 02 / 02. ! 8 /( ( 0

1 2.

 

 

 

BOOL

'% ( (D 9 1 " ( TRUE

 

FALSE).

 

BYTE

' 6 (8 !).

CHAR

Windows.

CONST

.

 

DWORD

6 (32 ! ).

INT

= " 1 .

LONG

32- 1 (/ 1 8.

LONGLONG

. ( A? 6 " 6 / 6 6 / 0 (64

 

! ).

 

LPCCH

1 9

( 06 Windows.

LPCH

1 9

Windows.

LPCSTR

1 9

( %A % Windows

 

% 0 8.

LPCTSTR

1 9

( %A % Unicode % 0

 

8 % Windows

LPSTR

1 9

% Windows % 0 -

 

8.

LPTCH

1 9

Unicode Windows.

LPVOID

1 9

A! 6 .

LPWORD

1 9

! 1 1 (16 !).

LPWSTR

1 9

9 %A % Unicode % 0

 

8.

PCCH

1 9

( 06 Windows.

PCHAR

1 9

Windows.

PCSTR

1 9

( %A % Windows

 

% 0 8.

PLONG

1 9

1 8 / 6 (32 ! ).

PSTR

1 9

% Windows % 0

 

8.

PTCH

1 9

Windows Unicode.

 

 

 

 

 

14

 

 

PTCHAR

 

1 9

Windows Unicode.

 

 

 

 

 

PTSTR

 

1 9

9 %A % 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

A! 6 .

 

 

PWSTR

 

1

9

9 %A % Unicode % 0

 

 

 

 

8.

 

 

TCHAR

 

Unicode Windows.

 

 

UCHAR

 

Windows ! 1 1 .

 

 

UINT

 

= " ! 1 1 .

 

 

ULONG

 

8 " ! 1 1 (32 ! ).

 

 

VOID

 

5A! 6 .

 

 

 

WCHAR

 

Unicode.

 

 

WORD

 

' 1 1 (16 !).

 

1.2.2.

( %" ( 7 8 / D 91 9 7% 8 A GetDriveType. k " 9 ( 7% 8 (:

UINT GetDriveType(

 

// > .

LPCTSTR lpRootPathName

);

 

 

m% 8 ( 1 ? / :

DRIVE_UNKNOWN

// >#

DRIVE_NO_ROOT_DIR

// ! #

DRIVE_REMOVABLE

// ># = !

DRIVE_FIXED

// … !

DRIVE_REMOTE

// ! =, . . #

DRIVE_CDROM

//

DROM – # !

DRIVE_RAMDISK

// ! # #

15

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 A ! / /, A- " ( !w ! / /.

.0:

lpRootPathName – c / (A? ( 6 %- 6 , !w / / 9( . “A:\”-/ ( /-

/ ). z lpRootPathName NULL, 1 ? (

!w %? (.

lpSectorsPerCluster " .

lpBytesPerSector " ! 6 .

lpNumberOfFreeClusters " ! / 02

/.

lpTotalNumberOfClusters " /.

1 ? 0 1 " (:

z 7% 8 ( / ! ( % 2 , 1 ? 1 "

TRUE;

z 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 91 % % 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. / 01 2 2 5 3 622 7 3 2

18

( %" ( / 02 ( 91% ( 7% 8 ( GetCurrentDirectory. / 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 lobalMemoryStatus !2 / 8 1 8 ( ( dwLength.

1.4. # 2 > 08 > 0

F 9 %, 0 /(?%A i :

%A 7 8 A ! / 6 ( 2 " 2

/ 2 2 2;

%A 7 8 A (;

7 8 A OS;

7 8 A %? 6 / %? " /-;

/ ( 0 / 2 !? 6, 9 i 1 D, 9- 1 9 8%.

19

2., .2. / 2 5 7 3-. 1

2.1.( 2 > 4 > ?

= ( / 6 ! 6 ! 0 ( (A (:

1.%" 0 ! 0 / 6 6;

2.1 % 0 ! ! 7-

8;

3.1 / 0 7% 8 ( 7 6 /.

. / D 9 9 ! 0:

( 9 ( ! – 4 " ;

! 9A – 2 " .

2.2.? 2 3 I 7 2 5 4

0, 1% 0 , " D 1/ 9

/ % 0: 8 " % 0.

K 91% ( ( % - / ( 7% 8, / A? 1 / 1 " ( 6 D 7% 8, / % % . - ( i 1 " , " 7% 8 ( 010 % !(. F , 0"-

7 1 / ( /%A? % 0 K:

0 = 1= ∙ − 1

. / 9 ( / / :

= 1 ∙ 2 ∙ 3 ∙ 4 ∙ … ∙ = !

20

; % %A 7% 8 A 0" ( 7 D / -

9 /%A? ! 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;

}

C! 1 " ( 1 ? 7% 8 6

Factorial().

. % ( ?9A

if(n==0 || n == 1)

! " 9 1 D 9 ( 0" ( 7 -

1! 0!, 1 K 7% 8 ! 1 91-

( %. %" 0 2 / !- " , /, . k / 6-

% 1 K A 0.

0" 7 / 0 9- 1 ( 6 %. 1 D ( % (, /

7% 8 ( ! ? ( ! / , .% 01 / % 6 7% 8 6 / D ( 01 6.

. %? % 02 ( (A ( 1 / " 2,

02 i 1 9 2 / ! 02 % i.

. / ! 6 % 8 ( ( ( ( . 2.1):D/ ( D / D 9 7 6 0, / % .

( , " !0 0 / D D/ , !2- / 0 9 / 8: 0 1 ( 2 7 6 2-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]