Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2017, 17:49   #1
Anastasya999
Новичок
Джуниор
 
Регистрация: 05.12.2017
Сообщений: 2
Восклицание Треугольники:реализация алгоритма сортировки вставками по площади

Здравствуйте! Помогите пожалуйста с заданием: необходимо реализовать класс или структуру треугольников, где пользователь вводит количество треугольников,координаты вершин каждого, а программа считает площадь каждого и выводит данные на экран, затем эти данные сортируются методом вставок и отсортированный массив выводится на экран. У меня проблема с тем, что после ввода координат всех треугольников, считается площадь только первого, дальше не могу разобраться как делать. И также не могу разобраться как реализовать сортировку, помогите пожалуйста!
Вот код моей программы:
Код:
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Triangle
{
private:
	double x1, x2, x3, y1, y2, y3, c, p, s, pp, a, b, n;
public:
	Triangle() {
		x1 = y1 = x2 = y2 = x3 = y3 = 0;
	}
	void postr_treug();
	void dlini_storon();
	void perimetr();
	void ploshad();
	int verific_l();
};

void Triangle::postr_treug()

//ввожу количество треугольников и точки для построения
{
	int M;
	cout << "Vvedite kolichestvo treugolnikov" << endl;
	cin >>M;
	vector<Triangle> T(M);
	for (int i = 0; i < T.size(); i++) {
		cout << "x1="; cin >> x1;
		cout << "y1="; cin >> y1;
		cout << "x2="; cin >> x2;
		cout << "y2="; cin >> y2;
		cout << "x3="; cin >> x3;
		cout << "y3="; cin >> y3;
	}
	system("pause");
}


void Triangle::dlini_storon()
//ищу длины сторон
{
		a = sqrt(((x1 - x2)*(x1 - x2)) + ((y1 - y2)*(y1 - y2))); cout << " a=" << a << endl;
		b = sqrt(((x1 - x3)*(x1 - x3)) + ((y1 - y3)*(y1 - y3))); cout << " b=" << b << endl;
		c = sqrt(((x2 - x3)*(x2 - x3)) + ((y2 - y3)*(y2 - y3))); cout << " c=" << c << endl;
	
}
	void Triangle::perimetr()
		//ищу периметр  и полупериметр
	{
		p = a + b + c;  cout << "perimetr=" << p << endl;
		pp = p / 2;
	}

	void Triangle::ploshad()
		//нахожу площадь по формуле Герона
	{
		s = sqrt(pp*(pp - a)*(pp - b)*(pp - c));
		cout << "ploshad=" << s << endl;
	}
	int Triangle::verific_l() //Проверка на существование треугольника
	{
		if ((a <= b + c) && (b <= a + c) && (c <= a + b)&&(a>0&b>0&c>0)) { 
			cout << "triugolnik sushestfuet" << endl; 
		}
		else { 
			cout << "triugolnik ne sushestfuet" << endl;
			return false;
		}
	}

	int main(void)
	{
		Triangle triangle;
		triangle.postr_treug();
		triangle.dlini_storon();
		triangle.perimetr();
		triangle.ploshad();
		triangle.verific_l();
		system("pause");
		return 0;
	}

Последний раз редактировалось Аватар; 05.12.2017 в 17:57.
Anastasya999 вне форума Ответить с цитированием
Старый 05.12.2017, 19:56   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Anastasya999 Посмотреть сообщение
считается площадь только первого
Что значит "только первого"? А где у вас вообще другой?

Читайте про массивы и циклы.

Код:
type array[size];
for (size_t i = 0; i < size; ++i) array[i].DoSomething();
waleri вне форума Ответить с цитированием
Старый 06.12.2017, 08:51   #3
Anastasya999
Новичок
Джуниор
 
Регистрация: 05.12.2017
Сообщений: 2
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Что значит "только первого"? А где у вас вообще другой?

Читайте про массивы и циклы.

Код:
type array[size];
for (size_t i = 0; i < size; ++i) array[i].DoSomething();
Цитата:
void Triangle:ostr_treug()

//ввожу количество треугольников и точки для построения
{
int M;
cout << "Vvedite kolichestvo treugolnikov" << endl;
cin >>M;
vector<Triangle> T(M);
for (int i = 0; i < T.size(); i++) {
cout << "x1="; cin >> x1;
cout << "y1="; cin >> y1;
cout << "x2="; cin >> x2;
cout << "y2="; cin >> y2;
cout << "x3="; cin >> x3;
cout << "y3="; cin >> y3;
}
system("pause");
}
Вот здесь в цикле я ввожу координаты для треугольников, а далее считается площадь только одного,я не знаю как сделать для всех
Anastasya999 вне форума Ответить с цитированием
Старый 06.12.2017, 09:02   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Вот здесь в цикле я ввожу координаты для треугольников
И в водите их в одни и те же переменные, в одном и том же классе.

Вообще зачем эта функция в классе? Надо либо совсем ее выносить и использовать конструкторы/сеттеры, либо переделывать, чтобы она запрашивала координаты только для себя и вызывать для всех треугольников. Кстати, ваш вектор сдохнет при выходе из функции.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать алгоритм сортировки вставками для строк матрицы. vutt C# (си шарп) 1 11.05.2016 07:59
Реализация алгоритма сортировки вставкой на PHP Gift020 Помощь студентам 1 20.08.2012 16:56
Метод сортировки обменом и бинарными вставками _Иван_ Помощь студентам 1 19.04.2011 11:57
STL реализация алгоритма сортировки в классе Progsenya Общие вопросы C/C++ 0 09.09.2010 21:36