Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Mr. Pyatachok
8 / 8 / 1
Регистрация: 30.06.2011
Сообщений: 250
#1

Классы - C++

01.07.2011, 13:57. Просмотров 455. Ответов 14
Метки нет (Все метки)


http://www.cyberforum.ru/cpp-beginners/thread430293.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2011, 13:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Классы (C++):

Программа по классам, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы
Нужно написать программу, которая использует классы точек и прямых на...

Наследование, базовые классы и производные классы
Добрый вечер.Задание: необходимо разработать поля и методы наследуемые из...

Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.)
Уважаевые, помогите написать прожку на экзамене: Создать класс 3D фигура, и...

Классы возможностей(Mixin классы)
Не могу понять смысла использования mixin классов( это класс в котором есть...

Классы, включающие другие классы
Столкнулся вот с таким кодом: #include <iostream> class Point { public: ...

14
silent_1991
Эксперт С++
5007 / 3065 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
01.07.2011, 14:09 #2
Mr. Pyatachok, 1. Вы объявили конструктор с тремя параметрами, но где его реализация?
2. Поскольку вы объявили конструктор с параметрами, конструктор по умолчанию автоматически сгенерирован не будет, однако вы пытаетесь вызвать его в строке 19.
3. В строке же 19 вы неверно вызываете конструктор по умолчанию, даром что он отсутствует. Пустые скобки писать не надо.
4. Архитектура класса неверна. Если вы храните данные x, y, z в качестве полей класса, не надо передавать их в функцию run, она должна использовать эти самые поля в качестве исходных данных.
5. Пишете на плюсах - используйте потоки, а не сишный ввод-вывод.
6. int main(), сколько раз обсуждалось.
1
grizlik78
Эксперт С++
1982 / 1475 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
01.07.2011, 14:12 #3
Плюс неочевидная ошибка: 1/3 == 0
1
silent_1991
Эксперт С++
5007 / 3065 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
01.07.2011, 14:13 #4
grizlik78, на формулу не глядел)) Не в ней суть))
0
grizlik78
Эксперт С++
1982 / 1475 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
01.07.2011, 14:14 #5
silent_1991, да я понял. Это чтобы 2 раза не вставать, когда появится вопрос: почему считает неправильно!
1
silent_1991
Эксперт С++
5007 / 3065 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
01.07.2011, 14:16 #6
grizlik78, ясненько))

Mr. Pyatachok, примерно так по-хорошему должен был бы выглядеть класс:

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
#include <iostream>
#include <cmath>
 
class V
{
public:
    V():
    m_x(),
    m_y(),
    m_z()
    {
    }
 
    V(double x, double y, double z):
    m_x(x),
    m_y(y),
    m_z(z)
    {
    }
 
    double run() const
    {
        return sqrt(10.0 * (pow(m_x, 1.0 / 3.0) + pow(m_x, m_y + 2.0))) * (pow(asin(m_z), 2.0) - abs(m_x - m_y));
    }
 
private:
    double m_x;
    double m_y;
    double m_z;
};
 
int main()
{
    double x, y, z;
 
    std::cout << "Enter x: ";
    std::cin >> x;
    std::cout << "Enter y: ";
    std::cin >> y;
    std::cout << "Enter z: ";
    std::cin >> z;
 
    V v(x, y, z);
 
    std::cout << "Result: " << v.run() << std::endl;
 
    return 0;
}
1
Mr. Pyatachok
8 / 8 / 1
Регистрация: 30.06.2011
Сообщений: 250
01.07.2011, 14:42  [ТС] #7
Цитата Сообщение от silent_1991 Посмотреть сообщение
grizlik78, ясненько))

Mr. Pyatachok, примерно так по-хорошему должен был бы выглядеть класс:

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
#include <iostream>
#include <cmath>
 
class V
{
public:
    V():
    m_x(),
    m_y(),
    m_z()
    {
    }
 
    V(double x, double y, double z):
    m_x(x),
    m_y(y),
    m_z(z)
    {
    }
 
    double run() const
    {
        return sqrt(10.0 * (pow(m_x, 1.0 / 3.0) + pow(m_x, m_y + 2.0))) * (pow(asin(m_z), 2.0) - abs(m_x - m_y));
    }
 
private:
    double m_x;
    double m_y;
    double m_z;
};
 
int main()
{
    double x, y, z;
 
    std::cout << "Enter x: ";
    std::cin >> x;
    std::cout << "Enter y: ";
    std::cin >> y;
    std::cout << "Enter z: ";
    std::cin >> z;
 
    V v(x, y, z);
 
    std::cout << "Result: " << v.run() << std::endl;
 
    return 0;
}
sorri, я еще ламер, зачем V():
m_x(),
m_y(),
m_z()
{
}
0
silent_1991
Эксперт С++
5007 / 3065 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
01.07.2011, 14:46 #8
Конструктор по умолчанию, в данном случае инициализирует переменные нулями.
1
Mr. Pyatachok
8 / 8 / 1
Регистрация: 30.06.2011
Сообщений: 250
01.07.2011, 14:50  [ТС] #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Конструктор по умолчанию, в данном случае инициализирует переменные нулями.
значит, туда можно подставлять числовые значения, я правильно понимаю?
0
silent_1991
Эксперт С++
5007 / 3065 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
01.07.2011, 15:01 #10
Mr. Pyatachok, куда туда?
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
01.07.2011, 15:03 #11
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
значит, туда можно подставлять числовые значения, я правильно понимаю?
Правильно. Более того, можно выражения писать, которые приводятся к типу поля.
Читайте в книжках "список инициализации конструктора".
1
Mr. Pyatachok
8 / 8 / 1
Регистрация: 30.06.2011
Сообщений: 250
01.07.2011, 15:13  [ТС] #12
сорри, затупил, не туды написал ,а как если в public писать все переменные, сильно чем отличаться будет, не судите строго о степени моей тупости, простто хочу разобраться, и еще вопросик: private для чего?
0
silent_1991
Эксперт С++
5007 / 3065 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
01.07.2011, 15:18 #13
Mr. Pyatachok, одна из основ ООП - инкапсуляция + сокрытие данных. Вы не даёте пользователю самостоятельно "крутить шестерёнки" вашего класса (т.е. не даёте ему доступа к закрытым переменным), но даёте ему "рычаги и педали" (т.е. открытые методы), которые пользователь будет "дёргать и нажимать" (вызывать) и которые и будут эти самые "шестерёнки" "крутить". private как раз для этого. Члены, описанные в этой секции, доступны только изнутри класса.
2
Mr. Pyatachok
8 / 8 / 1
Регистрация: 30.06.2011
Сообщений: 250
01.07.2011, 15:27  [ТС] #14
я так понял, что вышеприведенный код является конструктором по умолчанию, а как будет выглядеть просто в виде конструктора, извините еще раз, я только пытаюсь разобраться на данном примере, разбираю разные методы
0
silent_1991
Эксперт С++
5007 / 3065 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
01.07.2011, 15:31 #15
Mr. Pyatachok, вышеприведённый код является реализацией класса и функции main с примером использования этого класса. Класс же содержит конструктор по умолчанию (инициализирующий поля нулями), конструктор с параметрами (инициализирующий поля значениями параметров) и метода run, который выполняет некую работу. Советую вам почитать про классы в С++, конструкторы и всё вытекающее. Вы не владеете терминологией, поэтому с вами очень трудно общаться. Заполните этот пробел, а что не понятно - спрашивайте.
1
01.07.2011, 15:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2011, 15:31
Привет! Вот еще темы с решениями:

классы/дочерние классы/методы
помогите пожалуйста! надо что выводились только учебеники. чтоб былo через...

Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур.
Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных...

Классы в c++
Извините, если не туда написал. Вот к примеру я создал класс classa. В функции...

классы
что значит : и :: A-основной класс B-производный класс B::B(int ch,char...


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

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

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