Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [С++]Дружественность


Автор: Ambition 19.9.2007, 16:27
С++. Тема: Дружественность. Имеется класс фигуры содержащий информацию о ее параметрах. Вычислить с помощью дружественной функции периметр и площадь трапеции.  smile 

Дополнительная информация:
S=1/2(a+b)h
a, b - длины оснований трапеции, h - высота,  S - площадь трапеции. 

Заранее спасибо тем, кто отзовется написать кодик программки 




Автор: APM 19.9.2007, 19:35
В начале нужно описать класс трапеция, в котором определены все параметры (четыре стороны и высота). Эти параметры должны быть объявлены как private, т.е. доступ к ним извне класса запрещен. Потом описываем фукнцию, которая вычисляет периметр и площадь трапеции, в качестве параметра принимает экземпляр класса Трапеция. Объявляем эту функцию дружественной в классе Трапеция.

Автор: APM 19.9.2007, 19:51
Примерно так должно быть
Код

#include <iostream>

using namespace std;

class T
{
private:
  float s1,s2,a,b,h;
public:
  T(float p1, float p2, float p3, float p4, float p5) : s1(p1), s2(p2), a(p3), b(p4), h(p5) {}
  friend void F(float&, float&, T&);
};

void F(float& S, float& P, T& t)
{
  S = 1.0/2*(t.a + t.b)*t.a;
  P = t.a + t.b + t.s1 + t.s2;
}

int main()
{
  T t(1,1,1,1,1);
  float S,P;
  F(S,P,t);
  cout<<"S = "<<S<<endl;
  cout<<"P = "<<P<<endl;
  return 1;
}


Автор: Ambition 20.9.2007, 09:09
Спасибо. Буду разбираться в коде.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)