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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xold111
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 6
#1

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

22.10.2012, 09:45. Просмотров 1021. Ответов 3
Метки нет (Все метки)

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

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;
};
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2012, 09:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Описание объекта "Куб". Нахождение его площади и объема (C++):

Создание объекта класса сразу после его описания (между "}" и ";") - C++
Пишу проект с дюжиной хедеров и десятком cpp-шников. Мне нужны пара объектов класса А, которые должны существовать на протяжении всей...

Нахождение площади и ошибка "Неинициализирована переменная" - C++
Программа должна подсчитать площадь в квадратных фунтах, с теми цифрами которые даны в программе должен получаться ответ:135.416672, но на...

После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет - C++
Выполните задания с использованием библиотечного класса string. Даны строка S. Необходимо после каждого знака препинания (&quot;.&quot;, &quot;,&quot;,...

Заполнить структуры "Прямоугольник" и "Треугольник" и найти площади и периметры фигур - C++
Доброго времени суток! Начали изучать структуры, сижу над задачкой, да вот не идет она у меня. Нужно создать две структуры : -...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

ткните мордой плз на описание конструкций типа defect?"brak":"goden" - C++
вот пример использования http://codepad.org/VbScnm6F

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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 минуты
Сами операции если нужно можно вынести в отдельную функцию, тлько передавать туда нужно объект или лучше сделать в мэйне указатель типа куб выделить ему память и передавать указатели везде, это будет эффективней в плане трудоспособности
1
xold111
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 6
22.10.2012, 11:09  [ТС] #3
MrGrig, огромное спасибо за код, пойду разбираться что да как
0
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
22.10.2012, 11:23 #4
я там написал что я не знаю как сделать через цикл запись ребер, мб имеет смысл с клавиатуры вводить именно ребра

Добавлено через 1 минуту
или вообще сами координаты а уже на основе их считать длину ребер площадь граней и тд и тп...
З.Ы. Вычисление ребер работает коректно лишь в том случае что сначала вы задаете верхнюю грань, потом нижнюю, потом все остальные...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 11:23
Привет! Вот еще темы с ответами:

Описание классов. Классы "Шар" и "Ящик для шаров" - C++
1.Опишите класс &quot;шар&quot;, описывающий габариты и вес. Данные класса: радиус шара,вес. Методы класса: должны обеспечить минимальную...

Нахождение площади параллелограмма, треугольника и объема параллелепипеда, тетраэдра по координатам вершин - C++
Нахождение площади параллелограмма, треугольника и объема параллелепипеда, тетраэдра по координатам вершин. Задается пользователем:...

Перегрузить операторы "=", "+=" так, чтобы производилось сложение строки и объекта - C++
помогите ,пожалуйста вот задание:Реализовать класс String для работы со строками символов. Перегрузить операторы =, += так, чтобы...

Из слова "яблоко" путем склеек и вырезок его букв получить слова "блок" и "око" - C++
Самым самым самым простым способом.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.10.2012, 11:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru