maxmin (a ,b); maxmin (a, c); //a получает максимальное значение maxmin (b, c); //c получает максимальное значение cout << a <<" " << b << " " << c << endl;
getch ();
return 0;
}
void maxmin (double & x, double &y) //определение функции
{double r;
if(x < y) { r =x; x= y; y=r;}
}
Пример 5. Опишем функцию cont (s), определяющую континент, на котором находится страна. Используем функцию для изменения значения переменной t на противоположное, если страны x и y находятся на разных континентах.
#include <iostream.h>
enum strana {Avstria, Egypet, Italia, Peru, Usa, Belarus}; enum continent {Amerika, Aphrika, Europe, Error}; continent cont (strana s); //прототип функции
main ()
{strana x, y;
bool t=true;
int k1, k2;
cout << "bool=" << t << endl; //начальное значение t
cout << “Input strana (2): 0 – Avstria, 1 – Egypet, ...5 – Belarus\n”; cin >> k1 >> k2;
x= static_cast<strana> (k1);
y= static_cast<strana> (k2);
if ((cont(x)==3 )||( cont(y)==3)) {cout <<"strana : ?"; return 1 ;} if (cont (x) !=cont (y)) t = ! t; cout << "bool=" << t << endl ; //конечное значение t
return 0 ;
}
continent cont (strana s) //определение функции {continent con;
switch ( s) { case Avstria:
case Italia:
case Belarus: con = Europe; break; case Egypet: con = Aphrika; break; case Peru:
case Usa: con = Amerika; break;
default: con = Error;
}
return (con);
}
Пример 6. Выделение целой и дробной частей вещественного числа. Обратите внимание на операцию приведения типа static_cast.
#include <iostream.h>
int main()
{
void intfrac(float, float&, float&); //прототип функции, передачапараметровпоссылке
float number, intpart, fracpart;
do {
cout << "\nEnter a real number: \n ";
cin >> number;
intfrac(number, intpart, fracpart); //вызов функции, неинициализированные // переменные intpart, fracpart передаются для возврата результата
cout << "Integer part is " << intpart << endl;
cout << ", fraction part is " << fracpart << endl;
} while (number != 0.0); //завершение работы, если введено 0.0
return 0;
}
//-------------------------------------------------------------void intfrac(float n, float& intp, float& fracp) // определение функции
{
long temp = static_cast<long>(n); //конвертирование в long int для выделения целой части
intp = static_cast<float>(temp); //конвертирование назад в тип float
fracp = n - intp; //нахождение дробной части
}
Использование ссылок в качестве формального параметра
В качестве основных причин включения ссылок в С++ называют необходимость повысить эффективность обмена с функциями через аппарат параметров и целесообразность возможности использовать вызов функции в качестве леводопустимого значения.
При использовании ссылки в качестве формального параметра обеспечивается доступ из тела функции к соответствующему фактическому параметру, т.е. к участку памяти, выделенному для фактического параметра. При этом параметр-ссылка обеспечивает те же самые возможности, что и параметр-указатель. Отличия состоят в том, что в теле функции для параметра-ссылки не нужно применять операцию разыменования *, а фактическим параметром должен быть не адрес (как для параметра-указателя), а обычная переменная.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.