Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с лабораторной!!! 
:(
    Опции темы
pupas
Дата 24.2.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 8.1.2008

Репутация: нет
Всего: нет



Здравствуйте!
Очень прошу помочь мне с лабораторной работой по ООП, ато сам никак не разберусь...

Название класа:
Отрезки

Составляющие члены:
Координаты начала и конца, конструктор с параметрами, деструктор, методы вычисления длины и угла между осью ОУ, метод выведения данных.

Задание:
Описать класс, обьект; вывести данные обьекта; вычислить и вывести длину и угол между осью ОУ

Если можно то напишите лабу на С++ и на С#....но это по возможности, а так хотя бы на одном из языков...заранее спасибо!
PM MAIL   Вверх
mes
Дата 24.2.2009, 16:19 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



мне кажется это должно помочь http://artmini.narod.ru/4ar.htm


P.S. ничего личного  smile 


Это сообщение отредактировал(а) mes - 24.2.2009, 16:20


--------------------
PM MAIL WWW   Вверх
Goganchic
Дата 24.2.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Класс примерно такой будет, если я не ошибаюсь. Дальше разберешься?

Код

class otrezok
{
   private:
      float x1, x2, y1, y2;
   public:
      // Конструктор
      otrzok(float x1_, float x2_, float y1_, float y2_) : x1(x1_), x2(x2_), x3(x3_), x4(x4_) {}

      // Длина
      float length()
      {
          return sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
      }

      // Косинус угла (который между осью ОY)
      float cosu()
      {
         o1 = otrezok(x1, y1, x1, y2);
         return o1.length() / this->length();
      }
}

PM Jabber   Вверх
mes
Дата 24.2.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Goganchic @  24.2.2009,  15:31 Найти цитируемый пост)
      otrzok(float x1_, float x2_, float y1_, float y2_) : x1(x1_), x2(x2_), x3(x3_), x4(x4_) {}

Цитата(Goganchic @  24.2.2009,  15:31 Найти цитируемый пост)
         o1 = otrezok(x1, y1, x1, y2);

Goganchic,  тут есть очепятки..  smile

Добавлено через 2 минуты и 1 секунду
Цитата(Goganchic @  24.2.2009,  15:31 Найти цитируемый пост)
         return sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));

а тут в определенных случаях будет считаться квадратный корень из отрицательного числа.


--------------------
PM MAIL WWW   Вверх
Dmi3ev
Дата 24.2.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Давно писал, может поможет
класс точки
Код

#ifndef MYPOINT_H
#define MYPOINT_H
class MyPoint
{
public:
MyPoint(double a=0.0, double b=0.0){x=a; y=b;};
void Set(double a, double b){x=a; y=b;};
double Getx(){return x;};
double Gety(){return y;};
~MyPoint(){};
private:
double x, y;
};
#endif

а этот класс может вычислить  и длину отрезка и уравнение прямой можно узнать, которой этот отрезок принадлежит, те
y=kx+b, а k это tg угла наклона, поэтому можно узнать арктангенс k... короче, думай сам... пример есть...
Код

#ifndef MYLINE_H
#define MYLINE_H
#include <mypoint.h>
#include <math.h>
class MyLine
{
public:
 MyLine (MyPoint A, MyPoint B){ p1=A; p2=B;};
 double Getk()
  {
   if ((p1.Getx()-p2.Getx())!=0)
     k=(p1.Gety()-p2.Gety())/(p1.Getx()-p2.Getx());//tg
   return k;
  };
 double Getb()
  {
   if ((p1.Getx()-p2.Getx())!=0)
     b=p1.Gety()-((p1.Gety()-p2.Gety())/(p1.Getx()-p2.Getx()))*p1.Getx();//free member
   return b;
  };
 double Getr()//Gip
  {
   r=sqrt(pow((p1.Getx()-p2.Getx()), 2)+pow((p1.Gety()-p2.Gety()), 2));
   return r;
  }; 
 ~MyLine (){};
private:
 MyPoint p1, p2;
 double k, b, r;
};
#endif



Это сообщение отредактировал(а) Dmi3ev - 24.2.2009, 16:53


--------------------

PM MAIL   Вверх
mes
Дата 24.2.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dmi3ev @  24.2.2009,  15:39 Найти цитируемый пост)
class MyPoint

зачем так нагромаждать точку ? Имхо, точка не самостоятельный класс и не несет внутреннего состояния, так что вполне члены класса можно было сделать открытыми, или в крайнем случае просто убрать префикс Get.

Цитата(Dmi3ev @  24.2.2009,  15:39 Найти цитируемый пост)
 double Getk()
  {
   if ((p1.Getx()-p2.Getx())!=0)
     k=(p1.Gety()-p2.Gety())/(p1.Getx()-p2.Getx());//tg
   return k;
  };

а если условие false, то вернет мусор из k.. ?!

Цитата(Dmi3ev @  24.2.2009,  15:39 Найти цитируемый пост)
double Getb()

тоже самое

Цитата(Dmi3ev @  24.2.2009,  15:39 Найти цитируемый пост)
 double Getr()

а где return? 


P.S. нда.. помойму такую помощь иначе как "медвежьей услугой" не назовешь  smile 

Это сообщение отредактировал(а) mes - 24.2.2009, 16:53


--------------------
PM MAIL WWW   Вверх
Dmi3ev
Дата 24.2.2009, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

зачем так нагромаждать точку ? Имхо, точка не самостоятельный класс и не несет внутреннего состояния, так что вполне члены класса можно было сделать открытыми, или в крайнем случае просто убрать префикс Get.

можно структурой ваще сделать, это уже дело автора, мне хотелось так сделать...
Цитата

а если условие false, то вернет мусор из k.. 

в моих нуждах, не нужно было это учитывать... поэтому собственно не заморачивался на это...
Цитата

а где return? 

зацепил нечаянно и стер))) вот где, ща поправлю...


--------------------

PM MAIL   Вверх
mes
Дата 24.2.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dmi3ev @  24.2.2009,  15:52 Найти цитируемый пост)
в моих нуждах, не нужно было это учитывать...

Dmi3ev, очень мучает вопрос, a зачем нужно (было) делать членами k, b, r ?  smile 


Это сообщение отредактировал(а) mes - 24.2.2009, 16:59


--------------------
PM MAIL WWW   Вверх
Dmi3ev
Дата 24.2.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

P.S. нда.. помойму такую помощь иначе как "медвежьей услугой" не назовешь 

я копировал и вставил код, который использовал для себя, немного укоротив его... и он вполне имеет место быть, кроме некоторых недоработок, которые ты перечислил... их легко поправить, просто мне надо было так делать и никак по-другому, а специально писать что-то для товарища, когда есть готовое, я не стал... 

PS я бы на твоем месте написал бы свое решение этой проблемы, а не искал бы ошибки у других  smile тем более, ошибками это не назовешь, потому как ты не знаешь, что у меня далее в классе точки, в классе линии и тд... Я просто вырезал маленький кусочек оттуда... поправить очень просто, если ты считаешь, что это необходимо, возьми и поправь мой код... я не против...

Добавлено через 6 минут и 24 секунды
Цитата

Dmi3ev, очень мучает вопрос, a зачем нужно (было) делать членами k, b, r ?

потому как r далее, это длина образующей конуса (а так же радиус шара), мне было удобней один раз ее запомнить, а потом с ней работать... K тоже был нужен мне в дальнейшем, да и b Тоже... если тебя это все сильно смущает, то можешь удалить их... я просто еще раз говорю, взял кусок своего кода, уже готового и выложил сюда... специально ничего не правил...


--------------------

PM MAIL   Вверх
mes
Дата 24.2.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dmi3ev @  24.2.2009,  16:07 Найти цитируемый пост)
просто мне надо было так делать и никак по-другому

smile такая категоричная фраза все объясняет smile
 

Цитата(Dmi3ev @  24.2.2009,  16:07 Найти цитируемый пост)
я бы на твоем месте написал бы свое решение этой проблемы

Вы так и поступили smile




--------------------
PM MAIL WWW   Вверх
Dmi3ev
Дата 24.2.2009, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



 smile 
Все ясно, mes, поговорить захотелось... Ну, ну! Удачи!


--------------------

PM MAIL   Вверх
Goganchic
Дата 24.2.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Цитата(mes @  24.2.2009,  16:35 Найти цитируемый пост)
Добавлено через 2 минуты и 1 секунду
Цитата(Goganchic @  24.2.2009,  15:31 Найти цитируемый пост)
         return sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));

а тут в определенных случаях будет считаться квадратный корень из отрицательного числа. 


поясни плз smile Как при сложении двух неотрицательных чисел мы получим отрицательное?
PM Jabber   Вверх
mes
Дата 24.2.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Goganchic @  24.2.2009,  17:09 Найти цитируемый пост)
Как при сложении двух неотрицательных чисел мы получим отрицательное

я ошибся smile 


--------------------
PM MAIL WWW   Вверх
Goganchic
Дата 24.2.2009, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



mes, ну ладно, а то я думал что ты сейчас расскажешь про какие-то суперсекретные особенности арифметики с плавающей точки в си ;)
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.