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

Создание классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти первый отрицательный элемент последовательности sin(ctg(xi) x1 вводиться а последющие вычисляються по формуле x1+1=xi+0.3 http://www.cyberforum.ru/cpp-beginners/thread587243.html
1)Найти первый отрицательный элемент последовательности sin(ctg(xi)) x1 вводиться а последющие вычисляються по формуле x1+1=xi+0.3 в c++
C++ Вывод в консольном приложении Всем доброго времени суток. Написал приложение выводящие через printf 5 строк с паузой в 1 сек. При обычном запуске всё работает хорошо. Решил перенаправить стандартный вывод приложения в файл( через командную строку: test.exe > file.txt) и здесь появилась проблема. Файл заполняется не по мере выполнения моей программы, а только после её завершения. Возможно он сначала как-то буферизует данные.... http://www.cyberforum.ru/cpp-beginners/thread587242.html
Матрицы: вычислить сумму элементов ,образующих символ C++
Задана матрица чисел : а Вычислить сумму элементов ,образующих символ. Создать в простом консольном приложении.
C++ Описать класс
Уважаемые форумчане помогите пожалуйста с заданием. заранее спасибо!
C++ Почему программа вылетает http://www.cyberforum.ru/cpp-beginners/thread587204.html
Здраствуйте, почему, когда пишу: unsigned char* p = new unsigned char; программа НЕ вылетает, а когда пишу: unsigned char p; вылетает...?
C++ Вложенные операторы С++ вывести числа в виде таблицы 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 в общем накатал код #include <iostream.h> int main() { подробнее

Показать сообщение отдельно
tarakano
34 / 26 / 5
Регистрация: 24.12.2010
Сообщений: 164
27.05.2012, 14:46  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
Аргументированные конструкторы должны быть в public. Изначально в классе стоит модификатор доступа private.
Посмотри формулы вычисления, мне показалось там не все правильно высчитывает.
По хорошему, равносторонний треугольник должен наследовать равнобедренный. А зачем все методы произвольных классов делать виртуальными, я не знаю. Вроде нужно так делать только тогда, когда принадлежность объекта к классу определяется во время исполнения. Т.е. в базовом и в равнобедренном, если будешь от него наследовать равносторонний. Поправьте меня, если я не прав.
да, ошибочка была в формулах, спасибо

вот так выходит:
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
96
#include <iostream>
#include <math.h>
using namespace std;
//ГЎГ*çîâûé ГЄГ«Г*Г±Г±
class Triangle
{ protected:
    double a,b; //2 ñòîðîГ*Г»
    double u;   //óãîë
  public:
    Triangle(){}
    Triangle(double x, double y, double z): a(x), b(y), u(z){}
    ~Triangle(){}
    double S() ; //ïëîùГ*äü
    double P() ; //ïåðèìåòð
};
class pryam : public Triangle //ïðÿìîóãîëüГ*ûé òðåóãîëüГ*ГЁГЄ
{
public:
    pryam(double x, double y, double z): Triangle(x, y, z){}
    pryam(){}
    ~pryam(){}
    double S(); //ïëîùГ*äü
    double P(); //ïåðèìåòð
 
};
double pryam::S()
{
  return 0.5*a*b*sin(u);//?
}
double pryam::P()
{
  double c = sqrt(a*a+b*b-2*a*b*cos(u));//?
  return a+b+c;//?
};
///////////////
class ravbedr : public Triangle
{
 
  public:
    ravbedr(double x, double y, double z): Triangle(x, y, z){}
    ravbedr(){}
     ~ravbedr(){};
     double S();
     double P();
};
double ravbedr::S()
{
    double c=2*a*sin(u/2); 
    double p=(a+b+c)/2;
    return sqrt(p*(p-a)*(p-b)*(p-c));
}
double ravbedr::P()
{
    double c=2*a*sin(u/2); 
    return a+b+c;
}
///////////////////
class ravstor : public Triangle
{
 public:
     ravstor(double x, double y, double z): Triangle(x, y, z){}
    ravstor(){}
     ~ravstor(){}
     double S();
     double P();
};
double ravstor::S()
{
    return 0.43*a*a;
}
double ravstor::P()
{
    return 3*a;
}
/////////////////////////////
int main()
{
    Triangle *pt = NULL;
    int a, b, u;
    do
    {
        std::cout<< "Enter length of the first side: "; std::cin>> a;
        std::cout<< "Enter length of the second side: "; std::cin>> b;
        std::cout<< "Enter the angle between the sides: "; std::cin>> u;
    } while (a < 0 || b < 0 || u < 0 || u > 180);
    if (a == b)
    {
        if (u == 60) pt = new ravstor(a, b, u);
        else pt = new ravbedr(a, b, u);
    }
    else if(u == 90) pt = new pryam(a, b, u);
    if (pt == NULL) std::cout<< "Random triangle, count yourself, it's boring...";
    else std::cout<< "P = "<< pt->P()<< "\nS = "<< pt->S();
    delete pt;
    return 0; 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru