Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Возврат структуры в качестве значения функции






 

 

Переменные-структуры можно возвращать в качестве значения функции. Следующая функция принимает две структуры типа 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;

}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.