0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 10
1

Если возможно построить прямоугольный треугольник с заданными сторонами, вывести площадь, если нет - периметр

20.06.2017, 16:58. Показов 1426. Ответов 17
Метки нет (Все метки)

Даны 3 стороны: a, b и с - натуральные. Если можно построить прямоугольный треугольник с этими сторонами, то вывести площадь этого треугольник, если нет - сумму сторон.
Я вроде сделал рабочий код, но не проходить 3 теста из 20:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int a, b, c;
    fin >> a >> b >> c;
    double s = 0;
    if (a*a == b*b + c*c || b*b == a*a + c*c || c*c == a*a + b*b)
    {
        double p = (a + b + c) / 2.0;
        s = sqrt(p*(p - a)*(p - b)*(p - c));
    }
    else
    {
        s = a + b + c;
    }
    fout << s;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2017, 16:58
Ответы с готовыми решениями:

Определить, существует ли прямоугольный треугольник со сторонами x,y,z. Если – да, вычислить его площадь.
Определить, существует ли прямоугольный треугольник со сторонами x,y,z. Если – да, вычислить его...

Если треугольник со сторонами a, b, с является равнобедренным, найти его площадь, в противном случае – периметр.
1)Если треугольник со сторонами a, b, с является равнобедренным, найти его площадь, в противном...

Даны три числа. Существует ли треугольник со данными сторонами, если существует, то найти его периметр и площадь
Даны три числа. Определить, существует ли треугольник со сторонами длиной a, b, c и, если...

Если можно построить треугольник по данным трем отрезкам, то вычислить его периметр и площадь
в Visual Basic Ветвления 2.Даны длины трех отрезков a, b, c. Если можно построить треугольник...

17
7 / 7 / 10
Регистрация: 22.12.2016
Сообщений: 105
20.06.2017, 17:20 2
polcraz, попробуй, только это при условии что С - гипотенуза.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int a, b, c;
    fin >> a >> b >> c;
    if(c*c == a*a + b*b)
    {
        int s = a*b/2;
        cout << " S = " << s;
    }
    else
    {
        int p = a+b+c;
        cout << "сумма сторон = " << p;
    }
}
а оно читает
0
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 10
20.06.2017, 17:48  [ТС] 3
Я наверное просто что-то не понимаю, вот условие: https://drive.google.com/open?... 1dkN1ptc3c
0
10 / 8 / 6
Регистрация: 14.05.2017
Сообщений: 58
20.06.2017, 17:58 4
polcraz, в конце программы добавьте строчки, закрывающие файлы.
C++
1
2
fin.close();
fout.close();
0
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 10
20.06.2017, 18:05  [ТС] 5
Добавил, ничего не поменялось (странно если бы заработало )
0
10 / 8 / 6
Регистрация: 14.05.2017
Сообщений: 58
20.06.2017, 19:38 6
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
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int a, b, c;
    fin >> a >> b >> c;
    double s = 0;
    
    if (a*a == b*b + c*c || b*b == a*a + c*c || c*c == a*a + b*b)
    {
        double p = (a + b + c) / 2.0;
        s = sqrt(p*(p - a)*(p - b)*(p - c));
        fout << s;
    }
    else
    {
        s = a + b + c;
        fout << s;
    }
    
}
0
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 10
20.06.2017, 19:50  [ТС] 7
Все равно 3 теста не проходит
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.06.2017, 19:58 8
del
0
10 / 8 / 6
Регистрация: 14.05.2017
Сообщений: 58
20.06.2017, 20:08 9
Тогда не знаю
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.06.2017, 20:16 10
Это значит, что не до конца прочитал задание и удалил сообщение. Но из школы помню, что площадь прямоугольного треугольника 1/2*a*b, где a и b катеты треугольника. Гипотенуза, соответственно самая большая сторона. Может найти ее сначала, а потом проверить равенство c*c == a*a + b*b, да и площадь потом по нормальному вычислить.
0
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 10
20.06.2017, 20:42  [ТС] 11
Даже с таким кодом не работает:
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
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int a, b, c;
    fin >> a >> b >> c;
    double s = 0;
    if (a*a == b*b + c*c || b*b == a*a + c*c || c*c == a*a + b*b)
    {
        if (a > b && a > c)
        {
            s = 1.0 / 2.0 * b * c;
            fout << s;
        }
        else if (b > c && b > a)
        {
            s = 1.0 / 2.0 * a * c;
            fout << s;
        }
        else if (c > a && c > b)
        {
            s = 1.0 / 2.0 * a * b;
            fout << s;
        }
    }
    else
    {
        s = a + b + c;
        fout << s;
    }
    fin.close();
    fout.close();
    return 0;
}
И на заметку: 1/2*a*b = (a*b)/2
0
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 10
20.06.2017, 20:49  [ТС] 12
Вот картинка к тестами, ОК - все хорошо, WA - wrong answer (неправильный ответ)
Миниатюры
Если возможно построить прямоугольный треугольник с заданными сторонами, вывести площадь, если нет - периметр  
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.06.2017, 20:57 13
13 строка на кой ляд.
1. Находим наибольший из a,b,c Например, наибольший с.
2. Тогда должно выполняться равенство c*c = a*a + b*b,
3. если оно выполняется считаем площадь,
4. если нет сумму.
Есть и другие признаки прямоугольного треугольника, которые, возможно, тоже стоит поюзать.
Цитата Сообщение от polcraz Посмотреть сообщение
И на заметку: 1/2*a*b = (a*b)/2
А за гениальность следующий раз по репе дам.
0
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 10
20.06.2017, 21:08  [ТС] 14
Меня это достало уже, что не пишу все равно те 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int a, b, c;
    fin >> a >> b >> c;
    double s = 0;
    int k1 = 0;
    int k2 = 0;
    int gp = 0;
    double res = 0;
    if (a > b && a > c)
    {
        gp = a;
        k1 = b;
        k2 = c;
    }
    else if (b > c && b > a)
    {
        gp = b;
        k1 = a;
        k2 = c;
    }
    else if (c > a && c > b)
    {
        gp = c;
        k1 = a;
        k2 = b;
    }
    if (gp*gp == k1*k1 + k2*k2) 
    {
        res = 1.0 / 2.0 * k1 * k2;
    }
    else
    {
        res = a + b + c;
    }
    fout << res;
    fin.close();
    fout.close();
    return 0;
}
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.06.2017, 21:26 15
polcraz, скиньте ссылку где эта шняга.
0
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 10
20.06.2017, 21:33  [ТС] 16
https://drive.google.com/open?... 1dkN1ptc3c
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.06.2017, 21:47 17
Тестировать где? С такими условиями в лет должно пролетать, может с переменными что не то.
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2017, 21:55 18
polcraz, картинки загружайте прямо на форум.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2017, 21:55
Помогаю со студенческими работами здесь

Если можно построить треугольник по трем данным отрезкам, то вычислить его периметр и площадь
Даны длины трех отрезков a, b, c. Если можно построить треугольник по этим трем отрезкам, то...

Если возможно построить тупоугольный треугольник - вычислить его площадь
Введите три числа. Если они могут быть длинами сторон разностороннего тупоугольного треугольника,...

Даны три положительных числа. Определить, можно ли построить треугольник со сторонами, длины которых равны этим числам. Если возможно, то ответить на
var a,b,c:real; begin write(a,b,c); readln; writeln('ââåäèòå ðàäèóñ òðèóãîëüíèêà') à+â&gt;c...

Если треугольник с заданными сторонами существует, то указать его тип
Даны действительные положительные числа x, y, z. a) Выяснить, существует ли треугольник с длинами...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru