Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2012, 12:51   #1
Настёнка1512
 
Регистрация: 02.01.2011
Сообщений: 3
По умолчанию задача "решение уравнений" на С++

программа решает уравнения линейное и квадратное) программа работает) просто хочу уточнить некоторые моменты)
Код:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "stdio.h"
#include <math.h>
using namespace std;
 class yravnenie           //абстрактный класс
{
protected:
	double a,b;
public:
	virtual void ox()=0;         // виртуальная функция
	virtual void oy(double)=0;
};



 class line:public yravnenie // производный класс
 {
public:
	line();
	void ox();
	void oy(double);

	line::line(double a1,double b1) // конструктор с параметром
	{
	a=a1;
	b=b1;
}

};

 

class quadratic:public yravnenie // производный класс
{
	double c;
public:
	quadratic();
	void ox();
	void oy(double);

	quadratic::quadratic(double a1,double b1,double c1) {
	a=a1;
	b=b1;
	c=c1;
}
};


	void line::ox() 
	{
	double X=-b/a;
	cout<<"line x="<<X<<'\n';
}

	void line::oy(double X) 
	{
	double Y= a*X+b;
	cout<<"line y="<<Y<<'\n';
}


 void quadratic::ox()
 {
	
	double X1=-b+sqrt(b*b-4*a*c), X2=-b-sqrt(b*b-4*a*c);
	cout<<"quadratic x1="<<X1<<'\n';
	cout<<"quadratic x2="<<X2<<'\n';
}

void quadratic::oy(double X)
{

	double Y=a*X*X+b*X+c;

	cout<<"quadratic y = "<<Y<<'\n';
}


int main() 
{

    line a1(2,4);
	a1.ox();  // вызов функции
	a1.oy(3);
	quadratic a2(1,2,1);
	a2.ox();
	a2.oy(5);
	getch();
	return 0;

}
Вопросы:
1) как работает виртуальная функция?
2) как работает virtual void oy(double)=0 ?
3) в каким случаях мы употребляем опретор :: , а когда : ?
4) что значит эта строчка void line::ox() ?
Заранее спасибо за помощь)

Последний раз редактировалось alex_fcsm; 17.01.2012 в 12:56. Причина: Оформляйте код тегом [CODE] или кнопкой #
Настёнка1512 вне форума Ответить с цитированием
Старый 17.01.2012, 13:22   #2
AlexDark
Форумчанин
 
Аватар для AlexDark
 
Регистрация: 23.12.2011
Сообщений: 117
По умолчанию

1)
Цитата:
Виртуальный метод (виртуальная функция) — в объектно-ориентированном программировании метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.
2) никак - это чистая виртуальная функция, означает, что класс yravninie абстрактный т.е. объекты данного класса нельзя создать, и он используется только как базовый для line и др.
Так же эта функция должна быть обязательно переопределена в классах наследниках

3) :: - область видимости например void line:: ox () {...} описание реализации функции ox(), прототип которой описан в классе line.
:, используется в описании класса оператор определения типа наследования и базового класса (ов).

4) см .выше... считает и выводит на экран X, для линейных ур-ний
AlexDark вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправить ошибки в Паскале, по теме: " Методы решения алгебраических и трансцендентных уравнений" Anton94.by Помощь студентам 0 04.12.2011 15:31
Исправить ошибки в Паскале, по теме: " Методы решения алгебраических и трансцендентных уравнений" Anton94.by Помощь студентам 1 02.12.2011 17:26
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04