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

Программа на классы - C++

Восстановить пароль Регистрация
 
milka_01
Сообщений: n/a
13.03.2013, 21:47     Программа на классы #1
Мальчики, помогите пожалуйста решить задачку)))
Класс - вектор, члены класса - 3 прямоугольные декартовые координаты, методы - конструктор, метод вывода вектора - конструктор, метод вывода вектора, операции перезагрузки - сложение (+), скалярное () и векторное (*) прозведения векторов, проверка коллинеарности (||) 2-х векторов.
Исходные данные - а={ax,ay,az} b={bx,by, bz}
Результаты c=(a+a)*b; d=ab; проверить на коллинеарность вектора a и b.

Вот такие задачки задал препод, а я болела долго
Мальчики помогите красивой девушке))))))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
14.03.2013, 08:39     Программа на классы #2
Цитата Сообщение от milka_01 Посмотреть сообщение
Класс - вектор
Тут понятно.

Цитата Сообщение от milka_01 Посмотреть сообщение
члены класса - 3 прямоугольные декартовые координаты
А вот тут полный бред.
Членами класса могут быть методы, переменные, перечисления и т.п. но не прямоугольная декартовая координата.
Кстати, что такое эта "прямоугольная декартовая координата"? Я очень давно учился в школе, у нас такого еще не было. Ну да ладно, предположим, что это декартова координата точки в пространстве. Тогда вопрос -- зачем их три штуки для вектора? Математику вы тоже проболели?

Цитата Сообщение от milka_01 Посмотреть сообщение
метод вывода вектора - конструктор
Конструктор, выводящий класс... Бред.

Цитата Сообщение от milka_01 Посмотреть сообщение
Исходные данные - а={ax,ay,az} b={bx,by, bz}
Отличные исходные данные. Сможете рассказать, что такое ax, ay и az?

Цитата Сообщение от milka_01 Посмотреть сообщение
скалярное ()
В скобочках как-то пусто. Какую операцию желаете принять за скалярное произведение векторов?

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

Правильно я говорю?

Не по теме:

Цитата Сообщение от milka_01 Посмотреть сообщение
Мальчики помогите красивой девушке))))))
Ложь тут неуместна. There are no girls on the Internet. Тем более на форуме по С++.

XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
14.03.2013, 09:10     Программа на классы #3
так создайте класс для начала с тремя координатами x, y, z. Все они должны быть в секции private. Добавьте public методы для чтения и установки каждой координаты например setX, getX.

Для начала этого будет достаточно.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
14.03.2013, 09:26     Программа на классы #4

Не по теме:

Цитата Сообщение от XRuZzz Посмотреть сообщение
так создайте класс для начала с тремя координатами x, y, z. Все они должны быть в секции private. Добавьте public методы для чтения и установки каждой координаты например setX, getX.
Для начала этого будет достаточно.
ТС же не за знанием пришел, а за готовым ответом, который можно даже не думать.
И вот он:



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
#include <cmath>
#include <iostream>
#include <iomanip>
 
const double EPSILON = 0.00001;
 
class Vector {
 public:
  Vector() : x(0), y(0), z(0), length(0) {}
  Vector(const double &x, const double &y, const double &z)
    : x(x), y(y), z(z), length(0) {
    length = sqrt(x * x + y * y + z * z);
  }
  const double &getX() const { return x; }
  const double &getY() const { return y; }
  const double &getZ() const { return z; }
  const double &getLength() const { return length; }
  Vector getNormalized() const {
    return Vector(x / length, y / length, z / length);
  }
  bool isZero() const {
    return getX() < EPSILON && getY() < EPSILON && getZ() < EPSILON;
  }
 private:
  double x, y, z;
  double length;
};
 
std::ostream &operator<<(std::ostream &stream, const Vector &vector) {
  return stream << std::fixed << std::setprecision(4) << "[" <<
    vector.getX() << ";" << vector.getY() << ";" <<
    vector.getZ() << "]";
};
 
bool operator==(const Vector &a, const Vector &b) {
  return (fabs(a.getX() - b.getX()) < EPSILON ) &&
    (fabs(a.getY() - b.getY()) < EPSILON ) &&
    (fabs(a.getZ() - b.getZ()) < EPSILON );
};
 
Vector operator+(const Vector &a, const Vector &b) {
  return Vector(a.getX() + b.getX(), a.getY() + b.getY(),
    a.getZ() + b.getZ());
}
 
Vector operator-(const Vector &a) {
  return Vector(-a.getX(), -a.getY(), -a.getZ());
}
 
Vector operator-(const Vector &a, const Vector &b) {
  return Vector(a.getX() - b.getX(), a.getY() - b.getY(),
    a.getZ() - b.getZ());
}
 
double operator%(const Vector &a, const Vector &b) {
  return a.getX() * b.getX() + a.getY() * b.getY() + a.getZ() * b.getZ();
}
 
Vector operator*(const Vector &a, const Vector &b) {
  return Vector(a.getY() * b.getZ() - a.getZ() * b.getY(),
    a.getZ() * b.getX() - a.getX() * b.getZ(),
    a.getX() * b.getY() - a.getY() * b.getX());
}
 
bool operator||(const Vector &a, const Vector &b) {
  return a.isZero() || b.isZero() || (a * b).isZero() ||
    (fabs(a.getX() / b.getX() - a.getY() / b.getY()) < EPSILON &&
    fabs(a.getY() / b.getY() - a.getZ() / b.getZ()) < EPSILON);
};
 
int main(int argc, char **argv) {
  Vector a(2, 3, 1), b(0, -1, 5), c(4, 6, 2);
  std::cout << "(" << a << " + " << b << ") x " << c << " = " <<
    ((a + b) * c) << std::endl;
  std::cout << "(" << a << " + " << b << ") * " << c << " = " <<
    ((a + b) % c) << std::endl;
  std::cout << a << " * " << b << " = " <<
    (a % b) << std::endl;
  std::cout << a << " is " << ((a || b) ? "" : "not ") <<
    "collinear to " << b << std::endl;
  std::cout << a << " is " << ((a || c) ? "" : "not ") <<
    "collinear to " << c << std::endl;
  return 0;
};
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
14.03.2013, 12:23     Программа на классы #5

Не по теме:

Цитата Сообщение от lemegeton Посмотреть сообщение

Не по теме:


ТС же не за знанием пришел, а за готовым ответом, который можно даже не думать.
И вот он:

давать готовые решения бессмысленно. оно нечем не поможет. правда для вас может быть полезным порешать задачки.



Добавлено через 6 минут

Не по теме:


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

Вы можете привести пример как применить этот вектор на практике, чтоб он реально помог в жизни?

lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
15.03.2013, 00:17     Программа на классы #6
Цитата Сообщение от XRuZzz Посмотреть сообщение
давать готовые решения бессмысленно. оно нечем не поможет. правда для вас может быть полезным порешать задачки.
Ну не скажите. Смысл есть. Главные задачи решены -- ТС получил искомое, я потешил самолюбие, попрактиковался в решении примитивных задач и поднял самооценку за счет ТС. Все в плюсе. Особенно я.

Цитата Сообщение от XRuZzz Посмотреть сообщение
чтобы заинтересовать
Вот в этом уже смысла мало. Была бы хоть искорка, хоть намек на интерес... Но их в просто нет. ТС не ставит целью что-то понять, он просит решить за него задачку. Какой смысл пытаться заинтересовать человека, которому априори интересно? Оставим лучше этот идеализм подросткам.

Цитата Сообщение от XRuZzz Посмотреть сообщение
Вы можете привести пример как применить этот вектор на практике, чтоб он реально помог в жизни?
Нет, это чисто учебный пример. Слишком примитивно и медленно, чтобы работать в серьезных графических приложениях. Можно что-нибудь притянуть за уши, конечно, но это пустая трата времени.
Yandex
Объявления
15.03.2013, 00:17     Программа на классы
Ответ Создать тему
Опции темы

Текущее время: 11:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru