Программирование на C++

Работа с функциями 01

Техническое задание:

Работа с функциями и макросами

Код программы:

#include "stdafx.h"		//ищем библиотеку сначала в директории
#include <iostream>		//ищем библиотеку в общем хранилище
#include <iomanip>		//ф-ия setw()
#define Pi 3.14159		//объявляем символическую константу
#define circ(x) (Pi * (x) *(x))	//макрос для определения площади круга
#define ell(x, y) (Pi *(x) * (y))//макрос для определения площди элипса
using namespace std;		//объявления пространства имён std
void books(int &);		//передача по ссылке
void books(int *);		//передача по указателю
void swap(int &, int &);	//переустановка двух значений
int max(int a, int b);		//определение максимального чилса
int max_if(int a, int b);	//определение максимального чилса
const double PI = 3.14159;	//определение именованной константы
void zachet(int ocenka);	//вычисление оценки по баллам
//----------------------------------------------------------------------------------------------------------
 
int main()
{
	int a(10), b = 20, c = 30, d(70);		//объявление переменных
	char h = 'a';					//переменные указатель на целое
	int *ptr_a, *ptr_b, *ptr_c;			//вывод адреса и значение адреса переменной а
	cout << "&a = " << &a << " a= " << a << endl
		<< "&b = " << &b << " b= " << b << endl
		<< "&c= " << &c << " c= " << c << endl;
	ptr_a = &a; ptr_b = &b; ptr_c = &c;	//присваивания значения а
	cout << "ptr a, b, c - " << ptr_a << " " << ptr_b << " " << ptr_c << endl;
	cout << "*ptr a, b, c - " << setw(8) << *ptr_a << setw(9) << *ptr_b << setw(9) << *ptr_c << endl;
	*ptr_a = 777; cout << "ptr_a= " << *ptr_a << endl;
	a = 888;      cout << "    a= " << *ptr_a << endl;
	books( a); cout << "books( a) = " << a << endl; //books(int&); //передача по ссылке
	books(&a); cout << "books(&a) = " << a << endl; //books(int*); //передача по указателю
	swap(b, c); cout << "b = " << " c= " << c << " swap(b, c)= " << "b = " << b << ", c= " << c << endl;
	max(a, b); cout << "a = " << a << " b= " << b << " max(a,b)= " << max(a, b) << endl;
	max_if (a, b); cout << "a = " << a << "b= " << b << " max if(a,b) = " << max_if(a, b) << endl;
	cout << "Pi = " << Pi << "PI = " << PI << endl;
	cout << "circ(x) = " << circ(a) << endl; // вызов макроса для определения площади круга
	cout << "ell(x) = " << ell(a, b) << endl;// вызов макроса для определения площади эллипса
	#undef Pi				// отменяем действие символической константы Pi
	//cout << "Pi = " << Pi << endl;		// Переменная Pi не определена - ошибка
	cout << (a < b ? "a<b" : "a>b") << endl;	// альтернативный условный оператор ? :
	zachet(d);				// вызов функции для вычисления оценки по балам
	cout << static_cast <int>(h) << endl;	// целочисленное представление переменной 
	system("pause");
	return 0;
}
//-----------------------------------------------------------------------------------------------
 
void books(int &a) { a = 99; } 		// передача по ссылке
void books(int *a) {*a = 99;}		// передача по указателю, присваивание по адресу
void swap(int &a, int &b)			// перестановка двух значений 
{int temp = a; a = b; b = temp;}
int max( int a, int b)			//определение максимального числа
{ return (a > b) ? a : b; }
int max_if(int a, int b)			//определение максимального числа
{ int m; if (a >= 0) m = a; else m = b; return m ;}
void zachet(int ocenka)			//вычисление оценки по балам
{
	cout << "poluchenno balov = " << ocenka;
	if (ocenka >= 90) cout << "ocenka A" << endl; else
	if (ocenka >= 80) cout << "ocenka B" << endl; else
	if (ocenka >= 70) cout << "ocenka C" << endl; else
	if (ocenka >= 60) cout << "ocenka D" << endl; else cout << "ocenka F" << endl;
}

Результат выполнения программы:

&a = 0x7fff59bb1088 a= 10
&b = 0x7fff59bb1084 b= 20
&c= 0x7fff59bb1080 c= 30
ptr a, b, c - 0x7fff59bb1088 0x7fff59bb1084 0x7fff59bb1080
*ptr a, b, c -       10       20       30
ptr_a= 777
    a= 888
books( a) = 99
books(&a) = 99
sh: pause: command not found
b =  c= 20 swap(b, c)= b = 30, c= 20
a = 99 b= 30 max(a,b)= 99
a = 99b= 30 max if(a,b) = 99
Pi = 3.14159PI = 3.14159
circ(x) = 30790.7
ell(x) = 9330.52
a>b
poluchenno balov = 70ocenka C
97
 

Добавить комментарий