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

Виртуальные функции(помогите исправить) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритм обхода поля http://www.cyberforum.ru/cpp-beginners/thread525961.html
Игра, Сапер, когда нажимаешь на пустую клетку, то открывается поле, состоящее из пустых клеток, так вот, проблема именно в этом алгоритме. Суть в общем такова, смотрим 8 клеток вокруг нажатой и если она пустая то рекурсивно вызываем эту же функцию, и т.д. Проблема в том, что алгоритм нужно довести до ума, ибо иногда курсор убегает влево и прога вылетает с ошибкой виндоуса или же программа...
C++ Вывести на экран координаты центра всех окружностей, радиус которых не превышает заданного значения. На плоскости задано n окружностей. Окружности задаются такими полями: координаты центра и радиус. Вывести на экран координаты центра всех окружностей, радиус которых не превышает заданного значения. http://www.cyberforum.ru/cpp-beginners/thread525945.html
C++ Длинная арифметика
Поодскажите какую-нибудь библиотеку, где реализована работа со знаковыми целыми числами произвольной длины.
C++ Можно так поделить
Ребят, можно так сделать ? Если у меня переменная n описанная перед самой главной программой и есть функция которая считает суму. Можно ли как то поделить эту суму на n в еще одной функции ? Я сделал просто sa=sum/n; но мне выдает ошибку Unit1.cpp(443): E2087 Illegal use of pointer
C++ Для функции вывести на экран значения Y для Х http://www.cyberforum.ru/cpp-beginners/thread525929.html
Создайте пожалуйста такую программу Для функции Y = f(X), график которой приведен ниже, вывести на экран значения Y для Х = 0, 0.25, 0.5, ... 19.75. http://s005.***********/i209/1203/88/e404cf6502b0.jpg
C++ Помощь. в Составление Алгоритма.*Схематически.* Приветствую форумучан ... Прошу помочь в сложно сложившейся ситуаций. Тут конечно не СС+ И С+ И Т.Д но на форумах молчат а тут я решал проблемы по сс+ просто может кто подскажет желатено *напишет* с коментами краткими. Буду благодарен. Вот скрин работ которые мне дали на выполнение . http://s59.***********/i166/1203/46/ccdb553c739e.jpg 6,1- Задание я Сделал 6,2 не могу вообще не... подробнее

Показать сообщение отдельно
TheCross84
1 / 1 / 0
Регистрация: 15.03.2012
Сообщений: 6

Виртуальные функции(помогите исправить) - C++

23.03.2012, 00:07. Просмотров 428. Ответов 1
Метки (Все метки)

Задание:
Создать абстрактный базовый класс Figure с виртуальной функцией - площадь.
Создать производные классы Square, Circle, Triangle, Trapeze в которых данная
функция переопределена. В функции main определить массив указателей на
абстрактный класс, которым присваиваются адреса различных объектов.

Наработки:
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
82
83
#include<iostream>
#include<math.h>
using namespace std;
class Figure
{
    public:
    double A;
    double B;
    double C;
    double x;
    double r;
    double a;
    double b;
    double h;
    void set()
    {
        cout<<"Vvedite storoni treugolnika"<<endl; cin>>A>>B>>C;
        cout<<"Vvedite storonu kvadrata"<<endl;cin>>x;
        cout<<"Vvedite radius kruga"<<endl; cin>>r;
        cout<<"Vvedite storonu(a), storonu(b), vysotu(h) Trapecii"<<endl; cin>>a>>b>>h;
    }
    void get()
    {
        
    }
    virtual double SFigure()=0;
 
};
class Square: public Figure
{
    
    double SFigure()
    {
        return x*x;
    }
};
class Circle: public Figure
{
public:
    double SFigure()
    {
        return 2*3.14*(r*r);
    }
};
class Triangle: public Figure
{   
public:
    double SFigure()
    {
        double p,q;
        p=(A+B+C)/2;
        q=p*(p-A)*(p-B)*(p-C);
        return  pow(q,1/2);
    }
};
class Trapeze: public Figure
{
public:
    double SFigure()
    {
        return (a+b)*h/2;
    }
};
void main()
{
    Figure *F;
    Square S;
    Circle C;
    Triangle T;
    Trapeze R;
    S.set();
    C.set();
    T.set();
    R.set();
    F=&S;
    cout<<F->SFigure();
    F=&C;
    cout<<F->SFigure();
    F=&T;
    cout<<F->SFigure();
    F=&R;
    F->SFigure();
}
Добавлено через 34 минуты
Почти получилось сделать самому
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include<iostream>
#include<math.h>
#include<windows.h>
using namespace std;
class Figure
{
    public:
    double x;
    double y;
    double z;
    void set(double Tx, double Ty, double Tz)
    {
        x=Tx;
        y=Ty;
        z=Tz;
    }
    void get()
    {
        
    }
    virtual double SFigure()=0;
 
};
class Square: public Figure
{
    double SFigure()
    {
        return x*x;
    }
};
class Circle: public Figure
{
public:
    double SFigure()
    {
        return 2*3.14*(x*x);
    }
};
class Triangle: public Figure
{   
public:
    double SFigure()
    {
        double p,q;
        p=(x+y+z)/2;
        q=p*(p-x)*(p-y)*(p-z);
        return  pow(q,1/2);
    }
};
class Trapeze: public Figure
{
public:
    double SFigure()
    {
        return (x+y)*z/2;
    }
};
void main()
{
    start:
    SetConsoleCP(1251); 
    SetConsoleOutputCP(1251);
    double TMP1;
    double TMP2;
    double TMP3;
    Figure *F;
    Square S;
    Circle C;
    Triangle T;
    Trapeze R;
    cout<<"Вводим сторону квадрата:          ";
    cin>>TMP1;
    S.set(TMP1,NULL,NULL);
    cout<<"Вводим радиус круга:              ";
    cin>>TMP1;
    C.set(TMP1,NULL,NULL);
    cout<<"Вводим стороны треугольника:      ";
    cin>>TMP1>>TMP2>>TMP3;
    T.set(TMP1,TMP2,TMP3);
    cout<<"Вводим стороны и высоту трапеции: ";
    cin>>TMP1>>TMP2>>TMP3;
    R.set(TMP1,TMP2,TMP3);
    F=&S;
    cout<<"Квадрат:     "<<F->SFigure()<<endl;
    F=&C;
    cout<<"Круг:        "<<F->SFigure()<<endl;
    F=&T;
    cout<<"Треугольник: "<<F->SFigure()<<endl;
    F=&R;
    cout<<"Трапеция:    "<<F->SFigure()<<endl;
    char flag;
    cout<<"Повторить?(y/n)"<<endl;
    cin>>flag;
    if(flag='y') goto start;
}
Но есть 1 НО, по моему тут не правильно работает расчет площади треугольника, если не так что поправьте пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru