С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 13.04.2019
Сообщений: 64
1

Наследование

05.09.2019, 10:11. Показов 1210. Ответов 5

Author24 — интернет-сервис помощи студентам
Не правильно подставляются значения векторов v1 v2 v3 v4 в переопределенный метод вычисления периметра double rectangle:: perimetr() . В чем причина не могу понять

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
#include <iostream>
#include <windows.h>
#include <cmath>
using namespace std;
class FOURAngle//класс четырехугольник
{
protected:
    int x1,x2,x3,x4;//координаты по х
    int y1,y2,y3,y4;//координаты по у
public:
    void vvod();//ввод
    void vivod();//вывод
    virtual double volume()=0;//виртальная площадь
    virtual double perimetr()=0;//виртуальный периметр
 
    //длины векторов
    double v1 = sqrt(pow(x2-x1,2) + pow(y2-y1,2));
    double v2 = sqrt(pow(x3-x2,2) + pow(y3-y2,2));
    double vd = sqrt(pow(x3-x1,2) + pow(y3-y1,2));
    double v3 = sqrt(pow(x3-x4,2) + pow(y3-y4,2));
    double v4 = sqrt(pow(x1-x4,2) + pow(y1-y4,2));
};
 
class rectangle: public FOURAngle//класс прямоугольник
{
public:
    double volume();//площадь
    double perimetr();//периметр
};
 
double rectangle::volume()//реализация площади
{
    double p1=sqrt(pow(x2-x1,2)+pow(y2-y1,2));//
    double p2=sqrt(pow(x3-x2,2)+pow(y3-y2,2));//
    return p1*p2;//
}
 
double rectangle:: perimetr()//реализация периметра
{
    return v1+v2+v3+v4;
}
 
void FOURAngle::vvod()//реализация ввода
{
    cout<<"Vvedite x1: ";
    cin>>x1;
    cout<<"Vvedite y1: ";
    cin>>y1;
 
    cout<<"Vvedite x2: ";
    cin>>x2;
    cout<<"Vvedite y2: ";
    cin>>y2;
 
    cout<<"Vvedite x3: ";
    cin>>x3;
    cout<<"Vvedite y3: ";
    cin>>y3;
 
    cout<<"Vvedite x4: ";
    cin>>x4;
    cout<<"Vvedite y4: ";
    cin>>y4;
}
 
void FOURAngle::vivod()//реализация вывода
{
    cout<<x1<<" "<<y1<<endl<<x2<<" "<<y2<<endl<<x3<<" "<<y3<<endl<<x4<<" "<<y4<<endl;
}
int main()//мейн
{
    rectangle r;//прямоугольник
    r.vvod();//ввод
    r.vivod();//вывод
    double v=r.volume();//площадь
    double p=r.perimetr();//периметр
    cout<<"volume: "<<v<<endl;//вывод площади
    cout<<"perimetr: "<<p<<endl;//вывод периметра
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.09.2019, 10:11
Ответы с готовыми решениями:

Наследование в С++.
Создать класс CFile, инкапсулирующий в себе такие функции работы с файлами, как Open, Close, Seek,...

Множественное наследование
Добрый день, коллективный разум, прошу твоей помощи. Вопрос в следующем: как имея следующую...

Наследование оператора '='
Ситуация такая: пишу класс 3-мерного вектора, предварительно создав шаблон n-мерного вектора (ибо...

Наследование конструктора от переменного шаблона
В С++ 11 появилась возможность унаследовать конструктора базового класса при помощи конструкции...

5
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.09.2019, 17:02 2
Лучший ответ Сообщение было отмечено vladiks1805 как решение

Решение

Цитата Сообщение от vladiks1805 Посмотреть сообщение
Не правильно подставляются значения векторов v1 v2 v3 v4 в переопределенный метод вычисления периметра double rectangle:: perimetr() . В чем причина не могу понять
Потому что их надо пересчитывать, когда ты меняешь x1....x4, y1...y4
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
void FOURAngle::vvod()//реализация ввода
{
cout<<"Vvedite x1: ";
cin>>x1;
cout<<"Vvedite y1: ";
cin>>y1;
 
cout<<"Vvedite x2: ";
cin>>x2;
cout<<"Vvedite y2: ";
cin>>y2;
 
cout<<"Vvedite x3: ";
cin>>x3;
cout<<"Vvedite y3: ";
cin>>y3;
 
cout<<"Vvedite x4: ";
cin>>x4;
cout<<"Vvedite y4: ";
cin>>y4;
 
v1 = sqrt(pow(x2-x1,2) + pow(y2-y1,2));
v2 = sqrt(pow(x3-x2,2) + pow(y3-y2,2));
vd = sqrt(pow(x3-x1,2) + pow(y3-y1,2));
v3 = sqrt(pow(x3-x4,2) + pow(y3-y4,2));
v4 = sqrt(pow(x1-x4,2) + pow(y1-y4,2));
}
0
Модератор
Эксперт С++
13723 / 10920 / 6478
Регистрация: 18.12.2011
Сообщений: 29,150
05.09.2019, 20:45 3
Не советую использовать pow для возведения в квадрат
1. выглядит некрасиво
2. аргументы переводятся в double и результат вычисляется через xy=ey*log(x)
Разве трудно написать
C++
1
double v1 = double(x2-x1)*(x2-x1) +  double(y2-y1)*(y2-y1);
а еще лучше
C++
1
2
3
double tx=x2-x1;
double ty=y2-y1;
double v1 = tx*tx+ty*ty;
1
1 / 1 / 0
Регистрация: 13.04.2019
Сообщений: 64
06.09.2019, 15:48  [ТС] 4
Объявил переменные v1...v4 в методе ввода, все равно при подставке в метод вычисления периметра выводится неправильный результат. Не может быть это от sqrt?
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
06.09.2019, 16:03 5
Цитата Сообщение от vladiks1805 Посмотреть сообщение
Объявил переменные v1...v4 в
Зачем ты их там объявил? Должны использоваться те, что объявлены в классе. Сделай this->v1 .... this->v4
0
1 / 1 / 0
Регистрация: 13.04.2019
Сообщений: 64
06.09.2019, 16:08  [ТС] 6
Все разобрался спасибо)))
0
06.09.2019, 16:08
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.09.2019, 16:08
Помогаю со студенческими работами здесь

Множественное наследование - так ли это плохо?
Вопрос не в том, что это такое и пр. С момента изучения Си++ во всех книжках все авторы (кроме...

Наследование. Написать набор классов, представляющий выражения.
Доброго времени суток! Помогите разобраться с данной задачей, пожалуйста. Изучаем в университете...

Наследование шаблоном шаблона (наследование конструктора)
Всем привет! Думаю, что эта тема хоть и касается общих вопросов программирования, но будет уместна...

Наследование от TShape
Пишу класс наследник от TShape. Не получается переопределить конструктор... Выдает ошибку: ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­хро­н­н­ы­й счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru