Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/75: Рейтинг темы: голосов - 75, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 10

Создать класс треугольник, члены класса - длины 3-х сторон. Предусмотреть вычисления и вывод данных о фигуре, проверку существования треугольника.

08.01.2013, 18:01. Показов 15137. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, помогите плиз с программой
Создать класс треугольник, члены класса - длины 3-х сторон.
Предусмотреть в классе методы проверки существования треугольника, вычисления и вывода сведений о фигуре – длины сторон, углы, периметр,площадь.
Были наброски такие, с++ изучаю не долго, поэтому не могу додумать(
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
#include<iostream>
using namespace std;
class treyg
{
private:
     int storona;
     int P;
     int S;
     int L;
 
public:
 void st_treyg()
  {
      cout<<"Введите сторону"<<endl;
      cin>>storona;
   }
 void ps_treyg(int Per, int Plosh, int dlinstor)
 {
    P = Per;
    S = Plosh;
    L = dlinstor;
 }
void getDate()
{
    P=storona*storona;
    S=storona+storona+storona;
    L=storona;
}
};
 
int main()
{
     int storona, P, S, L;
cout<<"Stor"<<storona<<endl;
treyg sfaftreyg;
sfaftreyg.st_treyg();
sfaftreyg.ps_treyg();
sfaftreyg.getDate();
system("pause");
treyg P, S, L;
L.st_treyg =st_treyg();
setlocale(LC_ALL,"Russian");
return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2013, 18:01
Ответы с готовыми решениями:

Создать класс треугольник, члены класса - длины 3-х сторон
Предусмотреть в классе методы проверки существования треугольника, вычисления и вывода сведений о фигуре – длины сторон, углы, периметр,...

Создать класс треугольник, члены класса – длины 3-х сторон
Создать класс треугольник, члены класса – длины 3-х сторон. Предусмотреть в классе методы проверки существования треугольника, ...

создать класс треугольник, члены класса - длины 3-х сторон
Прошу помочь составить программу на С++ по задаче: создать класс треугольник, члены класса - длины 3-х сторон. Предусмотреть в классе...

23
41 / 41 / 5
Регистрация: 29.04.2012
Сообщений: 185
08.01.2013, 18:10
Члены класса - длины трех сторон, а у тебя члена класса, это одна сторона, периметр, площадь и ещё что то L

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
class triangle
{
public:
triangle(); //Конструктор по умолчанию
~triangle(); //Деструктор
void Inform(); //Внутри него вызывай функции периметра и т.д. Т.к. у тебя в задании указано, что члены класса только 3 стороны
private:
int a, b, c; //Три стороны
int Perimetr();
int Area();
//...остальные методы
};
Так же методы лучше описывать не в объявлении класса. Описывать внутри рекомендуется, когда кода совсем немного, тогда функции получаются inline.
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 10
08.01.2013, 18:55  [ТС]
ММ...не понятно..
не совсем понял
0
171 / 79 / 4
Регистрация: 05.12.2012
Сообщений: 217
08.01.2013, 19:15
Цитата Сообщение от F@nt Посмотреть сообщение
не совсем понял
Что конкретно?)
Во-первых, у Вас должно участвовать 3 стороны( ведь треугольник задается 3мя сторонами, а у Вас прописан лишь один интовский параметр )
Во-вторых, Вам было предложено делать в обьявлении класса только обьявление функций. Реализацию следует проводить в реализации класса. В будущем, ваши классы будут состоять из 2х файлов: .h и .cpp, в ашнике будет обьявление класса, в срр - реализация.
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 10
08.01.2013, 19:21  [ТС]
робят вы меня загрузили, подвис на несколько минут, а можно какой нить пример похожий?))
0
41 / 41 / 5
Регистрация: 29.04.2012
Сообщений: 185
08.01.2013, 21:42
Да пжлста.

Я делал класс по представлению кольцевого списка в виде массива. Вроде так задание звучало.

Class.h

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
ifndef _CLASS_H
#define _CLASS_H
 
class Circle
{
public:
    Circle(unsigned int size);
    ~Circle();
    void ShowCircle () const; // Отобразить массив
    void ClearCircle (); // Очистка массива
    int SizeCirle () const; // Размер массива
    void ShowThisElement () const; // Показать текущий элемент
    void NextElement (); // Перейти к следующему
    void NextNPosition (unsigned int n); // Перейти по кольцу на n элементов
    void SearchElement (int element) const; // Поиск элемента по значению
    void DeleteThis (); // Удалить текущий
    void AddElement (unsigned int AddedCount); //Добавить следом за текущим
 
private:
    unsigned int ArraySize;
    unsigned int RealSize;
    unsigned int CountIndex;
    unsigned int *pArr;
};
 
#endif _CLASS_H
Class.cpp

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
#include "Class.h"
#include <iostream>
#include <cstring>
 
using namespace std;
 
Circle::Circle(unsigned int size)
{
    ArraySize=RealSize=size;
    pArr = new unsigned int [ArraySize];
    for (unsigned int i=0; i<ArraySize; i++)
    {
        pArr[i]=i;
    }
    CountIndex=0;
}
 
Circle::~Circle()
{
    delete []pArr;
    pArr=0;
}
 
void Circle::ShowCircle () const
{
    for (unsigned int i=CountIndex; i<ArraySize; i++)
    {
        cout<<pArr[i]<<" ";
    }
    for (unsigned int i=0; i<CountIndex; i++)
    {
        cout<<pArr[i]<<" ";
    }
    cout<<endl;
}
 
void Circle::ClearCircle () 
{
    for (unsigned int i = 0; i<ArraySize; i++)
        pArr[i]=0;
}
 
int Circle::SizeCirle() const
{
    return ArraySize;
}
....
Вот тебе пример, не очень сложный
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 10
09.01.2013, 14:47  [ТС]
В общем попробывал, но у меня проблема с математической функцией <math> ошибка:Не удается открыть файл include: math: No such file or directory, в чем проблема может?
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
#include<iostream>
#include <cmath> 
#include <math>
using namespace std;
 
class Triangle
{
private:
    double s[3];
public:
    Triangle(double a, double b, double c)
    {
        s[0] = a;
        s[1] = b;
        s[2] = c;
    }
    
    double side(int i)
    {
        return s[i];
    }
    
    bool exists()
    {
        return (s[0] + s[1] <= s[2]) && (s[1] + s[2] <= s[0]) && (s[0] + s[2] <= s[1]);
    }
    
    double perimeter()
    {
        return s[0] + s[1] + s[2];
    }
 
double square()
{
 * *double p=0.5*(s[0]+s[1]+s[2]);
    return sqrt(p*(p-s[0])*(p-s[1])*(p-s[2]));
}
};
  
int main()
{
setlocale(LC_ALL,"Russian");
double a, b, c;
cout << "Введи стороны треугольника:";
cin >> a >> b >> c;
Triangle triangle1(a, b, c);
cout << "Периметр: " << triangle1.perimeter() << endl;
cout << "стороны треугольника: " << triangle1.side(0) << ", " << triangle1.side(1) << ", " << triangle1.side(2) << endl;
triangle1.exists();
triangle1.perimeter();
triangle1.square();
system("pause");
return 0;
}
0
41 / 41 / 5
Регистрация: 29.04.2012
Сообщений: 185
09.01.2013, 15:13
Попробуй прописать <math.h>... Но вообще посмотри в корне программы, у меня Visual Studio 2011, там вот по такому адресу находится math.h и остальные заголовочные:

MS VS 2011\VS\crt\src
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 10
09.01.2013, 15:32  [ТС]
Если прописывать <math.h>, то все намного страшнее

Code
1
2
3
4
5
6
7
1.error C3872: 0xa0: этот символ невозможно использовать в идентификаторе
2. error C3872: 0xa0: этот символ невозможно использовать в идентификаторе
3. error C2065:  : необъявленный идентификатор
4. error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором " double"
5. error C2065:  double: необъявленный идентификатор
6. error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "p"
7. error C2065: p: необъявленный идентификатор
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
09.01.2013, 15:36
Цитата Сообщение от F@nt Посмотреть сообщение
C++
1
2
#include <cmath> 
#include <math>
Интересное решение =))) Особенно <math>
C++
1
2
3
double square()
{
 * *double p=0.5*(s[0]+s[1]+s[2]);
А это что?
0
22 / 9 / 2
Регистрация: 16.10.2010
Сообщений: 115
09.01.2013, 15:43
Цитата Сообщение от Croessmah Посмотреть сообщение
А это что?
По всему видимо функция вычисления площади треугольника.. Только площадь треугольника равна половине основания, умноженной на высоту, либо S=корень(p*(p-s[0])*(p-s[1]*(p-s[2])),
где p - полупериметр,
s[i] - i-ая сторона
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 10
09.01.2013, 16:04  [ТС]
Croessmah,
C++
1
2
3
4
 
double square()
{
 * *double p=0.5*(s[0]+s[1]+s[2]);
косячок, исправлено.
но площадь по прежнему не считает
0
22 / 9 / 2
Регистрация: 16.10.2010
Сообщений: 115
09.01.2013, 16:15
это не площадь, а полупериметр.. и убери звездочки перед double
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 10
09.01.2013, 16:28  [ТС]
zener, звездочки убрал,
это формула Герона, и не суть, не работает все равно)
0
22 / 9 / 2
Регистрация: 16.10.2010
Сообщений: 115
09.01.2013, 16:33
а фигурную закрывающую скобочку поставил?)
ну и конечно же надо вернуть это p в некоторое определенное место) (то бишь написать еще return p)

Добавлено через 2 минуты
Цитата Сообщение от F@nt Посмотреть сообщение
zener, звездочки убрал,
это формула Герона, и не суть, не работает все равно)
и это ПОЛУПЕРИМЕТР!)) формулу Герона я написал, смотри выше)
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 10
09.01.2013, 16:50  [ТС]
Цитата Сообщение от zener Посмотреть сообщение
а фигурную закрывающую скобочку поставил?)
вроде стоит.
ну и конечно же надо вернуть это p в некоторое определенное место) (то бишь написать еще return p)
типа того?
C++
1
2
3
4
5
6
double square()
{
double p=0.5*(s[0]+s[1]+s[2]);
    return sqrt(p*(p-s[0])*(p-s[1])*(p-s[2]));
return p;
}
0
22 / 9 / 2
Регистрация: 16.10.2010
Сообщений: 115
09.01.2013, 16:52
нет. возвращать значение можно только 1 раз, если у тебя нет условий.
потом, объяви переменную типа double и присвой ей это (sqrt(p*(p-s[0])*(p-s[1])*(p-s[2])) выражение. А уж потом возвращай эту переменную
0
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
09.01.2013, 16:53
C++
1
2
3
4
5
6
double square()
{
    double p=0.5*(s[0]+s[1]+s[2]);
    
    return sqrt(p*(p-s[0])*(p-s[1])*(p-s[2]));
}
0
22 / 9 / 2
Регистрация: 16.10.2010
Сообщений: 115
09.01.2013, 17:09
Вот мне интересно, ты в сишке что-нибудь тыкаешь? или просто с бумажкой сидишь? посмотрел бы ошибки, которые валятся. По ним быстро все исправляется.
Псевдокод:
в хедере:
C++
1
2
3
4
5
6
7
8
9
10
11
class triangle
{
protected:
    int a,b,c;
public:
    triangle():a(0),b(0),c(0);
    ~triangle() {};
    double Perimetr();
    double Square();
    void Set(int _a,int _b, int _c);
};
в сpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
double triangle::Perimetr()
{
    double p=0;
    p=a+b+c;
    return p;
}
 
double triangle::Square()
{
    double s=0;
    double p=Perimetr();
    double pp=p/2; //Полупериметр
    s=sqrt(pp*(pp-a)*(pp-b)*(pp-c));
    return s;
}
 
void triangle::Set(int _a, int _b, int _c)
{
    a=_a;
    b=_b;
    c=_c;
}
В main:
C++
1
2
3
4
5
6
7
8
9
10
void main()
{
    triangle tr;
    tr.Set(4,5,6);
    int p=tr.Perimetr();
    cout<<"Perimetr="<<p<<endl;
    int s=tr.Square();
    cout<<"Square="<<s<<endl;
    return 0;
}
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 10
09.01.2013, 17:12  [ТС]
Цитата Сообщение от zener Посмотреть сообщение
нет. возвращать значение можно только 1 раз, если у тебя нет условий.
потом, объяви переменную типа double и присвой ей это (sqrt(p*(p-s[0])*(p-s[1])*(p-s[2])) выражение. А уж потом возвращай эту переменную
C++
1
2
3
4
5
6
double square()
{
    double p=0.5*(s[0]+s[1]+s[2]);
    double q=sqrt(p*(p-s[0])*(p-s[1])*(p-s[2]));
    return p;
}
или что то не допонял
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2013, 17:12
Помогаю со студенческими работами здесь

Создать класс Прямоугольник, члены класса – длины сторон a и b
Создать класс Прямоугольник, члены класса – длины сторон a и b. Предусмотреть в классе методы вычисления и вывода сведений о фигуре – длины...

Создать класс треугольник, члены класса - длины 3-х сторон
Создать класс треугольник, члены класса - длины 3-х сторон. Предусмотреть в классе методы проверки существования треугольника, вычисления и...

Создать класс треугольник. Члены класса - координаты 3-х точек
Создать класс треугольник. Члены класса - координаты 3-х точек. Предусмотреть в классе методы проверки существования треугольника,...

Класс Гипербола,поля класса:длины полуосей.Предусмотреть в классе методы вычисления:эксцентриситета эллипса,координат фокусов,асимптот гиперболы
Класс Гипербола,поля класса:длины полуосей.Предусмотреть в классе методы вычисления:эксцентриситета эллипса,координат фокусов,асимптот...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru