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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Tewe
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
#1

Создать класс типа квадрат - C++

14.05.2012, 18:29. Просмотров 1995. Ответов 5
Метки нет (Все метки)

Создать класс типа "квадрат". Поля - координаты сторон квадрата. Функции члены вычисляют площадь, периметр, устанавливают поля и возвращают значения. Функции-члены установки полей класса должны проверять корректность задаваемых параметров. Функция печати.

Правильно ли написана программа?
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
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
class Kvadrat {
public:
    Kvadrat(double, double, double, double);
    double fooP();
    double fooS();
private:
    double x1, y1, x2, y2;
    double perimetr;
    double square;
};
 
Kvadrat::Kvadrat(double a, double b, double c, double d)
{
x1 = a; y1 = b; x2 = c; y2 = d;
 
if ((sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1)))) <= 0)
 
 cout << "Данные координаты не верны!" << endl;
 
else
{
    cout << "Координаты начала и конца одной из сторон квадрата: "
         << "(" << x1 << "," << y1 << ")" << " и " << "(" << x2 << "," << y2 << ")" << endl << endl;
  }
}
 
 
double Kvadrat::fooP()
{
perimetr = ((sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1)))) + (sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1))))) / 2;
return perimetr;
}
double Kvadrat::fooS()
{
square = (sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1))) * sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1))));
return square;
}
 
Kvadrat q(double, double, double, double);
 
int main()
{
double x1, y1, x2, y2;
cout << "Введите x1: " << endl;
cin >> x1;
cout << "Введите y1: " << endl;
cin >> y1;
cout << "Введите x2: " << endl;
cin >> x2;
cout << "Введите y2: " << endl;
cin >> y2;
Kvadrat w = Kvadrat(x1, y1, x2, y2);
cout << "Периметр квадрата равен: " << w.fooP();
cout << endl;
cout << "Площадь квадрата равна: " << w.fooS();
getch();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2012, 18:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать класс типа квадрат (C++):

Создать класс типа - окружность - C++
Создать класс типа - окружность. Поля - радиус. Функции-члены вычисляют площадь, длину окружности, устанавливает поля и возвращают...

Создать класс типа - время - C++
Создать класс типа - время с полями: час (0-23), минуты (0-59), секунды (0-59). Класс имеет конструктор. Функции-члены установки времени,....

Создать класс "Квадрат" и производный класс "Правильная пирамида" - C++
Заранее спасибо за помощь)

Как создать динамический массив типа string? Как создать класс такого массива? - C++
Как создать динамический массив типа string? Как создать класс такого массива? =-O Помогите, пожалуйста, очень нужна помощь!

Класс «Квадрат»: можно ли вписать в объект-квадрат со стороной A окружность радиуса R - C++
Люди помогите, сижу уже неделю, выходит какая-то фигня. Хочу научиться, но тяжеловато) Объясните кто может, как будет выглядеть код? ...

Создать шаблонный класс для определения нормы элемента заданного типа - C++
Нужно создать шаблонный класс для определения нормы элемента заданного ти-пу. Для комплексных чисел норма определяется как модуль...

5
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
14.05.2012, 18:48 #2
Ну а почему в конструкторе не идеализируются переменные perimetr и square?
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
14.05.2012, 18:52 #3
Цитата Сообщение от yuron_477 Посмотреть сообщение
идеализируются
инициализируются
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
14.05.2012, 18:57 #4
Вопрос: зачем хранить площадь и периметр в экземпляре? Всё равно при вызове одноимённых ф-й они пересчитываются.
0
zss
Модератор
Эксперт С++
6478 / 6041 / 1983
Регистрация: 18.12.2011
Сообщений: 15,660
Завершенные тесты: 1
14.05.2012, 19:14 #5
1. Проверка правильности координат в конструкторе сделана неверно.
Корень квадратный - всегда принимает неотрицательные значения.
Надо проверить, что все стороны равны и один из углов - 90 градусов.

2. При вычислении периметра надо умножить на 2, а не делить на 2.

И потом - у квадрата все стороны одинаковые, поэтому P=4a,S=a*a.
0
Tewe
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
21.05.2012, 17:25  [ТС] #6
Кто поможет довести программу до ума?
0
21.05.2012, 17:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2012, 17:25
Привет! Вот еще темы с ответами:

Создать класс Matrix, реализующий двухмерный динамический массив типа int - C++
Здравствуйте! Задание: Создать класс Matrix, реализующий двухмерный динамический массив типа int. Конструктор должен заполнять массив...

Создать класс "Квадрат" с методами - C++
На языке С++ создать класс типа - квадрат. Поля - сторона. Методы вычисляют площадь, периметр, устанавливает поля и возвращают значения....

Создать динамичный класс для операций с динамическими массивами чисел действительного типа - C++
Создать динамичный класс для операций с динамическими массивами чисел действительного типа. Сделать перегрузки символов операций: &quot;=&quot; -...

Создать базовый класс Array, в котором определите поле-массив подходящего типа - C++
Всем привет!!! Создать базовый класс Array, в котором определите поле-массив подходящего типа и поле для хранения количества элементов у...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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