Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!1-25.doc
Скачиваний:
11
Добавлен:
28.10.2018
Размер:
2.62 Mб
Скачать

6.4 Программа, выводящая информ . О загрузке операт . Памяти компьютера

#include "iostream.h"

#include "string.h"

#include "windows.h"

#include "stdio.h"

#include "conio.h"

void main()

{

MEMORYSTATUS ms;

char str[100];

char kb[100];

ms.dwLength=sizeof(MEMORYSTATUS);

GlobalMemoryStatus(&ms);

CharToOem(" КБ\n",kb);

CharToOem("Всего физической памяти: ",str);

cout<<str<<ms.dwTotalPhys/1024<<kb;

CharToOem("Свободно физической памяти: ",str);

cout<<str<<ms.dwAvailPhys/1024<<kb;

CharToOem("Всего виртуальной памяти: ",str);

cout<<str<<ms.dwTotalPageFile/1024<<kb;

CharToOem("Свободно виртуальной памяти: ",str);

cout<<str<<ms.dwAvailPageFile/1024<<kb;

CharToOem("Процент загрузки физической памяти: ",str);

cout<<str<<ms.dwMemoryLoad<<endl;

cout.flush();

getch();

}

6.5

с 192.24.0.0 по 192.31.255.0

ответы:

- 192.24.0.0

- Маска подсети

Переводим из 10ой в 2ую

2410=000110002

3110=000111112

111110002=24810

Маска подсети 255.248.0.0

  • Клиент 1

Начальный IP-адрес-192.24.8.1

Конечный IP-адрес-?

Маска подсети-255.255.252.0

Определяем шаг подсети

25210=111111002

22=4- шаг подсети

8+4=12

Конечный IP-адрес-192.24.11.254

  • Клиент 2

Начальный IP-адрес-192.24.14.1

Конечный IP-адрес-192.24.15.254

Маска подсети-?

1410=000011102

1510=000011112

111111102=25410

Маска подсети 255.255.254.0

7.1 Функци в С++. Примеры.

Функция - это совокупность объявлений, и операторов, обычно предназначенная для решения определенной задачи. Каждая функция должна иметь имя, которое используется для ее объявления , определения и вызова. В любой программе на СИ должна быть функция с именем main (главная функция), именно с этой функции, в каком бы месте программы она не находилась, начинается выполнение программы.

При вызове функции ей при помощи аргументов (формальных параметров) могут быть переданы некоторые значения (фактические параметры) используемые во время выполнения функции. Функция может возвращать некоторое (одно !) значение. Это возвращаемое значение и есть результат выполнения функции, который при выполнении программы подставляется в точку вызова функции, где бы этот вызов не

встретился. Допускается также использовать функции без аргументов и функции не возвращающие никаких значений. Действие таких функций может состоять, например, в изменении значений некоторых переменных, выводе на печать некоторых текстов и т.п..

С использованием функций в языке СИ связаны три понятия - определение функции (описание действий, выполняемых функцией), объявление функции (задание формы обращения к функции) и вызов функции (выполнение).

тип_результата имя_функции(тип_аргумента _имя_аргумента[, ...])

{ тело функции}

Функция может возвращать значения типа void, int,float и т.д. Имя функции может быть произвольным, но желательно, чтобы оно указывало на ее назначение. Если для выполнения функции нужно предоставить ей некоторую информацию в виде аргумента, то в круглых скобках должен быть указан тип аргумента и, при необходимости, его имя. Тип аргумента может быть любым. Если аргументов несколько, их описания (тип плюс имя) разделяются запятыми.

Пример:

int rus (unsigned char r)

{ if (r>='А' && c<='ё')

return 1;

else

return 0;

}

В данном примере определена функция с именем rus, имеющая один параметр с именем r и типом unsigned char. Функция возвращает целое значение, равное 1, если параметр функции является буквой русского алфавита, или 0 в противном случае.

В языке СИ нет требования, чтобы определение функции обязательно предшествовало ее вызову. Определения используемых функций могут следовать за определением функции main, перед ним, или находится в другом файле.

Существуют два способа вызова функции:

имя_функции (е1, е2,. .., eN)

(указатель _на_функцию) (е1, е2,..., eN) Указатель_на_функцию - это переменная, содержащая адрес функции. Адрес функции может быть присвоен указателю оператором

указатель_на_функцию = имя _функции;

/* Неправильное использование параметров */

void change (int x, int y)

{ int k=x; x=y; y=k; }

В данной функции значения переменных x и y, являющихся формальными параметрами, меняются местами, но поскольку эти переменные существуют только внутри функции change, значения фактических параметров, используемых при вызове функции, останутся неизменными. Для того чтобы менялись местами значения фактических аргументов можно использовать функцию приведенную в следующем примере.

/* Правильное использование параметров */

void change (int *x, int *y)

{ int k=*x; *x=*y; *y=k; }

При вызове такой функции в качестве фактических параметров должны быть использованы не значения переменных, а их адреса change (&a,&b). Указатель на функцию может быть передан в качестве параметра функции. При этом разадресация происходит во время вызова функции, на которую ссылается указатель на функцию. Присвоить значение указателю на функцию можно в операторе присваивания, употребив имя функции без списка параметров.

double (*fun1)(int x, int y);

double fun2(int k, int l);

fun1=fun2; /* инициализация указателя на функцию */

(*fun1)(2,7); /* обращение к функции */