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

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

Восстановить пароль Регистрация
 
Greysis
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 23
05.06.2016, 15:02     Площадь треугольника #1
Нужно вычислить площадь n-треугольников по координатам вершин и найти максимальную из них.Вычислить вроде получается,а вот с выделение максимума возникли проблемы.
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
bool check2(double a, double b, double c) {
    bool positive = (a > 0) && (b > 0) && (c >0);
    if (positive) {
        bool abc = (a + b) > c;
        bool bca = (b + c) > a;
        bool acb = (a + c) > b;
        return abc && bca && acb;
    }
    return false;
}
 
void plos(int n){
double x1, y1, x2, y2, x3, y3, P, r, S, AB, BC, AC;
    cout << "Введите значения всех x, y:\n";
    cout << "x1="; cin >> x1;
    cout << "y1="; cin >> y1;
    cout << "x2="; cin >> x2;
    cout << "y2="; cin >> y2;
    cout << "x3="; cin >> x3;
    cout << "y3="; cin >> y3;
    AB = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
    BC = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
    AC = sqrt(pow(x3 - x1, 2) + pow(y3 - y1, 2));
    if(check2(AB,BC,AC)){
    P  = AB + BC + AC;
    r  = P / 2.0;
    S  = sqrt(r * ( r - AB) * (r - BC ) * (r - AC));
    cout << "S = " << S << '\n';}else cout<<"Треугольник не существует!";
    
{MAX}
    
        cout<<"\nMax: "<<max<<endl;}
 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
setlocale(0,"rus"); 
cout<<"Введите кол-во треугольников:\t"<<endl;
int n,i;
cin>>n;
for(i=0;i<n;i++){
    plos(n);}
 
    _getch(); 
return 0; 
}
{MAX}в этом месте я пытался сделать выделение максимума,может кто подскажет,как это будет правильно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2016, 15:02     Площадь треугольника
Посмотрите здесь:

C++ Площадь треугольника!
площадь треугольника C++
C++ Площадь треугольника
C++ Площадь треугольника
C++ Площадь треугольника
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nworm
54 / 54 / 17
Регистрация: 13.07.2009
Сообщений: 180
05.06.2016, 15:35     Площадь треугольника #2
{MAX} лучше не считать внутри функции подсчёта площади. В _tmain лучше считать.

Можно сформировать в _tmain массив, элементы которого - площади всех треугольников.
А потом найти максимальный элемент массива.

Или можно посчитать площадь первого треугольника. Объявить её максимальной.
Затем в цикле считать площадь очередного треугольника и сравнивать с максимальной.
При необходимости меняя максимум
Greysis
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 23
05.06.2016, 16:05  [ТС]     Площадь треугольника #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
for(i=0;i<n;i++){
    cout << "Введите значения всех x, y:\n";
    cout << "x1="; cin >> x1;
    cout << "y1="; cin >> y1;
    cout << "x2="; cin >> x2;
    cout << "y2="; cin >> y2;
    cout << "x3="; cin >> x3;
    cout << "y3="; cin >> y3;
    AB = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
    BC = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
    AC = sqrt(pow(x3 - x1, 2) + pow(y3 - y1, 2));
    if(check2(AB,BC,AC)){
    P  = AB + BC + AC;
    r  = P / 2.0;
    S  = sqrt(r * ( r - AB) * (r - BC ) * (r - AC));
    cout << "S = " << S << '\n';}else cout<<"Треугольник не существует!";
 
    int i;
    double a[100];
    for(i=0;i<n;i++){
    a[i]=S;}
    double max=a[0];
        for(i=0;i<n;i++){
    if (a[i] > max) {
            max = a[i];}
    
        }cout<<"\nMax: "<<max<<endl;}
но он каждый раз выводит максимум,т.е. саму площадь,а если вывести вывод максимума за цикл,то он почему-то не распознает переменную max

Добавлено через 18 минут
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
cout<<"Введите кол-во треугольников:\t"<<endl;
int n,i;double x1, y1, x2, y2, x3, y3, P, r, S, AB, BC, AC; double a[100];
cin>>n;
for(i=0;i<n;i++){
    cout << "Введите значения всех x, y:\n";
    cout << "x1="; cin >> x1;
    cout << "y1="; cin >> y1;
    cout << "x2="; cin >> x2;
    cout << "y2="; cin >> y2;
    cout << "x3="; cin >> x3;
    cout << "y3="; cin >> y3;
    AB = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
    BC = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
    AC = sqrt(pow(x3 - x1, 2) + pow(y3 - y1, 2));
    if(check2(AB,BC,AC)){
    P  = AB + BC + AC;
    r  = P / 2.0;
    S  = sqrt(r * ( r - AB) * (r - BC ) * (r - AC));
    cout << "S = " << S << '\n';}else cout<<"Треугольник не существует!";
        }
    for(i=0;i<n;i++)
    a[i]=S;
 
double max=a[0];
        for(i=0;i<n;i++)
    if (a[i] > max) {
            max = a[i];}
    cout<<"\nMax: "<<max<<endl;
вот так он выводит максимум...но почему-то не совсем максимум,а последнее значение площади треугольника,кто может подправить?
nworm
54 / 54 / 17
Регистрация: 13.07.2009
Сообщений: 180
05.06.2016, 19:54     Площадь треугольника #4
Цитата Сообщение от Greysis Посмотреть сообщение
ну я вот пытался создавать массив
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
for(i=0;i<n;i++){
    cout << "Введите значения всех x, y:\n";
    cout << "x1="; cin >> x1;
    cout << "y1="; cin >> y1;
    cout << "x2="; cin >> x2;
    cout << "y2="; cin >> y2;
    cout << "x3="; cin >> x3;
    cout << "y3="; cin >> y3;
    AB = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
    BC = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
    AC = sqrt(pow(x3 - x1, 2) + pow(y3 - y1, 2));
    if(check2(AB,BC,AC)){
    P  = AB + BC + AC;
    r  = P / 2.0;
    S  = sqrt(r * ( r - AB) * (r - BC ) * (r - AC));
    cout << "S = " << S << '\n';}else cout<<"Треугольник не существует!";
 
    int i;
    double a[100];
    for(i=0;i<n;i++){
    a[i]=S;}
    double max=a[0];
        for(i=0;i<n;i++){
    if (a[i] > max) {
            max = a[i];}
    
        }cout<<"\nMax: "<<max<<endl;}
Вот здесь
C++
1
2
for(i=0;i<n;i++){
a[i]=S;}
В массив всё время загоняется одно и то же значение площади.

И во второй программе тоже.

Ещё есть такая штука как пошаговая отладка.
Можно использовать её.
Так можно смотреть за всеми значениями переменных.
Yandex
Объявления
05.06.2016, 19:54     Площадь треугольника
Ответ Создать тему
Опции темы

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