C/C++
Массив C++, как решить?
Среди N треугольников с заданными сторонами подсчитать количество прямоугольных, среди которых определить треугольник с наибольшей площадью.
#include <iostream>
#include <cmath>
using namespace std;
bool possible(double a, double b, double c)
{
return (a > 0 && b > 0 && c > 0 && a + c > b
&& a + b > c && b + c > a) ? true : false;
}
bool right(double a, double b, double c)
{
double aa = a * a, bb = b * b, cc = c*c;
return (aa == bb + cc || bb == aa + cc ||
cc == aa + bb) ? true : false;
}
int main()
{
int i, j, k = 0, maxi, N;
double p, s, max = 0;
cout << "N » ";
cin >> N;
double t[N][3];
for (i = 0; i < N; i++)
{
for (j = 0; j < 3; j++)
cin >> t[i][j];
if (possible(t[i][0], t[i][1], t[i][2]))
if (right(t[i][0], t[i][1], t[i][2]))
{
++k;
p = (t[i][0] + t[i][1] + t[i][2]) / 2;
s = p * (p - t[i][0]) * (p - t[i][1]) * (p - t[i][2]);
if (s > max)
{
max = s;
maxi = i;
}
}
}
if (k) cout << k << " right triangle(s)\n" << "triangle "
<< maxi + 1<< '(' << t[maxi][0] << ',' << t[maxi][1] << ','
<< t[maxi][2] << ") has area " << sqrt(max) << endl;
else cout << "no right triangles" << endl;
system("pause > nul");
return 0;
}
#include <cmath>
using namespace std;
bool possible(double a, double b, double c)
{
return (a > 0 && b > 0 && c > 0 && a + c > b
&& a + b > c && b + c > a) ? true : false;
}
bool right(double a, double b, double c)
{
double aa = a * a, bb = b * b, cc = c*c;
return (aa == bb + cc || bb == aa + cc ||
cc == aa + bb) ? true : false;
}
int main()
{
int i, j, k = 0, maxi, N;
double p, s, max = 0;
cout << "N » ";
cin >> N;
double t[N][3];
for (i = 0; i < N; i++)
{
for (j = 0; j < 3; j++)
cin >> t[i][j];
if (possible(t[i][0], t[i][1], t[i][2]))
if (right(t[i][0], t[i][1], t[i][2]))
{
++k;
p = (t[i][0] + t[i][1] + t[i][2]) / 2;
s = p * (p - t[i][0]) * (p - t[i][1]) * (p - t[i][2]);
if (s > max)
{
max = s;
maxi = i;
}
}
}
if (k) cout << k << " right triangle(s)\n" << "triangle "
<< maxi + 1<< '(' << t[maxi][0] << ',' << t[maxi][1] << ','
<< t[maxi][2] << ") has area " << sqrt(max) << endl;
else cout << "no right triangles" << endl;
system("pause > nul");
return 0;
}
начни с главного... создай массив этих треугольников...
Как хочешь
Да, массив, затем в цикле выполнять одну и ту же операцию и сравнивать, синус - косинус, наверное. Если ноль и 1, перемножать катеты и сравнивать с ранее найденным значением.
Похожие вопросы
- Задача на c++ помогите решить без рандомного заполнения массива
- Помощь с Массивами C++
- Задание массивы c++
- Помогите дописать код с массивом C++
- Помогите дописать код с массивом c++
- Двумерные массивы C++, ничего не понимаю((( Нужна помощь
- Объясните мне разное поведение sizeof для статической константы и динамического массива. C.
- Массивы c++, нужно написать программу
- Программирование алгоритмов с использованием двумерных массивов c++
- Каким образом можно удалить элементы из динамического массива C++(без использования вспомогательного массива)