КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Возврат структуры в качестве значения функции
Переменные-структуры можно возвращать в качестве значения функции. Следующая функция принимает две структуры типа 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; }
|