История изменений
Исправление soomrack, (текущая версия) :
Код должен быть максимально простым, так проще недопускать ошибок.
Поэтому даже в мелочах лучше следовать правилам хорошего тона, называть переменные по смыслу, создавать отдельные функции при переходе к другим уровням абстракции, ну и не использоваться шаблоны, когда они не нужны.
Я бы написал так (проверку на неположительные значения я не сделал, т.к. в условии сказано, что значения положительны).
#include <iostream>
static void undefined() {
std::cout << "UNDEFINED" << std::endl;
}
static void yes() {
std::cout << "YES" << std::endl;
}
static void no() {
std::cout << "NO" << std::endl;
}
void right_triangle_test() {
int32_t length[3];
for(int edge = 0; edge < 3; edge++) {
std::cin >> length[edge];
}
if(length[0] >= length[1] + length[2]) return undefined();
if(length[1] >= length[0] + length[2]) return undefined();
if(length[2] >= length[0] + length[1]) return undefined();
int32_t square[3];
for(int edge = 0; edge < 3; edge++) {
square[edge] = length[edge] * length[edge];
}
if(square[0] == square[1] + square[2]) return yes();
if(square[1] == square[0] + square[2]) return yes();
if(square[2] == square[0] + square[1]) return yes();
return no();
}
int main() {
right_triangle_test();
return 0;
}
Исправление soomrack, :
Код должен быть максимально простым, так проще недопускать ошибок.
Поэтому даже в мелочах лучше следовать правилам хорошего тона, называть переменные по смыслу, создавать отдельные функции при переходе к другим уровням абстракции, ну и не использоваться шаблоны, когда они не нужны.
Я бы написал так (проверку на неположительные значения я не сделал, т.к. в условии сказано, что значения положительны).
#include <iostream>
static void undefined() {
std::cout << "UNDEFINED" << std::endl;
}
static void yes() {
std::cout << "YES" << std::endl;
}
static void no() {
std::cout << "NO" << std::endl;
}
void right_triangle_test() {
int32_t length[3];
for(int edge = 0; edge < 3; edge++) {
std::cin >> length[edge];
}
if(length[0] > length[1] + length[2]) return undefined();
if(length[1] > length[0] + length[2]) return undefined();
if(length[2] > length[0] + length[1]) return undefined();
int32_t square[3];
for(int edge = 0; edge < 3; edge++) {
square[edge] = length[edge] * length[edge];
}
if(square[0] == square[1] + square[2]) return yes();
if(square[1] == square[0] + square[2]) return yes();
if(square[2] == square[0] + square[1]) return yes();
return no();
}
int main() {
right_triangle_test();
return 0;
}
Исходная версия soomrack, :
Код должен быть максимально простым, так проще недопускать ошибок.
Поэтому даже в мелочах лучше следовать правилам хорошего тона, называть переменные по смыслу, создавать отдельные функции при переходе к другим уровням абстракции, ну и не использоваться шаблоны, когда они не нужны.
Я бы написал так (проверку на неположительные значения я не сделал, т.к. в условии сказано, что значения положительны).
#include <iostream>
static void undefined() {
std::cout << "UNDEFINED" << std::endl;
}
static void yes() {
std::cout << "YES" << std::endl;
}
static void no() {
std::cout << "NO" << std::endl;
}
void right_triangle_test() {
int32_t length[3];
for(int edge = 0; edge < 3; edge++) {
std::cin >> length[edge];
}
if(length[0] > length[1] + length[2]) return undefined();
if(length[1] > length[0] + length[2]) return undefined();
if(length[2] > length[0] + length[1]) return undefined();
int32_t square[3];
for(int edge = 0; edge < 3; edge++) {
square[edge] *= square[edge];
}
if(square[0] == square[1] + square[2]) return yes();
if(square[1] == square[0] + square[2]) return yes();
if(square[2] == square[0] + square[1]) return yes();
return no();
}
int main() {
right_triangle_test();
return 0;
}