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

Описание объекта "Куб". Нахождение его площади и объема - C++

Восстановить пароль Регистрация
 
xold111
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 6
22.10.2012, 09:45     Описание объекта "Куб". Нахождение его площади и объема #1
Всем доброго времени суток! К лабораторной работе нужно написать программу, которая сначала описывает объект "Куб", затем рассчитывает его площадь и объем.
Преподаватель дал следующий алгоритм описания объекта "Куб":

stCube
-центр тяжести (координаты)
-длина ребра (double)
___________________________________________________________

-массив вершин куба (размерность 8)
-массив граней куба (размерность 6)
-массив ребер куба (размерность 12)
-объем куба
___________________________________________________________

вершина - stPoint3D
ребро - stEdge
-индексы вершин куба в массиве вершин (размерность 2)
-длина ребра
грань - stBound
-индексы вершин куба в массиве вершин (размерность 4)
-площадь
-цвет - задать через перечислимый тип


Далее, после описание объекта "Куб", должна идти сама программа. Вот алгоритм написания программы, который дал преподаватель:

void main()
{
stCube Cube;
Cube.C={0,0,0}
Cube.L=2.;
___________________________________________________________

//1 операция
//Вычислить координаты вершин куба и поместить их в массив вершина куба в Cube
...
//2 операция
//Формирование объектов stEdge (ребро), и вычисление атрибута (длина)
...
//3 операция
//Формирование объектов stBound (грань). Задание цветности, и вычисление атрибута (площадь)
...
//4 операция
//Поместить объекты в Cube
...
//5 операция - вычислить атрибут (объем)
}

Если честно вообще, не имею понятия как описывать объект "Куб", а уж тем более рассчитывать по данному алгоритму его площадь и объем. Работаем мы на Borland C++ 3.1 for Windows, DOS. Вобщем выручайте.
Ниже дан пример кода, описывающего объект "Треугольник". Сказали делать по образу и подобию...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <math.h>
struct stPoint3D
{
  double x;
  double y;
  double z;
}
struct stLine3D
{
  stPoint3D PB;
  stPoint3D PE;
};
struct stTriangle
{
  stPoint3D P1;
  stPoint3D P2;
  stPoint3D P3;
  double L1; //P1-P2
  double L2; //P2-P3
  double L3; //P3-P1
  double P;
  double S;
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2012, 09:45     Описание объекта "Куб". Нахождение его площади и объема
Посмотрите здесь:

С помощью циклов нарисовать символами "звездочка" куб и круг C++
Нахождение площади и ошибка "Неинициализирована переменная" C++
C++ Алгоритм вычисления объема и площади куба по его диагонали
Создание объекта класса сразу после его описания (между "}" и ";") C++
Нахождение площади параллелограмма, треугольника и объема параллелепипеда, тетраэдра по координатам вершин C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
22.10.2012, 11:01     Описание объекта "Куб". Нахождение его площади и объема #2
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
85
86
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include<MATH.H>
using namespace std;
 
 
struct stPoint3D{
    double x;
    double y;
    double z;
};
struct Color{
    unsigned char R;
    unsigned char G;
    unsigned char B;
};
struct stBound{
    stPoint3D masvershin[4];
    double area;
    Color color;
};
struct stEdge{
    stPoint3D masvershin[2];
    double dlinarebra;
};
struct stCube{
    double dlinrebra;
    stPoint3D masvershin[8];
    stBound masgran[6];
    stEdge masrebro[12];
    double area;
};
void oprCube(stCube Cube){
    cout<<"Input bound\n";
    for(int i=0;i<6;i++){
        cout<<"Input kord (x,y,z) bound №"<<i+1;<<" ";
        for(int j=0;j<4;j++){
            cout<<"Input kord (x,y,z) Point №"<<j+1;<<" ";
            cin>>Cube.masgran[i].masvershin->x;
            cin>>Cube.masgran[i].masvershin->y;
            cin>>Cube.masgran[i].masvershin->z;
            Cube.masvershin[i+j]=Cube.masgran[i].masvershin;
        }
        cout<<"Input color of bound (RGB(0-255,0-255,0-255)) ";
        cin>>Cube.masgran[i].color.R;
        cin>>Cube.masgran[i].color.G;
        cin>>Cube.masgran[i].color.B;
    }
    Cube.masrebro[0].masvershin[0]=Cube.masgran[0].masvershin[0]//Не знаю как описать в цикле =с
    Cube.masrebro[0].masvershin[1]=Cube.masgran[0].masvershin[1]
    Cube.masrebro[1].masvershin[0]=Cube.masgran[0].masvershin[1]
    Cube.masrebro[1].masvershin[1]=Cube.masgran[0].masvershin[2]
    Cube.masrebro[2].masvershin[0]=Cube.masgran[0].masvershin[2]
    Cube.masrebro[2].masvershin[1]=Cube.masgran[0].masvershin[3]
    Cube.masrebro[3].masvershin[0]=Cube.masgran[0].masvershin[3]
    Cube.masrebro[3].masvershin[1]=Cube.masgran[0].masvershin[0]
    Cube.masrebro[4].masvershin[0]=Cube.masgran[1].masvershin[0]
    Cube.masrebro[4].masvershin[1]=Cube.masgran[1].masvershin[1]
    Cube.masrebro[5].masvershin[0]=Cube.masgran[1].masvershin[1]
    Cube.masrebro[5].masvershin[1]=Cube.masgran[1].masvershin[2]
    Cube.masrebro[6].masvershin[0]=Cube.masgran[1].masvershin[2]
    Cube.masrebro[6].masvershin[1]=Cube.masgran[1].masvershin[3]
    Cube.masrebro[7].masvershin[0]=Cube.masgran[1].masvershin[3]
    Cube.masrebro[7].masvershin[1]=Cube.masgran[1].masvershin[0]
    Cube.masrebro[8].masvershin[0]=Cube.masgran[0].masvershin[0]
    Cube.masrebro[8].masvershin[1]=Cube.masgran[1].masvershin[0]
    Cube.masrebro[9].masvershin[0]=Cube.masgran[0].masvershin[1]
    Cube.masrebro[9].masvershin[1]=Cube.masgran[1].masvershin[1]
    Cube.masrebro[10].masvershin[0]=Cube.masgran[0].masvershin[2]
    Cube.masrebro[10].masvershin[1]=Cube.masgran[1].masvershin[2]
    Cube.masrebro[11].masvershin[0]=Cube.masgran[0].masvershin[3]
    Cube.masrebro[11].masvershin[1]=Cube.masgran[1].masvershin[3]
    for(int i=0;i<12;i++)
        Cube.masrebro[i].dlinarebra=sqrt((pow((Cube.masrebro[i].masvershin[0].x-Cube.masrebro[i].masvershin[1].x),2)+pow((Cube.masrebro[i].masvershin[0].y-Cube.masrebro[i].masvershin[1].y),2)+pow((Cube.masrebro[i].masvershin[0].z-Cube.masrebro[i].masvershin[1].z),2)));
    Cube.dlinrebra=Cube.masrebro[0].dlinarebra;
    for(int i=0;i<6;i++)
        Cube.masgran[i].area=pow(Cube.dlinrebra,2);
    Cube.area=pow(Cube.masgran[1].area,3); //Cube.masgran[0].area*6 или цикс с пересчетом все граней
}
void main(){
    stCube Cube;
    oprCube(Cube);
    //Ну а далее вывод через сиаут чего хотите =)
    
}
P.S. Что есть центр тяжести я не совсем понял, а как его высчитывать тем более

Добавлено через 3 минуты
Сами операции если нужно можно вынести в отдельную функцию, тлько передавать туда нужно объект или лучше сделать в мэйне указатель типа куб выделить ему память и передавать указатели везде, это будет эффективней в плане трудоспособности
xold111
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 6
22.10.2012, 11:09  [ТС]     Описание объекта "Куб". Нахождение его площади и объема #3
MrGrig, огромное спасибо за код, пойду разбираться что да как
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
22.10.2012, 11:23     Описание объекта "Куб". Нахождение его площади и объема #4
я там написал что я не знаю как сделать через цикл запись ребер, мб имеет смысл с клавиатуры вводить именно ребра

Добавлено через 1 минуту
или вообще сами координаты а уже на основе их считать длину ребер площадь граней и тд и тп...
З.Ы. Вычисление ребер работает коректно лишь в том случае что сначала вы задаете верхнюю грань, потом нижнюю, потом все остальные...
Yandex
Объявления
22.10.2012, 11:23     Описание объекта "Куб". Нахождение его площади и объема
Ответ Создать тему
Опции темы

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