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

иерархия классов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.68
warspirit
3 / 3 / 0
Регистрация: 30.03.2011
Сообщений: 61
08.10.2012, 00:33     иерархия классов #1
Создайте иерархию классов Point – Circle – Cylinder. Класс Point (точка) должен содержать координаты точки - х и у. Их следует объявить с квалификатором protected (защи-щенные).
Откры¬тая часть класса Point должна содержать следующие функции:
1. конструктор по умолчанию, в котором x и y присваивается значение 0;
2. функцию SetPoint(int x, int y) для изменения x и y, новые координаты должны быть переданы в функцию в качестве аргументов;
3. функцию Print() для вывода координат на экран в форме [ x, y ].
Класс Circle (круг), производный от класса Point, должен хранить радиус круга, также его следует дополнить функциями SetRadius(int r) (установка радиуса) и Area(), которая возвращает площадь круга. Переопределённая функция Print() должна выводить на экран координаты центра круга и его радиус. В классе Circle тоже должен быть конструктор по умолчанию.
Класс Cylinder (цилиндр), производный от Circle, должен содержать переменную Height – высоту цилиндра, дополнительные функции SetHeight(int h) и Volume() (вычисляет объём цилиндра), Print() должна выводить [x, y] и объём цилиндра на экран.
Написать программу, демонстрирующую работу с созданными классами.


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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// test.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <cmath>
class point
{
protected:
    int x,y;
public:
    point::point (int x=0 , int y=0);
    int  Setpoint(int _x , int _y)
    {
        std::cin>>_x>>_y;
        int x =_x;
        int y =_y;
    };
    void print()
    { std::cout<<"kordinati x = "<<x<<" y = "<<y;
    }
};
class circle : public point
{
    
public:
    int r;
    float s;
    int SetRadius(int _r)
    {
        std::cin>>_r;
        int r=_r;
    };
     float Area()
    {
         s=pow(r,2)*3.14;
        
    };
     void circle::print()
     {
         point::print();
         std::cout<<"/nPloshad` = "<<s;
     }
 
};
class Cylinder :public circle
{
 
public:
int h;
float v;
    int setheght(int _h)
    {
        std::cin>>_h;
        int h=_h;
    }
    float volume()
    {
        v=pow(r,2)*h*3.14;
    }
    void Cylinder::print()
    {
        std::cout<<"\nob`em cylindra = "<<v<<" x= "<<x<<" y = "<<y;
    }
};
 
 
int _tmain(int argc, _TCHAR* argv[])
 
{
    point p1;
    p1. Setpoint(int _x , int _y);
    p1.print();
        circle c1;
        c1.SetRadius(int _r);
        c1.print();
            Cylinder c2;
            c2.setheght(int _h);
            c2.print();
    return 0;
}
в чем мои ошибки ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2012, 00:33     иерархия классов
Посмотрите здесь:

C++ иерархия классов
иерархия классов C++
C++ иерархия классов
Иерархия классов .... C++
C++ Иерархия классов
Иерархия классов C++
Иерархия классов C++
Иерархия классов С++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
08.10.2012, 01:45     иерархия классов #2
Ошибок много.
1. Общая ошибка для всех трех классов: когда делает метод вида SetSometing(int value), зачем вы запрашиваете ввод у пользователя внутри этого метода, а потом еще и сохраняете введенное значение в переменную value? это же жутко нелогично. Например, я вызову этот метод так - SetSometing(42). И вместо того, чтобы просто записать 42 в память, ваш умный метод будет у меня еще и ввод запрашивать. Решение - удалить все cin из таких методов.

2. Другая ошибка актуальна для классов круг и цилиндр. Я про методы, возвращающие площадь и объем. Они должны возвращать площадь или объем. return. А не записывать нужное значение в какую-то там переменную, которую, кстати, создавать не надо - в задании о ней ни слова.

3. У конструктора точки нет тела.

4. Метод принт цилиндра должен вызывать метод принт точки.

5. Метод "вернуть объем" цилиндра должен вызывать метод "вернуть площадь" круга

6. Метод принт точки выдает информацию не в том формате.

7. Метод принт круга выдает не ту информацию (площадь вместо радиуса).

Далее уже не ошибки - наверное, все данные внутри классов должны быть защищенными, а не только у точки
Yandex
Объявления
08.10.2012, 01:45     иерархия классов
Ответ Создать тему
Опции темы

Текущее время: 06:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru