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

Программа CUBE - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ запись в файл. не создается файл http://www.cyberforum.ru/cpp-beginners/thread830817.html
#include <graphics.h> // vkljy4it' opisanie grafi4eskix fynkcij Ñ/Ñ++ Borland'ah #include<stdio.h> #include <conio.h> // opisanie fynkcij vvoda-vivoda s konsoli(dlja getch()) #include...
C++ Работа с массивами, замена элементов массива День добрый Товарищи. Взялся на днях за задачу, но в процессе реализации уперся в стену (что именно - укажу ниже). Собственно текст задачи. Дан одномерный целочисленный массив из N элементов,... http://www.cyberforum.ru/cpp-beginners/thread830813.html
программирование msp430 C++
Не могу сделать так что бы счётчик от одной и той же кнопки запускался и снова останавливался... вот код с двумя кнопками через прерывание. подскажите пожалуйста.. пробывал просто по прерывании...
Си! Поменять местами элементы квадратного массива C++
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя 1 и 2 ее блоки : http://www.cyberforum.ru/attachment.php?attachmentid=253371&d=1365345051
C++ Помочь доделать программу (найти все простые числа, имеющие возрастающую последовательность цифр, сумма которых равна M) http://www.cyberforum.ru/cpp-beginners/thread830789.html
Здравствуйте, дорогие форумчане. ----------------------------------- Мне нужна ваша помощь. Вот, собственно, задание: Для всех натуральных чисел, не превосходящих заданного числа N, найти все...
C++ Указатели на функции. Вычислить. помогите пожалуйста написать код сделать через Указатели на функции:cry:я вообше не понимаю как это делать . \sum_{i=1}^{100}\sum_{j=1}^{50}\frac{1}{i+j^2}? Добавлено через 1 минуту... подробнее

Показать сообщение отдельно
ZYL
3 / 3 / 0
Регистрация: 12.01.2013
Сообщений: 47

Программа CUBE - C++

07.04.2013, 23:44. Просмотров 936. Ответов 15
Метки (Все метки)

Кликните здесь для просмотра всего текста

У декартовій системі координат розташовано куб, координати вер-шин котрого дорівнюють невід'ємним цілим числам, що не перевищують 15. Одна з вершин куба збігається з початком координат. Скласти про-граму CUBE, яка обчислювала б квадрат відстані на поверхні куба між двома точками, заданими координатами. (Відстанню між двома точками на поверхні куба називається найменша довжина ламаної, що з'єднує дві за-дані точки і повністю лежить на поверхні куба.)
Вхідний файл cube.dat містить такі дані. У першому рядку записано довжину сторони куба, у двох наступних — по 3 натуральних числа, що задають координати х, у, г двох точок на поверхні куба.
Вихідний файл cube.res створюється із вхідного файла cube.dat допи-суванням до нього нового рядка, що містить квадрат довжини ламаної, яка з'єднує дві точки.
Вміст вхідного і вихідного файлів може бути, наприклад, таким:
cube.dat
10 2
1 2 0
2 1 0
cube.res
10 2
1 2 0
2 1 0
2


Если коротко, то есть куб с длинной ребра не более 15. Задаются две точки которые лежат на поверхности, нужно вычислить минимальное расстояние между двумя точками. Точки именно на поверхности, т.е. расстояние напрямую можно посчитать только если точки лежат на одной грани.. Вот запутался с определением положения точек (на одной грани, на противоположных, или на соседних...)
Есть только грубое начало, буду благодарен, если кто-то поможет разобраться с положением точек.

Кликните здесь для просмотра всего текста

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <iostream>
#include <cmath>
using namespace std;
 
class Line
{
 protected:
    
    float x1,y1,z1,Lenght,x2,y2,z2;
 
public:
    float l,line;
 
    Line()
    {
        vl:
        cout<<"Введите длинну ребра куба : ";       
         cin>>Lenght;
          cout<<endl;
 
        Lenght=abs(Lenght);
        if (Lenght<0||Lenght>15)
         {
            cout<<"Длинна ребра куба не может быть больше 15 или меньше 0! Повторите ввод!"<<endl;
            goto vl;
         }
 
      input:
        cout << "Input X1= ";
        cin >> x1;
         cout << "Input Y1= ";
         cin >> y1;
          cout << "Input Z1= ";
          cin >> z1;
           cout<<endl;
 
        if( (x1==0||x1==Lenght) || (y1==0||y1==Lenght) || (z1==0||z1==Lenght) ) 
        {
            cout<<"Координаты точки введены правильно"<<endl<<endl;
        } 
            else
            {
                cout<<"Хотя бы одна с координат должна лежать на плоскости куба! Повторите ввод! "<<endl;
                goto input;
            }
 
 
    input2:
        cout<<"Input X2= ";
        cin>>x2;
         cout<<"Input Y2= ";
         cin>>y2;
          cout<<"Input Z2= ";
          cin>>z2;
           cout<<endl;
 
        if( (x2==0||x2==Lenght) || (y2==0||y2==Lenght) || (z2==0||z2==Lenght) ) 
        {
            cout<<"Координаты точки введены правильно"<<endl<<endl;
        } 
            else
            {
                cout<<"Хотя бы одна с координат должна лежать на плоскости куба! Повторите ввод! "<<endl;
                goto input2;
            }
    }
 
    float  get_x1() {return x1;}    
    float  get_y1() {return y1;}
    float  get_z1() {return z1;}
 
    void show() 
     {
      cout<<"A("<<x1<<";"<<y1<<";"<<z1<<")"<<endl;
      cout<<"B("<<x2<<";"<<y2<<";"<<z2<<")"<<endl;
     }
    
    float  get_x2() {return x2;}    
    float  get_y2() {return y2;}
    float  get_z2() {return z2;}
 
    
void analyze_Position()
{
    float k1,k2,k3,LineLenght;
 
    if(x1==x2 && y1==y2 && z1==z2) {LineLenght=0;goto rezult;}
 
    if(x1==x2||y1==y2||z1==z2)
        {if ((x1==0 && x2==Lenght || x2==0 && x1==Lenght)  ||  (y1==0 && y2==Lenght || y2==0 && y1==Lenght)  || (z1==0 && z2==Lenght || z2==0 && z1==Lenght))
            cout<<"Точки лежат на противоположных плоскостях"<<endl;
        } 
      else
        {cout<<"Точки лежат на одной плоскости"<<endl;
            k1=pow((x2-x1),2);
            k2=pow((y2-y1),2); 
            k3=pow((z2-z1),2);
            l=k1+k2+k3;
            line = sqrt(l);
            LineLenght=LineLenght*LineLenght;
            goto rezult;
    }   
    rezult:
cout<<"L="<<LineLenght<<endl;
}   
 
}; 
 
void main () 
{
  setlocale(LC_ALL,"Russian");
 
 Line A1;
 A1.show();
 A1.analyze_Position();
 
}


Добавлено через 2 часа 35 минут
..............................

Добавлено через 17 минут
Если на одной грани, то if(x1==x2||y1==y2||z1==z2)

Если на противоположных, то какие-то с координат х1 и х1 например, должны быть равны 0 и длинне ребра?

А если на соседних, соседние координаты х и у, или у и z, или z и х равны 0 или длинне ребра?

Добавлено через 1 час 54 минуты
Продолжу свой монолог...
C++
1
2
3
4
if( (x1==0 && x2==Lenght) || (x2==0 && x1==Lenght) || (y1==0 && y2==Lenght) || (y2==0 && y1==Lenght) || (z1==0 && z2==Lenght) || (z2==0 && z1==Lenght) )
    {
      cout<<"Точки лежат на противоположных гранях"<<endl;  
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru