Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Здравствуйте! Помогите пожалуйста с заданием: необходимо реализовать класс или структуру треугольников, где пользователь вводит количество треугольников,координаты вершин каждого, а программа считает площадь каждого и выводит данные на экран, затем эти данные сортируются методом вставок и отсортированный массив выводится на экран. У меня проблема с тем, что после ввода координат всех треугольников, считается площадь только первого, дальше не могу разобраться как делать. И также не могу разобраться как реализовать сортировку, помогите пожалуйста!
Вот код моей программы:
Код:

#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 в 18:57.
Anastasya999 вне форума   Ответить с цитированием
Старый 05.12.2017, 20:56   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,166
Репутация: 1578
По умолчанию

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

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

Код:

type array[size];
for (size_t i = 0; i < size; ++i) array[i].DoSomething();

waleri вне форума   Ответить с цитированием
Старый 06.12.2017, 09:51   #3
Anastasya999
Новичок
 
Регистрация: 05.12.2017
Сообщений: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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, 10:02   #4
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,388
Репутация: 1609

icq: 216409213
По умолчанию

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать алгоритм сортировки вставками для строк матрицы. vutt C# (си шарп) 1 11.05.2016 08: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




10:23.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru