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

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

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

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

14.05.2012, 18:29. Просмотров 1723. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2012, 18:29     Создать класс типа квадрат
Посмотрите здесь:

Создать динамичный класс для операций с динамическими массивами чисел действительного типа C++
Класс квадрат C++
C++ Создать базовый класс Array, в котором определите поле-массив подходящего типа
C++ Класс объявление с элементом типа класс Текст
Создать класс типа - окружность C++
Создать класс Matrix, реализующий двухмерный динамический массив типа int C++
C++ Создать класс типа - время
Создать класс Book. Переменная типа Book должна содержать следующие поля: C++
Создать шаблонный класс для определения нормы элемента заданного типа C++
C++ Создать класс "Квадрат" с методами
C++ Создать класс "Список объектов любого типа"
Создать класс "Список объектов любого типа" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
14.05.2012, 18:48     Создать класс типа квадрат #2
Ну а почему в конструкторе не идеализируются переменные perimetr и square?
dimcoder
Полярный
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,116
14.05.2012, 18:52     Создать класс типа квадрат #3
Цитата Сообщение от yuron_477 Посмотреть сообщение
идеализируются
инициализируются
gray_fox
What a waste!
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
14.05.2012, 18:57     Создать класс типа квадрат #4
Вопрос: зачем хранить площадь и периметр в экземпляре? Всё равно при вызове одноимённых ф-й они пересчитываются.
zss
Модератор
Эксперт С++
6193 / 5796 / 1877
Регистрация: 18.12.2011
Сообщений: 14,809
Завершенные тесты: 1
14.05.2012, 19:14     Создать класс типа квадрат #5
1. Проверка правильности координат в конструкторе сделана неверно.
Корень квадратный - всегда принимает неотрицательные значения.
Надо проверить, что все стороны равны и один из углов - 90 градусов.

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

И потом - у квадрата все стороны одинаковые, поэтому P=4a,S=a*a.
Tewe
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
21.05.2012, 17:25  [ТС]     Создать класс типа квадрат #6
Кто поможет довести программу до ума?
Yandex
Объявления
21.05.2012, 17:25     Создать класс типа квадрат
Ответ Создать тему
Опции темы

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