Форум программистов, компьютерный форум 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 не могу вообще не... подробнее

Показать сообщение отдельно
NightCoder89
 Аватар для NightCoder89
12 / 12 / 1
Регистрация: 22.03.2012
Сообщений: 42
23.03.2012, 01:13     Виртуальные функции(помогите исправить)
Накидал на скорую руку :
Код
#include <iostream>
#include <cmath>
using namespace std; 

class Figure
{
public:
	Figure(){}
	virtual ~Figure(){}

/*	virtual void SetMenu() = 0; */// Менюшка, которую переопред. в каждом классе как диалог ввода данных. 
	                              // Тогда удаляем костр. с параметрами и оставляем только костр. по умолчанию 

    virtual double SFigure() = 0;
};
class Square: public Figure
{
public: 
	Square() {}
	Square(double A, double B):sideA(A), sideB(B) {}
	virtual ~Square(){}

    double SFigure() { return sideA * sideB; }

private:
	double sideA, sideB;
};
class Circle: public Figure
{
public:
	Circle(){}
	Circle(double Radius): dRadius(Radius){}
	virtual ~Circle(){}

    double SFigure(){ return 2 * 3.14 * (dRadius * dRadius); }

private:
	double dRadius;
};
class Triangle: public Figure
{       
public:
	Triangle(){}
	Triangle(double A, double B, double C, double Radius): sideA(A), sideB(B), sideC(C), dRadius(Radius){}
	virtual ~Triangle(){}

    double SFigure(){ return (sideA * sideB * sideC)/ (4 * dRadius); }

private:
	double sideA, sideB, sideC, dRadius;
};
class Trapeze: public Figure
{
public:
	Trapeze(){}
	Trapeze(double A, double B, double C, double D): sideA(A), sideB(B), sideC(C), sideD(D){}
	virtual ~Trapeze(){}

    double SFigure()
    {
        return ((sideA + sideB)/2) * sqrt((pow(sideC, 2) - pow(((pow((sideB - sideA), 2) + pow(sideC, 2) - pow(sideD, 2))/(2 * (sideB - sideA))), 2)));
    }

private:
	double sideA, sideB, sideC, sideD;
};
Меню ввода сторон можно реализовать в main , а потом закидывать данные в конструктор. Хотя кошерней будет переопределить в каждом классе свое меню ввода и конструкторы сделать по умолчанию. Виртуальные деструкторы нужны, когда мы будем работать по принципу Figure *р = new Triangle(); Также нужно реализовать проверку корректности ввода данных, тоесть чтоб вместо double не вводили, к примеру char.
 
Текущее время: 12:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru