С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 11.09.2018
Сообщений: 38
1

Добавить дружественную функцию в класс

02.10.2018, 14:19. Показов 1466. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть сделанный класс по условию: Создать класс "шар" по таким условиям:
а) его экземпляр содержит размер радиуса.
b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с
параметрами создает экземпляр с соответствующим значением радиуса.
c) его методы позволяют получать и присваивать значения радиуса и объема,
выполняя при этом соответствующие преобразования.



Помогите добавить дружественную функцию в код: дружественная функция frd в качестве параметров получает экземпляры двух шаров и возвращает новый шар, объем которого равен сумме объемов этих двух шаров

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#define Pi 3,14
 
 
class Sphere{
public:
Sphere():r(0.0){}
Sphere(const double _r){
 
    r = _r;
    V = (4 * Pi * r * r) / 3;
}
void set_radius(const double _r){
     r = _r;
     V = (4 * Pi * r * r) / 3;
}
double set_capacity(const double _V){
     V = _V;
     return V;
}
double get_capacity(){
    return V;
}
private:
double r;
double V;
};
int main()
{
    Sphere s;
    s.set_radius(2.0);
    std::cout << s.get_capacity() << std::endl;
 
    Sphere s1(3.0);
    std::cout << s1.get_capacity() << std::endl;
    s1.set_capacity(3829);
    std::cout << s1.get_capacity() << std::endl;
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2018, 14:19
Ответы с готовыми решениями:

Как добавить дружественную функцию в класс
Написал код, а как добавить функцию friend? #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Добавить дружественную функцию
Создать класс машина, имеющий марку (указатель на строку) , число цилиндров, мощность. Определить...

Добавить дружественную функцию в программу
Помогите переделать программу. Не могу добавить дружественную функцию. Задание. Создать два...

Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию)
помогите решить пожалуйста Задание 2. Бинарная операция Создать класс вещественных чисел...

2
Модератор
Эксперт С++
13727 / 10923 / 6479
Регистрация: 18.12.2011
Сообщений: 29,155
02.10.2018, 15:52 2
Лучший ответ Сообщение было отмечено Hi_tech_2018 как решение

Решение

Переменную V не стоит хранить.
Членами данными класса должны быть переменные, которые однозначно определяют объект.
Остальное должно вычисляться через методы класса.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
class Sphere {
public:
    Sphere() :r(0.0) {}
    Sphere(const double _r) {
 
        r = _r;
    }
    void set_radius(const double _r) {
        r = _r;
    }
    double get_radius() {
        return r;
    }
    double get_capacity() {
        double V = (4. * M_PI * r * r * r) / 3.;
        return V;
    }
    void SetCapacity(double V)
    {
        r=pow(3.*V / (4.*M_PI), 1. / 3.);
    }
    friend Sphere frd(Sphere a, Sphere  b);
 
private:
    double r;
    //double V;
};
 
Sphere frd(Sphere a, Sphere  b)
{
    double V = a.get_capacity() + b.get_capacity();
    Sphere t;
    t.SetCapacity(V);
    return t;
}
 
int main()
{
    Sphere s;
    s.set_radius(2.0);
    std::cout << s.get_capacity() << std::endl;
 
    Sphere s1(3.0);
    std::cout << s1.get_capacity() << std::endl;
 
    Sphere s3 = frd(s, s1);
    std::cout << s3.get_radius()<<' '<<s3.get_capacity() << std::endl;
    system("pause");
    return 0;
}
Кстати, функцию frd не обязательно делать friend,
она не использует r напрямую.
0
0 / 0 / 0
Регистрация: 11.09.2018
Сообщений: 38
17.10.2018, 16:12  [ТС] 3
Спасибо большое!
0
17.10.2018, 16:12
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2018, 16:12
Помогаю со студенческими работами здесь

Создайте класс Date. Добавить в строковый класс функцию
3)Создайте класс Date, который будет содержать информацию о дате (день, месяц, год). С помощью...

Передача строки в дружественную функцию
Доброго времени суток! Помогите пожалуйста исправить программу( было много попыток, но все тщетно),...

Перенос кода в дружественную функцию
Нужно подсчитать количество слов в строке и сделать это через дружественную функцию. Не совсем...

Передача параметров в дружественную функцию класса
Всем доброго времени суток. Читал про дружественные функции, в учебнике по которому учусь написано,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C#
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru