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

найти площадь и периметр треугольника - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 5.00
Ego-Delu
 Аватар для Ego-Delu
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 26
24.10.2011, 12:43     найти площадь и периметр треугольника #1
Условие такое:

Заданы три точки на плоскости: М с координатами (x1,y1), L с координатами (x2,y2), и Н с координатами (x3,y3). Определить лежат ли они на одной прямой. При отрицательном ответе найти площадь и периметр треукольника MLH.

Заранее благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2011, 12:43     найти площадь и периметр треугольника
Посмотрите здесь:

По координатам трех вершин некоторого треугольника найти его площадь и периметр. C++
Найти периметр и площадь треугольника C++
Найти периметр и площадь треугольника, используя формулу для расстояния между двумя точками на плоскости C++
C++ Периметр и площадь треугольника
C++ Найти площадь равностороннего треугольника, зная его периметр
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Inlight
42 / 41 / 2
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 13:49     найти площадь и периметр треугольника #2
Условие, при котором три точки лежат на одной прямой можешь найти здесь. Если оно выполняется, значит точки лежат на одной прямой, иначе - вычисляешь площадь через 3 точки по 8-й формуле и периметр как сумму расстояний между двумя точками по формулам отсюда
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 14:27     найти площадь и периметр треугольника #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
#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
int main()
{
double x1, x2, x3, y1, y2, y3, s;
cout << "x1 = ";
cin >> x1;
cout << "y1 = ";
cin >> y1;
cout << "x2 = ";
cin >> x2;
cout << "y2 = ";
cin >> y2;
cout << "x3 = ";
cin >> x3;
cout << "y3 = ";
cin >> y3;
s = fabs((x2-x1)*(y3-y1) - (x3-x1)*(y2-y1))/2.0;
cout << s;
getch();
   return 0;
}
Добавлено через 11 минут

Ошибочка. После int main() точка с запятой не нужна.
Добавлена команда паузы, а то окно быстро пропадает)))
Inlight
42 / 41 / 2
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 14:28     найти площадь и периметр треугольника #4
Цитата Сообщение от Revol'veR Посмотреть сообщение
Проверить, лежат ли точки на одной прямой.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<math.h>
using namespace std;
int main();
{
double x1, x2, x3, y1, y2, y3, s;
cout << "x1 = ";
cin >> x1;
cout << "y1 = ";
cin >> y1;
cout << "x2 = ";
cin >> x2;
cout << "y2 = ";
cin >> y2;
cout << "x3 = ";
cin >> x3;
cout << "y3 = ";
cin >> y3;
s = fabs((x2-x1)*(y3-y1) - (x3-x1)*(y2-y1))/2.0;
cout << s;
   return 0;
}
Это не проверка, а просто вычисление площади треугольника. А вот если она равна нулю..
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 14:47     найти площадь и периметр треугольника #5
Цитата Сообщение от Inlight Посмотреть сообщение
Это не проверка, а просто вычисление площади треугольника. А вот если она равна нулю..
Значит точки находятся на одной прямой. Погуглите теорему.
Inlight
42 / 41 / 2
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 14:50     найти площадь и периметр треугольника #6
Цитата Сообщение от Revol'veR Посмотреть сообщение
Значит точки находятся на одной прямой. Погуглите теорему.
Так а где Вы проверяете, что площать равна нулю? В строке
C++
1
s = fabs((x2-x1)*(y3-y1) - (x3-x1)*(y2-y1))/2.0;
Вы её находите и просто выводите в консоль.
Сержа
 Аватар для Сержа
57 / 56 / 5
Регистрация: 11.12.2009
Сообщений: 347
24.10.2011, 14:59     найти площадь и периметр треугольника #7
Ego-Delu,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/****** запускаем основной алгоритм перебора и построения точек
    // проверка точек!!! нельзя чтоб 3 точки лежало на одной пряиой
   nr:=0;
for I := 1 to SG.RowCount- 3 do
 for l := i+1 to SG.RowCount- 2 do
  for k := l+1 to SG.RowCount- 1 do begin
      x1:=mas[1,i];
      y1:=mas[2,i];
      x2:=mas[1,l];
      y2:=mas[2,l];
      x3:=mas[1,k];
      y3:=mas[2,k];
        // если площадь треугольника, по 3 точкам, равна 0 то эти 3 точки лежат на одной прямой
  if ((x1-x3)*(y2-y3)-(x2-x3)*(y1-y3))/2=0 then begin
    nr:=nr+1;
    nom[nr]:=i;
    nom[nr+1]:=l;
    nom[nr+2]:=k;
    nr:=nr+2;
  end;
  end;
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 15:05     найти площадь и периметр треугольника #8
Inlight, Пусть автор темы хоть немножко пошевелит мозгами. И так уже всё решено. А вставить оператор if - это несложно. Просто я не знаю, как ввести с клавиатуры знак(неравно).
s=0, понятно. А если не равно - как записать? Я тоже не виртуоз, помоги)))
Inlight
42 / 41 / 2
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 15:10     найти площадь и периметр треугольника #9
Цитата Сообщение от Revol'veR Посмотреть сообщение
Inlight, Пусть автор темы хоть немножко пошевелит мозгами. И так уже всё решено. А вставить оператор if - это несложно. Просто я не знаю, как ввести с клавиатуры знак(неравно).
s=0, понятно. А если не равно - как записать? Я тоже не виртуоз, помоги)))
Не равно записывается как !=
В данном случае подойдёт
C++
1
if (s == 0){ лежат на одной прямой } else { вычисление площади и периметра }
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 15:23     найти площадь и периметр треугольника #10
C++
1
2
3
4
5
6
7
8
9
10
11
.....
 if (s == 0)
cout<<"лежат на одной прямой";
[B]else[/B]
{
s = fabs((x2-x1)*(y3-y1) - (x3-x1)*(y2-y1))/2.0;
}
cout << s;
getch();
   return 0;
}
теперь борланд ругается на строку else
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
24.10.2011, 15:24     найти площадь и периметр треугольника #11
cout<<"лежат на одной прямой";
А зачем в else повторно вычислять s ?
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 15:31     найти площадь и периметр треугольника #12
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
#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
int main()
{
double x1, x2, x3, y1, y2, y3, s;
cout << "x1 = ";
cin >> x1;
cout << "y1 = ";
cin >> y1;
cout << "x2 = ";
cin >> x2;
cout << "y2 = ";
cin >> y2;
cout << "x3 = ";
cin >> x3;
cout << "y3 = ";
cin >> y3;
 s = fabs((x2-x1)*(y3-y1) - (x3-x1)*(y2-y1))/2.0;
 if (s == 0)
cout<<"лежат на одной прямой";
else
cout << s;
getch();
   return 0;
}
теперь всё работает, вот только в борланде версии вместо сообщения: лежат на одной прямой выводятся какие-то крякозябры(
Причём что в борланде, то же и в визуале. Что бы это могло быть?
Inlight
42 / 41 / 2
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 15:45     найти площадь и периметр треугольника #13
Цитата Сообщение от Revol'veR Посмотреть сообщение
теперь всё работает, вот только в борланде версии вместо сообщения: лежат на одной прямой выводятся какие-то крякозябры(
Причём что в борланде, то же и в визуале. Что бы это могло быть?
Проблема вывода русских букв в консоли из-за кодировки. Попробуй добавить сразу после int main() {
C++
1
setlocale(LC_ALL,".1251");
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 15:53     найти площадь и периметр треугольника #14
Цитата Сообщение от Inlight Посмотреть сообщение
setlocale(LC_ALL,".1251");
В Борланде 6 - игнор, а в Визуал Студио 2008 - помогло)))
[IMG]http://s017.***********/i428/1110/af/2722b34a7b75.jpg[/IMG]
Inlight
42 / 41 / 2
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 16:01     найти площадь и периметр треугольника #15
Немного дополнил:
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
#include <iostream>
#include<math.h>
using namespace std;
int main() {
    double x1, x2, x3, y1, y2, y3, s;
    cout << "x1 = ";
    cin >> x1;
    cout << "y1 = ";
    cin >> y1;
    cout << "x2 = ";
    cin >> x2;
    cout << "y2 = ";
    cin >> y2;
    cout << "x3 = ";
    cin >> x3;
    cout << "y3 = ";
    cin >> y3;
    s = fabs((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2.0;
    if (s == 0) {
        cout << "Точки лежат на одной прямой";
    } else {
        cout << "Точки не лежат на одной прямой." << endl;
        cout << "Площадь S = " << s << endl;
        cout << "Периметр треугольника P = " << sqrt(pow(x2-x1,2)+pow(y2-y1,2)) + sqrt(pow(x3-x1,2)+pow(y3-y1,2)) + sqrt(pow(x3-x2,2)+pow(y3-y2,2));
    }
    getch();
    return 0;
}
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 16:03     найти площадь и периметр треугольника #16
Inlight, Вроде вдвоём помогаем автору темы, а я уже себя чувствую как на допросе))))))
Inlight
42 / 41 / 2
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 16:22     найти площадь и периметр треугольника #17
Цитата Сообщение от Revol'veR Посмотреть сообщение
Inlight, Вроде вдвоём помогаем автору темы, а я уже себя чувствую как на допросе))))))
Моя помощь автору ограничилась необходимыми ссылками во втором посте, всё остальное - спэшил фо ю Гораздо интереснее помогать человеку, который пытается разобраться, а не выкидывает задание и ждёт, что за него напишут.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2011, 16:27     найти площадь и периметр треугольника
Еще ссылки по теме:

Найти площадь и периметр треугольника, если точки принадлежат определённой области C++
C++ Вычислить периметр и площадь треугольника
C++ Периметр и площадь прямоугольного треугольника

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

Или воспользуйтесь поиском по форуму:
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 16:27     найти площадь и периметр треугольника #18
Цитата Сообщение от Inlight Посмотреть сообщение
Гораздо интереснее помогать человеку, который пытается разобраться, а не выкидывает задание и ждёт, что за него напишут.
Вот здесь мне и понравилось)))) Словно темка была моя))))
Yandex
Объявления
24.10.2011, 16:27     найти площадь и периметр треугольника
Ответ Создать тему
Опции темы

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