![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Возврат структуры в качестве значения функции
Переменные-структуры можно возвращать в качестве значения функции. Следующая функция принимает две структуры типа Worker и возвращает сотрудника с большей зарплатой:
Worker getWellPaid(Worker w1, Worker w2) { return w1.salary > w2.salary? w1: w2; }
Обратите внимание на то, что здесь используется сокращенная запись оператора if-else, эквивалентная такой конструкции:
Worker getWellPaid(Worker w1, Worker w2) { if (w1.salary > w2.salary) { return w1; } else { return w2; } }
При вызове функции getWellPaid() совместно с функцией printWorker()
Worker director = {" Андрей", 30, 5000}; Worker manager = {" Сергей", 35, 3000}; printf(" Сотрудник\n\n"); printWorker(getWellPaid(director, manager)); printf(" \nЗарабатывает больше\n");
получается следующий результат:
Передача структуры в качестве аргумента функции Рассмотрим следующую задачу. Объявить структуру Point (Точка) с вещественными полями x, y и z, которые задают координаты этой точки в трехмерном пространстве. Написать функцию, которая принимает два аргумента типа Point и возвращает расстояние между ними.
#include " stdafx.h" #include < iostream> using namespace std;
struct Point { float x; float y; float z; };
float sqr(float number) { return number*number; }
float getDistance(Point p, Point q) { return sqrt(sqr(p.x-q.x) + sqr(p.y-q.y) + sqr(p.z-q.z)); }
int main() { Point p = {1, 2, 3}; Point q = {2, 3, 4}; cout < < getDistance(p, q)) < < endl; }
|