Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
StelX
-5 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 4
#1

Передача объектов функциям - C++

10.09.2015, 19:41. Просмотров 255. Ответов 4
Метки нет (Все метки)

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

Исходный код:
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
55
56
57
#include <iostream>
#include <conio.h>
#include <stdlib.h>
 
/*Создайте класс, содержащий 1 закрытую переменную (радиус шара) и открытые функции (для присвоения значений закрытым переменным, 
для получения значения закрытых переменных, для получения объема шара и его диамет-ра). Пользователь вводит значение с клавиатуры, 
оно передается в закрытую переменную и используется в функци-ях.*/
 
using namespace std;
 
class Sphere 
{
    double sphere_rad;
public:
    void setSphereRad(double value);
    double getVolume();
    double getDiameter();
};
 
void Sphere::setSphereRad(double value)
{
    sphere_rad=value;
}
 
double Sphere::getVolume()
{
    double volume;
    volume=4.188790205*pow(sphere_rad,3);
    //cout<<volume;
    return volume;
}
 
double Sphere::getDiameter()
{
    double diameter;
    diameter=2*sphere_rad;
    //cout<<diameter;
    return diameter;
}
 
int main()
{
    double r;
    class Sphere obj;
 
    cout<<"Enter the sphere radius:";
    cin>>r;
    obj.setSphereRad(r);
    system("CLS");
    cout<<"Sphere radius = "<<r<<"\n\n";
    cout<<"Diameter of a sphere is equal to  "<<obj.getDiameter()<<"\n";
    cout<<"Volume of a sphere is equal to  "<<obj.getVolume()<<"\n";
 
    system("pause");
    return 0;
 
}


То что получилось после переделок:
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
class Sphere 
{
    double sphere_rad;
    double v;
public:
    void setSphereRad(double value);
    double getDiameter();
    double setVolume(double sphere_rad){double v=4.188790205*pow(sphere_rad,3); return v;}
    void showVolume(){cout<< v;};
    
};
 
 
Sphere getVolume(double sphere_rad)
{
    double v;
    Sphere volume;
    volume.setVolume(sphere_rad);
    return volume;
}
 
int main()
{
    double r=3;
    class Sphere obj;
    obj=getVolume(r);
    obj.showVolume();
 
    system("pause");
    return 0;
 
}
Думаю понятно, что ищется объём и диаметр сферы. Также на предварительном этапе исходную задачу я немного упростил.

Скажите в каком месте (не) накосячил? На выходе выдаёт одно и тоже неприличное число. По конкретной тематике ничего не нашёл путного.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2015, 19:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача объектов функциям (C++):

Передача объектов функциям(объясните код программы) - C++
Вот программа: #include &lt;iostream&gt; using namespace std; class samp { int i; public: samp(int n){i=n;} void set_i(int...

Передача функциям строк - C++
Нужно отсортировать массив строк методом выбора. Вот функция которую я побровал написать, но она не проходит компиляцию. void...

Передача массивов функциям - C++
Динамическое выделение памяти под массив; * Функцию SetArray, предоставляющая пользователю возможность заполнить массив (или заполняет...

Ofstream в структуре и передача этой структуры по функциям - C++
Добрый день. Задача следующая: есть структура, в данном случае - Ofstr. В ней *stream - поток на вывод. Путь передается в функцию...

Передача параметров функциям. Можно ли изменить этот параметр внутри функции - C++
Доброго времени суток, господа знатоки.В универе препод задал сделать проверку входных данных на ошибку.Я полазил по форумам и нашел вот...

Задачи по функциям. Объясните задачу по функциям) - C++
Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое число, которое получится после записи цифр...

4
nmcf
5680 / 4991 / 1701
Регистрация: 14.04.2014
Сообщений: 20,362
10.09.2015, 20:00 #2
C++
1
2
3
4
double getVolume(Sphere &s)
{
    return 4.188790205 * pow(s.sphere_rad, 3);
}
Только поле перенеси в public.
1
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
10.09.2015, 20:01 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
StelX,
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>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
class Sphere 
{
    double sphere_rad;
    double v;
public:
    void setSphereRad(double value);
    double getDiameter();
// накосячил здесь
    double setVolume(double sphere_rad){double v=4.188790205*pow(sphere_rad,3); return v;} 
// v - локальная переменная, которая скрывает переменную класса
// в книжках читать про: области видимости
    void showVolume(){cout<< v;};
    
};
 
 
Sphere getVolume(double sphere_rad)
{
    double v; // не нужно
    Sphere volume;
    volume.setVolume(sphere_rad);
    return volume;
}
 
int main()
{
    double r=3;
    class Sphere obj; // class писать не нужно
    obj=getVolume(r);
    obj.showVolume();
 
    system("pause");
    return 0;
 }
Переделать можно так:
C++
1
2
3
4
    void setVolume(double sphere_rad)
    {
        v = 4.188790205 * pow(sphere_rad, 3);
    }
1
zss
Модератор
Эксперт С++
6573 / 6135 / 2021
Регистрация: 18.12.2011
Сообщений: 15,990
Завершенные тесты: 1
10.09.2015, 20:12 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
using namespace std;
 
class Sphere 
{
    double sphere_rad;
public:
    Sphere():sphere_rad(0){}
    Sphere(double value):sphere_rad(value){}
    Sphere(const Sphere& s):sphere_rad(s.sphere_rad){}
    double GetRadius()
    {
        return sphere_rad;
    }
};
 
 
double GetVolume(Sphere& v)
{
    double r=v.GetRadius();
    return 4.188790205*r*r*r;
}
 
int main()
{
    double r=3.0;
    class Sphere obj(r);
    cout<<GetVolume(obj)<<endl;
    system("pause");
    return 0;
}
1
StelX
-5 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 4
10.09.2015, 20:13  [ТС] #5
Работает! Благодарю всех сердечно за помощь и пояснения.
0
10.09.2015, 20:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2015, 20:13
Привет! Вот еще темы с ответами:

Передача объектов в функции - C++
Добрый день. После C изучал C#, теперь перешел к плюсам. Столкнулся с непониманием. В каких случаях следует передавать объект в...

Передача массива объектов функции - C++
Выбивает о каком-то недопустимом внешнем символе, подскажите что не так. Вот цикл, который прогоняет массив. user = new Students; ...

Передача объектов в функции и методы - C++
Как лучше передавать объекты в функции и методы и почему?

Передача объектов в аргументы метода - C++
Есть программа. Мне нужно было написать несколько перегруженных операторов. Вот собственно весь код: class String{ char *str; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.