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

Полиморфизм в с++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шейкерная сортировка http://www.cyberforum.ru/cpp-beginners/thread1039310.html
Неправильно сортирует шейкерной сортировкой, почему-то не хочет проходить справа на лево массив, мне так кажется. Потому что начало хорошее - наименьшее число перемещается в первую позицию, а дальше что-то не так :(. #include <stdio.h> #include <conio.h> #include <time.h> #include <stdlib.h> #include <alloc.h> #define ESC 27 void shake (int *x, int k,int s) { int...
C++ Создать объект - очередь с перегруженными операциями Будьте добры помочь( Задание 1. Унарная операция Создать объект - очередь с перегруженными операциями ++ как функциями-членами, -- как дружественными функциями. (Как постфиксными так префиксными). одна тема - одна задача, читайте правила форума Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread1039304.html
Написать программу, которая позволяет во введенной строке поменять первые буквы каждого слова на прописные C++
нужно составить текст программы, которая позволяет по введенной строке поменять первые буквы каждого слова на прописные. Вывести на экран символьную строку до и после изменения. p.s:знаю только как на паскале написать, а нужно на С++; приветствую любую помощь
Двумерный массив в степени C++
Ребят, задание на фото. Вроде сделал как надо, но ругается на перегруженную функцию pow.. помогите исправить.. #include <iostream> // бибилиотека ввода/вывода #include <iomanip> // библиотека для setw (ширина поля) #include <math.h> // библиотека математических функций using namespace std; // объявление std, чтобы не писать дальше в коде int main () // начало главной функции { setlocale...
C++ Двухмерный массив http://www.cyberforum.ru/cpp-beginners/thread1039267.html
Как в двухмерном массиве выделить, а точнее работать с элементами массива которые находятся до главной диагонали. Вопрос в том как сделать главную диагональ НЕ квадратного массива? Добавлено через 20 минут Help me or not????? Добавлено через 1 час 23 минуты Help help help
C++ В произвольном тексте найти и отпечатать все слова длиной 5 символов Собственно, задача. Если можно, хотелось бы минимум мудрённого кода - простейшие операторы. Ну или с комментариями. Добавлено через 1 час 35 минут int main() { system("cls"); setlocale(0, ""); char str; подробнее

Показать сообщение отдельно
bull3tproof
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 26
12.12.2013, 21:44     Полиморфизм в с++
Вообщем я делал программу,изначально в ней было реализовано наследование.Затем дали задание реализовать полиморфзим для функции Scale для классов сфера и паралепипед.Делал все ,как обьясняли в колледже,однако возникает ошибки при обращении к функциям и обьектам в файле где основная програма.Помогите испрвить пожалуйста.Виртуальная фунцкия обьявлена в родительском классе Object.
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
#pragma once
 
class Object
{
protected:
    double  x, 
            y, 
            z;
public:
 
    virtual void Scale () = 0;
    Object();
    Object(double x, double y, double z);
 
    void Move(double x, double y, double z);
 
    double GetXCord();
    double GetYCord();
    double GetZCord();
};
 
Object::Object()
{
    x = y = z = 0.0;
}
 
Object::Object(double x, double y, double z)
{
    this->x = x;
    this->y = y;
    this->z = z;
}
 
void Object::Move(double x, double y, double z)
{
    this->x = x;
    this->y = y;
    this->z = z;
}
 
double Object::GetXCord()
{
    return x;
}
 
double Object::GetYCord()
{
    return y;
}
 
double Object::GetZCord()
{
    return z;
}
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
#include "Object.h"
 
class Paralelp : 
    public Object
{
protected:
    double  height, 
            width, 
            length;
public:
    Paralelp();
    Paralelp(double x, double y, double z, double height, double width, double length);
    Paralelp(double height, double width, double length);
 
    
    void SetHeight(double height);
    double GetHeight();
 
    void SetWidth(double width);
    double GetWidth();
 
    void SetLength(double length);
    double GetLength();
    
    void Scale(double volume);
    
 
    friend double CalcVolume(Paralelp &a);
};
 
#include <math.h>
 
Paralelp::Paralelp() : Object()
{
    height = width = length = 1.0;
}
 
Paralelp::Paralelp(double x, double y, double z, double height, double width, double length) : Object(x, y, z)
{
    this->height = height;
    this->width = width;
    this->length = length;
}
 
Paralelp::Paralelp(double height, double width, double length) : Object()
{
    this->height = height;
    this->width = width;
    this->length = length;
}
 
void Paralelp::SetHeight(double height)
{
    this->height = height;
}
 
double Paralelp::GetHeight() { return height; }
 
void Paralelp::SetWidth(double width)
{
    this->width = width;
}
 
double Paralelp::GetWidth() { return width; }
 
void Paralelp::SetLength(double length)
{
    this->length = length;
}
 
double Paralelp::GetLength() { return length; }
 
double CalcVolume(Paralelp &a)
{
    return a.height * a.width * a.length;
}
 
void Paralelp::Scale(double volume)
{
    double temp_v = CalcVolume(*this);
    temp_v =  volume / temp_v;
    temp_v = pow(temp_v, 1.0 / 3.0);
    height *= temp_v;
    width *= temp_v;
    length *= temp_v;
}
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 "Object.h"
 
class Sphere : 
    public Object
{
protected:
    double radius;
public:
    Sphere();
    Sphere(double x, double y, double z, double radius);
    Sphere(double radius);
 
    void SetRadius(double radius);
    double GetRadius();
    void Scale ();
    void Scale(double volume);
    void Sphere::Scale();
    friend double CalcVolume(Sphere &a);
};
 
#include <math.h>
 
Sphere::Sphere() : Object()
{
    radius = 1;
}
 
Sphere::Sphere(double x, double y, double z, double radius) : Object(x, y, z)
{
    this->radius = radius;
}
 
Sphere::Sphere(double radius) : Object()
{
    this->radius = radius;
}
 
void Sphere::SetRadius(double radius)
{
    this->radius = radius;
}
 
double Sphere::GetRadius() { return radius; }
 
double CalcVolume(Sphere &a)
{
    return 3.414 * a.radius * a.radius;
}
 
void Sphere::Scale(double volume)
 
{
    double temp_v = CalcVolume(*this);
    temp_v = volume / temp_v;
    temp_v = sqrt(temp_v);
    radius *= temp_v;
}
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
#include <stdio.h>
#include "Sphere.h"
#include "Paralelp.h"
#include <ctime> 
#include <Windows.h>
#include <locale.h>
 
 
void PrintParalelpInfo(Paralelp a)
{
    
    printf("x = %.3f; y = %.3f; z = %.3f;\nh = %.3f; w = %.3f; l = %.3f;\n", a.GetXCord(), a.GetYCord(), a.GetZCord(),  a.GetHeight(), a.GetWidth(), a.GetLength());
    printf("Volume is: %.3f\n", CalcVolume(a));
}
 
void PrintSphereInfo(Sphere a)
{
        
        printf("x = %.3f; y = %.3f; z = %.3f; R = %.3f;\n", a.GetXCord(), a.GetYCord(), a.GetZCord(),   a.GetRadius());
        printf("Volume is: %.3f\n", CalcVolume(a));
}
 
 
void main()
{
    
 
    srand((int)time(NULL));
 
    Paralelp a;
    Sphere c;
 
    Object *AbstractObject;
    Paralelp *Par = new Paralelp; 
    Sphere *Sph = new Sphere;
 
    AbstractObject = Par;
     AbstractObject->Scale;
 
    AbstractObject = Sph;
    AbstractObject->Scale;
 
    printf("Standart paralelp. A:\n");
    PrintParalelpInfo(a);
    printf("\n Standart sphere C:\n");
    PrintSphereInfo(c);
 
    float x, y, z;
 
    printf("\n\n Create new paralelp\n");
    printf("Set x: ");
    scanf_s("%f", &x, sizeof(x));
    printf("Set y: ");
    scanf_s("%f", &y, sizeof(y));
    printf("Set z: ");
    scanf_s("%f", &z, sizeof(z));
 
    Paralelp b(x, y, z, ((double)(rand() % 1000) / 100.0) + 1, ((double)(rand() % 1000) / 100.0) + 1, ((double)(rand() % 1000) / 100.0) + 1);
 
    printf("\n Paralelp. B:\n");
    PrintParalelpInfo(b);
 
    printf("Move and size\n");
    AbstractObject->b.Scale(rand() % 150 + 1);
    b.Move(((double)(rand() % 10000) / 100.0) - 50, ((double)(rand() % 10000) / 100.0) - 50, ((double)(rand() % 10000) / 100.0) - 50);
 
    printf("\n Paralelp B:\n");
    PrintParalelpInfo(b);
    
    printf("\n\n Creating sphere.\n");
    printf("set x: ");
    scanf_s("%f", &x, sizeof(x));
    printf("set y: ");
    scanf_s("%f", &y, sizeof(y));
    printf("set z: ");
    scanf_s("%f", &z, sizeof(z));
 
    Sphere d (x, y, z, ((double)(rand() % 900) / 100.0) + 1);
 
    printf("\n Sphere D:\n");
    PrintSphereInfo(d);
 
    printf("Move and size\n");
    d.Move(((double)(rand() % 10000) / 100.0) - 50, ((double)(rand() % 10000) / 100.0) - 50, ((double)(rand() % 10000) / 100.0) - 50);
    AbstractObject->d.Scale(rand() % 150 + 1);
 
    printf("\n Sphere  D:\n");
    PrintSphereInfo(d);
    
    system("pause");
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru