Другие языки программирования и технологии

C++(консоль) Программа, которая выводит данные треугольников со стороной максимум 5000

Не работает (не выводит данные, а сразу предлагает выход из программы) :

// ближайшие 20 жизней вам будет чем заняться
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
struct triangle {
    double a;
    double b;
    double c;
    double s;
    double m[3];
    bool exists();
    void area();
    void median();
    void print();
    void _triangle(triangle);
};
void limit(const int);
int main() {
    system ("mode con cols=150 lines=50");
    limit(5000);
    cin.get();
    return 0;
}
void limit(const int lim) {
    triangle tr;
    for (int a = 1; a < lim; a++) {
        tr.a = a;
        for (int b = a; b < lim; b++) {
            tr.b = b;
            for (int c = b; c < lim; c++) {
                tr.c = c;
                if (tr.exists()) tr._triangle(tr);            
            }
        }
    }
}
bool triangle::exists() {
    bool x = true;
    double max = (a > b) ? (a > c) ? a : c : (b > c) ? b : c;
    if (a + b + c - max <= max) x = false;
    return x;
}
void triangle::area() {
    double p = (a + b + c) / 2;
    s = sqrt(p * (p - a) * (p - b) * (p - c));
}
void triangle::median() {
    m[0] = sqrt((2 * b * b + 2 * c * c - a * a) / 4);
    m[1] = sqrt((2 * c * c + 2 * a * a - b * b) / 4);
    m[2] = sqrt((2 * a * a + 2 * b * b - c * c) / 4);
}
void triangle::print() {
    static unsigned long long inc = 0;
    cout << fixed << setprecision(0) << ++inc << ". " << "a = " << a << "; b = " << b << "; c = " << c
         << fixed << setprecision(10) << "; ma = " << m[0] << "; mb = " << m[1] << "; mc = " << m[2] << "; s = " << s << endl;
    Sleep(5000);
}
void triangle::_triangle(triangle tr) {
    tr.area();
    tr.median();
    tr.print();
}
Сергей Блунов
Сергей Блунов
91 711
Лучший ответ
ну что тебе сказать.. . видимо, в if слетает. дебажь
Lasha Mikadze
Lasha Mikadze
38 447

Похожие вопросы