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

Задача на прямоугольники С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить в нём среднее геометрическое элементов, стоящих на нечётных позициях. http://www.cyberforum.ru/cpp-beginners/thread366126.html
Ввести одномерный массив A из 15 элементов. Определить в нём среднее геометрическое элементов, стоящих на нечётных позициях. вот код собсно # include <iostream.h> # include <math.h> int main() {int a,i,n; cout<<"\nVvod n"; cin>>n;
C++ Как скачать тект с сайта Доброво всем время суток у меня есть некоторая проблема, помогите плиз. Короче нужно в С++ билдер написать функцию которая будет скачивать текст с сайта (текст определенной статьи). Подскажите как это можно реализовать и вобще это возможно. Добавлено через 28 минут помогогите пож. http://www.cyberforum.ru/cpp-beginners/thread366115.html
C++ задание по ООП, классы, матрицы
Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменением кол-ва строк и столбцов, вывода на экран подматрицы любого размера. вот само описание класса,немного загоняет в ступор.(( помогите кто может
без цикла. C++
мучаюсь несколько дней. есть такая задача: с клавиатуры ввели 10 чисел. не используя операторов цикла найти 2 крупнейших числа. и еще одна задача: в массиве из 10 чисел найти значения 2-х самых малых чисел. (здесь уже с использованием циклов).
C++ Избавиться от goto. http://www.cyberforum.ru/cpp-beginners/thread366101.html
Нашла в интернете одну очень интересную реализацию меню, но там есть goto. по идее от него можно избавиться применением циклов, но у меня никак не выходит. помогите, пожалуйста. это вообще реально? void choice(){ // ôóíêöèÿ âûáîðà l: int ch=_getch(); // ñ÷èòûâàåì çíà÷åíèå íàæàòîé êëàâèøè if(ch==224){ // 224 - ýòî ñòðåëî÷êè switch(ch){ case 80: if(m_pos+1<max_pos) // âíèç ...
C++ Составьте программу, которая будет считать длину окружности по заданному радиусу Составьте программу, которая будет считать длину окружности по заданному радиусу (используя директиву #define для определения символьных и строковых констант). #define опре-делить в заголовочном файле. подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,688
14.10.2011, 14:09     Задача на прямоугольники С++
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/////////////////////////////////////////////////////////////////////////////////////////
//Нужно создать класс Прямоугольник со стороной на оси ОХ.
//Нужно перегрузить бинарные операторы: пересечения прямоугольников(*), 
//объединение двух прямоугольников(+), несимметрическая разность двух прямоугольников(-). 
//Следует учесть все специальные случаи.
/////////////////////////////////////////////////////////////////////////////////////////
#include <complex>
#include <ctime>
#include <cstdlib>
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::complex<int>  T_point;
/////////////////////////////////////////////////////////////////////////////////////////
class  T_rect
{
    int  x_;
    int  Ax_;
    int  Ay_;
    //-----------------------------------------------------------------------------------
public:
    //-----------------------------------------------------------------------------------
    T_rect
        (
            int  x,
            int  Ax,
            int  Ay
        )
        :
        x_   (x),
        Ax_  (Ax),
        Ay_  (Ay)
    {}
    //-----------------------------------------------------------------------------------
    bool  empty() const
    {
        return      Ax_ <= 0
                ||  Ay_ <= 0;
    }
    //-----------------------------------------------------------------------------------
    void  print() const
    {
        if( empty() )
        {
            std::cout << "<empty rect>";
        }
        else
        {
            std::cout << "<"
                      << x_
                      << ","
                      << T_point(Ax_, Ay_)
                      << ">";
        }
    }
    //-----------------------------------------------------------------------------------
    T_rect  operator*(const T_rect&  r)
    {
        if( r.empty () )    return  r;
        if( empty   () )    return  *this;
        int  x_left_res   = std::max( x_left (),  r.x_left () );
        int  x_right_res  = std::min( x_right(),  r.x_right() );
        int  Ay_res       = std::min( Ay_      ,  r.Ay_       );
 
        return  T_rect
                    ( 
                        x_left_res,
                        x_right_res - x_left_res,
                        Ay_res
                    );
    }
    //-----------------------------------------------------------------------------------
    T_rect  operator+(const T_rect&  r)
    {
        if( empty   () )    return  r;
        if( r.empty () )    return  *this;        
        int  x_left_res   = std::min( x_left (),  r.x_left () );
        int  x_right_res  = std::max( x_right(),  r.x_right() );
        int  Ay_res       = std::max( Ay_      ,  r.Ay_       );
 
        return  T_rect
                    ( 
                        x_left_res,
                        x_right_res - x_left_res,
                        Ay_res
                    );
    }
    //-----------------------------------------------------------------------------------
    T_rect  operator-(const T_rect&  r)
    {
        if( (*this * r).empty() )
        {
            return  *this;
        }
        
        int     x_left_res    = x_left(); 
        int     x_right_res   = x_right();
        T_rect  intersection  = *this * r;        
 
        if( x_left_res == intersection.x_left() )
        {
            x_left_res = intersection.x_right();
        }
        
        if( x_right_res == intersection.x_right() )
        {
            x_right_res = intersection.x_left();
        }       
 
        return  T_rect
                    ( 
                        x_left_res,
                        x_right_res - x_left_res,
                        Ay_
                    );
    }
    //-----------------------------------------------------------------------------------
private:
    //-----------------------------------------------------------------------------------
    int  x_left() const
    {
        return  x_;
    }
    //-----------------------------------------------------------------------------------
    int  x_right() const
    {
        return  x_ + Ax_;
    }
    //-----------------------------------------------------------------------------------
};
/////////////////////////////////////////////////////////////////////////////////////////
int  get_plus_minus_from_1_to(int  a)
{
    return  ( rand() % a + 1 ) * ( rand() % 10 ? 1 : -1 );
}
/////////////////////////////////////////////////////////////////////////////////////////
T_rect  get_rand_rect(int  a)
{
    return  T_rect
                ( 
                    get_plus_minus_from_1_to(a), 
                    get_plus_minus_from_1_to(a), 
                    get_plus_minus_from_1_to(a) 
                );
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    srand(unsigned(time(0)));
    T_rect  A = get_rand_rect(5);
    std::cout << "A: ";
    A.print();
    std::cout << std::endl;
 
    T_rect  B = get_rand_rect(5);
    std::cout << "B: ";
    B.print();
    std::cout << std::endl;
 
    T_rect  C = A * B;
    std::cout << "A * B: ";
    C.print();
    std::cout << std::endl;
 
    T_rect  CC = A + B;
    std::cout << "A + B: ";
    CC.print();
    std::cout << std::endl;
 
    T_rect  CCC = A - B;
    std::cout << "A - B: ";
    CCC.print();
    std::cout << std::endl;
}
 
Текущее время: 06:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru