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

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

24.10.2011, 12:43. Показов 8558. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Условие такое:

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

Заранее благодарю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2011, 12:43
Ответы с готовыми решениями:

Найти периметр и площадь треугольника
в C ++. 10. Треугольник задан координатами (x1, y1), (x2, y2), (x3, y3) своих вершин. Найти...

Найти периметр и площадь заданного треугольника
Нам дали задание сделать 1) периметр треугольника с точками(x1,y1)(x2,y2)(x3,y3) 2)найти площадь...

Найти периметр, площадь и высоту треугольника
1: Дано сторону равностороннего треугольника A. Найти его периметр P и площадь S и высоту H

Найти периметр и площадь треугольника, заданного координатами вершин
Треугольник задан координатами (x1, y1), (x2, y2), (x3, y3) своих вершин. Найти периметр и площадь...

17
50 / 49 / 15
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 13:49 2
Условие, при котором три точки лежат на одной прямой можешь найти здесь. Если оно выполняется, значит точки лежат на одной прямой, иначе - вычисляешь площадь через 3 точки по 8-й формуле и периметр как сумму расстояний между двумя точками по формулам отсюда
0
23 / 23 / 4
Регистрация: 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() точка с запятой не нужна.
Добавлена команда паузы, а то окно быстро пропадает)))
0
50 / 49 / 15
Регистрация: 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;
}
Это не проверка, а просто вычисление площади треугольника. А вот если она равна нулю..
0
23 / 23 / 4
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 14:47 5
Цитата Сообщение от Inlight Посмотреть сообщение
Это не проверка, а просто вычисление площади треугольника. А вот если она равна нулю..
Значит точки находятся на одной прямой. Погуглите теорему.
0
50 / 49 / 15
Регистрация: 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;
Вы её находите и просто выводите в консоль.
0
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
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;
0
23 / 23 / 4
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 15:05 8
Inlight, Пусть автор темы хоть немножко пошевелит мозгами. И так уже всё решено. А вставить оператор if - это несложно. Просто я не знаю, как ввести с клавиатуры знак(неравно).
s=0, понятно. А если не равно - как записать? Я тоже не виртуоз, помоги)))
0
50 / 49 / 15
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 15:10 9
Цитата Сообщение от Revol'veR Посмотреть сообщение
Inlight, Пусть автор темы хоть немножко пошевелит мозгами. И так уже всё решено. А вставить оператор if - это несложно. Просто я не знаю, как ввести с клавиатуры знак(неравно).
s=0, понятно. А если не равно - как записать? Я тоже не виртуоз, помоги)))
Не равно записывается как !=
В данном случае подойдёт
C++
1
if (s == 0){ лежат на одной прямой } else { вычисление площади и периметра }
0
23 / 23 / 4
Регистрация: 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
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
24.10.2011, 15:24 11
cout<<"лежат на одной прямой";
А зачем в else повторно вычислять s ?
0
23 / 23 / 4
Регистрация: 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;
}
теперь всё работает, вот только в борланде версии вместо сообщения: лежат на одной прямой выводятся какие-то крякозябры(
Причём что в борланде, то же и в визуале. Что бы это могло быть?
1
50 / 49 / 15
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 15:45 13
Цитата Сообщение от Revol'veR Посмотреть сообщение
теперь всё работает, вот только в борланде версии вместо сообщения: лежат на одной прямой выводятся какие-то крякозябры(
Причём что в борланде, то же и в визуале. Что бы это могло быть?
Проблема вывода русских букв в консоли из-за кодировки. Попробуй добавить сразу после int main() {
C++
1
setlocale(LC_ALL,".1251");
0
23 / 23 / 4
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 15:53 14
Цитата Сообщение от Inlight Посмотреть сообщение
setlocale(LC_ALL,".1251");
В Борланде 6 - игнор, а в Визуал Студио 2008 - помогло)))
0
50 / 49 / 15
Регистрация: 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;
}
1
23 / 23 / 4
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 16:03 16
Inlight, Вроде вдвоём помогаем автору темы, а я уже себя чувствую как на допросе))))))
0
50 / 49 / 15
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 16:22 17
Цитата Сообщение от Revol'veR Посмотреть сообщение
Inlight, Вроде вдвоём помогаем автору темы, а я уже себя чувствую как на допросе))))))
Моя помощь автору ограничилась необходимыми ссылками во втором посте, всё остальное - спэшил фо ю Гораздо интереснее помогать человеку, который пытается разобраться, а не выкидывает задание и ждёт, что за него напишут.
1
23 / 23 / 4
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 16:27 18
Цитата Сообщение от Inlight Посмотреть сообщение
Гораздо интереснее помогать человеку, который пытается разобраться, а не выкидывает задание и ждёт, что за него напишут.
Вот здесь мне и понравилось)))) Словно темка была моя))))
0
24.10.2011, 16:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2011, 16:27
Помогаю со студенческими работами здесь

Найти площадь равностороннего треугольника, зная его периметр
Написать программу, которая подсчитывает: площадь равностороннего треугольника, периметр которого...

По координатам трех вершин треугольника найти его периметр и площадь
1) Даны координаты трех вершин треугольника (x1, y1), (x2, y2), (x3, y3). Найти его периметр и...

Зная длины катетов, найти периметр и площадь прямоугольного треугольника
Найти периметр и площадь прямоугольного треугольника , если даны длины его катетов а и б.

По длинам катетов прямоугольного треугольника найти его периметр и площадь
Даны длины катетов прямоугольного треугольника. Найти его периметр и площадь. При выводе округлить...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru