Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
#1

Классы - C++

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

Help, пытаюсь самостоятельно постигнуть классы, компилятор ругается, помогите где ошибка и как исправить:
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
#include<stdio.h>
#include<conio.h>
#include<math.h>
 
class V
{
 public:
 V (float x,float y,float z);
 float run(float x,float y,float z)
  {
    return((sqrt(10*(pow(x,1/3)+pow(x,(y+2)))))*(pow(asin(z),2)-abs(x-y)));
  }
  private:
  float x,y,z;
};
 
void main()
{
 V primer();
 float x,y,z,b;
 printf("Vvedite x,y,z: ");
 scanf("%f%f%f",&x,&y,&z);
 b=primer.run(x,y,z);
 printf("b= ",b);
 
 getch();
}
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2011, 13:57     Классы
Посмотрите здесь:

Классы - C++
помогите сделать задание: 1. создать класс типа прямоугольник. поля - высота и ширина. класс имеет конструктор. методы вычисляют площадь,...

Классы - C++
Здравствуйте, изучаю классы есть задание. Кое как сделал для имени и фамилии, а для зарплаты не получается. Прошу помогите и...

Классы - C++
Помогите пожалуста решить задачу Создайте класс в соответствии с условием задачи. Определить функции-члены класса для вывода реализации...

классы - C++
здравствуйте. помогите, пожалуйста, доделать программу. #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include...

Классы в С++ - C++
Подскажите пожалуйста, как решить данную задачу %-) В рамках консольного приложения создать класс А с полями а и b и свойством с....

Классы - C++
Исправьте ошибки и выведите данные в табличном виде. //1TSTRUC.CPP //Данная программа использует структуру с одним //элементом...

Классы в С++ - C++
Всем доброго времени суток. По ООП дали такое задание: Разработать представление целого положительного числа, представленного в виде...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.07.2011, 14:09     Классы #2
Mr. Pyatachok, 1. Вы объявили конструктор с тремя параметрами, но где его реализация?
2. Поскольку вы объявили конструктор с параметрами, конструктор по умолчанию автоматически сгенерирован не будет, однако вы пытаетесь вызвать его в строке 19.
3. В строке же 19 вы неверно вызываете конструктор по умолчанию, даром что он отсутствует. Пустые скобки писать не надо.
4. Архитектура класса неверна. Если вы храните данные x, y, z в качестве полей класса, не надо передавать их в функцию run, она должна использовать эти самые поля в качестве исходных данных.
5. Пишете на плюсах - используйте потоки, а не сишный ввод-вывод.
6. int main(), сколько раз обсуждалось.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
01.07.2011, 14:12     Классы #3
Плюс неочевидная ошибка: 1/3 == 0
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.07.2011, 14:13     Классы #4
grizlik78, на формулу не глядел)) Не в ней суть))
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
01.07.2011, 14:14     Классы #5
silent_1991, да я понял. Это чтобы 2 раза не вставать, когда появится вопрос: почему считает неправильно!
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 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;
}
Mr. Pyatachok
8 / 8 / 0
Регистрация: 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()
{
}
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.07.2011, 14:46     Классы #8
Конструктор по умолчанию, в данном случае инициализирует переменные нулями.
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
01.07.2011, 14:50  [ТС]     Классы #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Конструктор по умолчанию, в данном случае инициализирует переменные нулями.
значит, туда можно подставлять числовые значения, я правильно понимаю?
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.07.2011, 15:01     Классы #10
Mr. Pyatachok, куда туда?
ValeryLaptev
Эксперт С++
1035 / 814 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
01.07.2011, 15:03     Классы #11
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
значит, туда можно подставлять числовые значения, я правильно понимаю?
Правильно. Более того, можно выражения писать, которые приводятся к типу поля.
Читайте в книжках "список инициализации конструктора".
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
01.07.2011, 15:13  [ТС]     Классы #12
сорри, затупил, не туды написал ,а как если в public писать все переменные, сильно чем отличаться будет, не судите строго о степени моей тупости, простто хочу разобраться, и еще вопросик: private для чего?
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.07.2011, 15:18     Классы #13
Mr. Pyatachok, одна из основ ООП - инкапсуляция + сокрытие данных. Вы не даёте пользователю самостоятельно "крутить шестерёнки" вашего класса (т.е. не даёте ему доступа к закрытым переменным), но даёте ему "рычаги и педали" (т.е. открытые методы), которые пользователь будет "дёргать и нажимать" (вызывать) и которые и будут эти самые "шестерёнки" "крутить". private как раз для этого. Члены, описанные в этой секции, доступны только изнутри класса.
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
01.07.2011, 15:27  [ТС]     Классы #14
я так понял, что вышеприведенный код является конструктором по умолчанию, а как будет выглядеть просто в виде конструктора, извините еще раз, я только пытаюсь разобраться на данном примере, разбираю разные методы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2011, 15:31     Классы
Еще ссылки по теме:

С++ классы - C++
Создать класс Triangle для представления треугольника. Поля данных должны включать углы и стороны. Требует реализовать операции: получения...

Классы - C++
Доброго времени суток! Реализую систему окон и контролов. Вот пример: class Control { public: void draw(); void...

КЛАССЫ - C++
Очень нужна помощь!!! подскажите где ошибки: #include &lt;iostream&gt; #include &lt;windows.h&gt; char* Rus(const char* text); using...

Классы - C++
Всем доброго времени суток, кто поможет реализовать след пункты: -конструктор без аргументов: -конструктор инициализации: ...

Классы - C++
Объясните новичку , зачем нужны классы. Вкратце , я знаю что тема расширная , но хотя бы объяснить для чего нужны они?


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.07.2011, 15:31     Классы #15
Mr. Pyatachok, вышеприведённый код является реализацией класса и функции main с примером использования этого класса. Класс же содержит конструктор по умолчанию (инициализирующий поля нулями), конструктор с параметрами (инициализирующий поля значениями параметров) и метода run, который выполняет некую работу. Советую вам почитать про классы в С++, конструкторы и всё вытекающее. Вы не владеете терминологией, поэтому с вами очень трудно общаться. Заполните этот пробел, а что не понятно - спрашивайте.
Yandex
Объявления
01.07.2011, 15:31     Классы
Ответ Создать тему
Опции темы

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