Когда выполнение функции завершается, она может возвратить значение программе, которая её вызвала. Если тип возвращаемого функцией значения не void, то она может входить в состав выражений или, в частном случае, располагаться в правой части оператора присваивания.
Рассмотрим пример, который демонстрирует применение функции, получающей значение веса в фунтах и возвращающей эквивалентное значение веса в килограммах.
#include <iostream>
#include <conio>
using namespace std;
float perevod(float f); // прототип функции
int main() {
float funt, kg;
cout << "\nVvedite ves v funtah: ";
cin >> funt;
kg = perevod(funt);
cout << "Ves v kilogrammah = " << kg << endl;
getch(); return 0;
}
//---------------функция переводит фунты в килограммы
float perevod(float f) {
float kilograms = 0.453592 * f; // можно просто return (0.453592 * f);
return kilograms;
}
Как видно из данного примера, тип возвращаемого значения указывается перед именем функции при объявлении и определении функции. В момент возвращения, с помощью оператора return, функцией значения происходит копирование значения переменной kilograms в переменную kg.
Количество аргументов у функции может быть сколь угодно большим, но возвращаемое значение всегда только одно. Эта особенность функций является препятствием в тех случаях, когда необходимо вернуть программе несколько значений, однако есть способы, позволяющие возвращать несколько значений при помощи функций.
Д/З
№1
| Напишите программу, позволяющую вычислять сумму двух целых величин с помощью функции, возвращающей суммарный результат.
|
Ответ
| #include <iostream>
#include <conio>
using namespace std;
int sum(int s1, int s2);
int main() {
int a, b;
cout << "Vvedite 1-oe slagaemoe: "; cin >> a;
cout << "Vvedite 2-oe slagaemoe: "; cin >> b;
cout << endl;
cout << a << " + " << b << " = " << sum(a, b);
getch(); return 0;
}
int sum(int s1, int s2) {
return (s1 + s2);
}
|
Д/З №2
| Напишите программу, позволяющую вычислять результат деления двух вещественных чисел. Операцию деления с проверкой ошибок реализуйте с помощью функции.
|
Ответ
| #include <iostream>
#include <conio>
using namespace std;
float delenie(float d1, float d2); // или float delenie(float& d1, float& d2)
int main() {
float a, b;
cout << "\nVvedite delimoe: "; cin >> a;
cout << "Vvedite delitel: "; cin >> b;
cout << endl << a << " / " << b << " = " << delenie(a, b);
getch(); return 0;
}
//---------------------------------------------------------------------------
float delenie(float d1, float d2) { // или float delenie(float& d1, float& d2)
float result;
if(d2 == 0) {
cout << "\nERROR: delenie na nol!";
result = -0;
}
else {
result = d1/d2;
}
return result;
}
|