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

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

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

Класс прямоугольник исправить код - C++

22.09.2013, 23:15. Просмотров 780. Ответов 6
Метки нет (Все метки)

я написал код, не могу сделать один шаг в нем писал в Code Blocks
нужно еще сравнить площади двух прямоугольников, и если равны - вывести соответствующее сообщение, и если не равны тоже

C++ (Qt)
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
#include <iostream>
 
using namespace std;
class Rectangle
{
    public:
    Rectangle();
    Rectangle(double);
    Rectangle(double,double);//обозначает простой тип, используемый для хранения 64-разрядных значений с плавающей запятой.
    double area();
 
    private://Модификатор доступа, обозначает, что программист будет использовать соответствующие элементы только внутри своего собственного класса.
    double width;
    double lenght;
};
 
Rectangle::Rectangle()//:: - оператор расширения области видимости.
{
    cout << "Введите длину прямоугольника: "; cin >>lenght;
    cout << "Введите ширину прямоугольника: "; cin >>width;
}
 
Rectangle::Rectangle(double side)
{
    lenght = width = side;
}
 
Rectangle::Rectangle(double w, double l)
{
    lenght = l;
    width = w;
}
 
double Rectangle::area()
{
    return width * lenght;
}
 
int main()
{   setlocale(LC_ALL,"Russian");
    Rectangle A,B(6,4);
    cout << "Площадь первого прямоугольника: " << A.area()<< endl;
    cout << "Площадь второго прямоугольника: " << B.area()<< endl;
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Крюгер
0 / 60 / 3
Регистрация: 16.11.2012
Сообщений: 418
Записей в блоге: 3
22.09.2013, 23:31     Класс прямоугольник исправить код #2
не так надо, сейчас переделаю
Stella
75 / 75 / 5
Регистрация: 26.02.2013
Сообщений: 224
23.09.2013, 00:06     Класс прямоугольник исправить код #3
artem1994, это в конце такой код добавить:
C++
1
2
3
if (A.area()==B.area())
cout << "Площади равны";
else cout << "Пощади не равны";
borodat
Заблокирован
23.09.2013, 00:25     Класс прямоугольник исправить код #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Rectangle {
    ...
    
    bool comapreArea (Rectangle& rect) {
        return this->area() == rect.area();
    }
    ...
}
 
int main () {
 
    Rectangle A, B;
 
    if (A.comapreArea(&B))
        std::cout << "Yeah, we win :)\n";
    else
        std::cout << "Oops, we wrong :(\n";
}
Крюгер
0 / 60 / 3
Регистрация: 16.11.2012
Сообщений: 418
Записей в блоге: 3
23.09.2013, 01:40     Класс прямоугольник исправить код #5
artem1994, ту чушь что наверху даже не читай, вот даю тебе работоспособный класс, это действительно можно назвать классом, да и сделать при помощи него с твоими прямоугольниками можно ВСЁ:
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
class Rectangle
{ float _w,_h;
public:
    Rectangle():_w(0),_h(0){}           //---constructor 1
    Rectangle(float sq):_w(sq),_h(sq){} //---constructor 2
    Rectangle(float w,float h):_h(h),_w(w){}  //---constructor 3
    Rectangle(const Rectangle &r){_w=r._w; _h=r._h;} //---copy constructor
 
    ~Rectangle(); //--- destructor
 
    float GetWith(){return _w;}  //---get metods
    float GetHigth(){return _h;}
    float GetArea(){return _w*_h;} //---Area.......
    void SetWith(float w){_w = w;}  //---set metods
    void SetHigth(float h){_h= h;}
//----overload orerators
    Rectangle operator+(Rectangle &q){Rectangle w; w._h=q._h+_h; w._w=q._w+_w; return w;}
    Rectangle operator+(float v){Rectangle w; w._h=v+_h; w._w=v+_w; return w;}
    bool operator==(Rectangle &r){if(_h==r._h && _w==r._w){return true;} return false;}
    Rectangle &operator=(Rectangle &r){if(this== &r){return *this;} _h=r._h; _w=r._w; return *this;}
    friend std::ostream &operator<<(std::ostream &stream, Rectangle &r);
    friend std::istream &operator>>(std::istream &stream, Rectangle &r);
 
};
std::ostream &operator<<(std::ostream &stream, Rectangle &r){
    stream<<"(Rect"<<r._h<<"by"<<r._w<<"\n)";
return stream;
}
std::istream &operator>>(std::istream &stream, Rectangle &r){
    std::cout<<"SetWith:";
        stream>>r._w;
    std::cout<<"SetHigth:";
        stream>>r._h;
    return stream;
}
 
//(с)Крюгер , но юзай где хочешь конечно ж
//[QUOTE]писал для тебя до 1:36 по мск... жду благодарности гг[/QUOTE]
Зы этот класс не идеал, по идее реализация должна находиться в cpp файле, это на будущее, но я не стал заморачиваться, и потому сделал как есть...

ЗЗЫ Устал... иду спать

ЗЗЗЫ нужна будет помощь по классу пиши в личку
borodat
Заблокирован
23.09.2013, 02:07     Класс прямоугольник исправить код #6
Крюгер, То есть по твоему, вот этот символьный пластелин и есть труЪ код? Ну ладно я могу согласиться с тем что необходимо перегрузить оператор эквивалентности (только для приличия, ибо как известно эквивалентности в общем случае прямоугольников нет). Но ведь задача-то стоит сравнить площади двух прямоугольников:
Цитата Сообщение от artem1994 Посмотреть сообщение
нужно еще сравнить площади двух прямоугольников, и если равны - вывести соответствующее сообщение, и если не равны тоже
Цитата Сообщение от Крюгер Посмотреть сообщение
писал для тебя до 1:36 по мск... жду благодарности гг
За эту пакость надо палкой багодарить. space на клавиатуре пивом залил?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2013, 09:00     Класс прямоугольник исправить код
Еще ссылки по теме:

C++ Создать класс прямоугольник, члены класса - координаты 4-х точек
C++ Класс Rectangle (прямоугольник)
Что исправить, чтобы фигуры квадрат и прямоугольник могли изменять размер? C++
Класс Прямоугольник C++
C++ Разработать класс прямоугольник и методы работы с ним

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

Или воспользуйтесь поиском по форуму:
Крюгер
0 / 60 / 3
Регистрация: 16.11.2012
Сообщений: 418
Записей в блоге: 3
23.09.2013, 09:00     Класс прямоугольник исправить код #7
borodat, площадь уже как ни странно посчитанную выдает
C++
1
float GetArea(){return _w*_h;}
что мешает сравнить 2 площади? И еще , по стандартам ооп, между прочим реализация должна быть скрыта...
и она ...скрыта. И накрайний случай ничего не мешает взять да и дописать comapre -метод
---------------
и да. ту изначальную "пакость" компиль даже собирать отказывается. лезет куча багов и тд.
А вот этот компилится как надо.Работает , успел потестить даже. (собиралось под ms visual C++ 2008)

Добавлено через 18 минут
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
class Rectangle
{ float _w,_h;
public:
    Rectangle():_w(0),_h(0){}           //---constructor 1
    Rectangle(float sq):_w(sq),_h(sq){} //---constructor 2
    Rectangle(float w,float h):_h(h),_w(w){}  //---constructor 3
    Rectangle(const Rectangle &r){_w=r._w; _h=r._h;} //---copy constructor
 
    ~Rectangle(); //--- destructor
 
    float GetWith(){return _w;}  //---get metods
    float GetHigth(){return _h;}
    float GetArea(){return _w*_h;} //---Area.......
    bool AreaCompare(Rectangle &r){return this->GetArea()==r.GetArea();} //----compare area...for fatty trolls
    void SetWith(float w){_w = w;}  //---set metods
    void SetHigth(float h){_h= h;}
//----overload orerators
    Rectangle operator+(Rectangle &q){Rectangle w; w._h=q._h+_h; w._w=q._w+_w; return w;}
    Rectangle operator+(float v){Rectangle w; w._h=v+_h; w._w=v+_w; return w;}
    bool operator==(Rectangle &r){if(_h==r._h && _w==r._w){return true;} return false;}
    Rectangle &operator=(Rectangle &r){if(this== &r){return *this;} _h=r._h; _w=r._w; return *this;}
    friend std::ostream &operator<<(std::ostream &stream, Rectangle &r);
    friend std::istream &operator>>(std::istream &stream, Rectangle &r);
 
};
std::ostream &operator<<(std::ostream &stream, Rectangle &r){
    stream<<"(Rect"<<r._h<<"by"<<r._w<<"\n)";
return stream;
}
std::istream &operator>>(std::istream &stream, Rectangle &r){
    std::cout<<"SetWith:";
        stream>>r._w;
    std::cout<<"SetHigth:";
        stream>>r._h;
    return stream;
}
да чтоб не писали тупых вопросов и где сравнить... ВО СРАВНИВАЙТЕ !
(между прочим я и не говорил что в этом классе есть всё ,это лишь каркас, но он правильнный, рабочий...кому надо тот дополнит)

Добавлено через 26 минут
Yandex
Объявления
23.09.2013, 09:00     Класс прямоугольник исправить код
Ответ Создать тему
Опции темы

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