84 lines
2.2 KiB
C++
84 lines
2.2 KiB
C++
#include <iostream>
|
|
#include <cmath>
|
|
|
|
using namespace std;
|
|
|
|
int main(void) {
|
|
|
|
// Coefficienti della parabola
|
|
float a = 1;
|
|
float b = 5;
|
|
float c = 4;
|
|
|
|
cout << "Equazione: " << a << "x^2 + " << b << "x + " << c << " = 0" << endl;
|
|
|
|
// Apertura della parabola
|
|
if (a > 0) {
|
|
cout << "Parabola rivolta verso l'alto." << endl;
|
|
} else if (a < 0) {
|
|
cout << "Parabola rivolta verso il basso." << endl;
|
|
} else {
|
|
cout << "Errore." << endl;
|
|
return 0;
|
|
}
|
|
|
|
// Calcolo del discriminante
|
|
float delta = (b * b) - (4 * a * c);
|
|
cout << "Delta: " << delta << endl;
|
|
|
|
if (delta > 0) {
|
|
float x1 = ((-b) - (sqrt(delta))) / (2 * a);
|
|
float x2 = ((-b) + (sqrt(delta))) / (2 * a);
|
|
cout << "S = {x1 = " << x1 << " V " << "x2 = " << x2 << "}" << endl;
|
|
} else if (delta == 0) {
|
|
float x0 = (-b) / (2 * a);
|
|
cout << "S = {x = " << x0 << "}" << endl;
|
|
} else {
|
|
cout << "Soluzioni troppo complesse per ora." << endl;
|
|
return 0;
|
|
}
|
|
|
|
// Calcolo del vertice
|
|
float xVertice = (-b) / (2 * a);
|
|
float yVertice = (a * xVertice * xVertice) + (b * xVertice) + c;
|
|
cout << "V(" << xVertice << "; " << yVertice << ")" << endl;
|
|
|
|
// Calcolo del parametro focale
|
|
float parametroFocale = (1) / (4 * a);
|
|
|
|
// Calcolo del fuoco
|
|
float xFuoco = xVertice;
|
|
float yFuoco = yVertice + parametroFocale;
|
|
cout << "F(" << xFuoco << "; " << yFuoco << ")" << endl;
|
|
|
|
// Calcolo della direttrice
|
|
float direttrice = yVertice - parametroFocale;
|
|
cout << "d: y = " << direttrice << endl;
|
|
|
|
// Asse di simmetria
|
|
cout << "s: x = " << xVertice << endl;
|
|
|
|
// Disegnamo il grafico (solo se le soluzioni sono numeri interi)
|
|
const int width = 20;
|
|
const int height = 10;
|
|
|
|
for (int y = height; y >= -height; --y) {
|
|
for (int x = -width; x <= width; ++x) {
|
|
float fx = (a * x * x) + (b * x) + c;
|
|
if (round(fx) == y) {
|
|
cout << "*";
|
|
} else if (y == 0 && x == 0) {
|
|
cout << "+";
|
|
} else if (y == 0) {
|
|
cout << "-";
|
|
} else if (x == 0) {
|
|
cout << "|";
|
|
} else {
|
|
cout << " ";
|
|
}
|
|
}
|
|
cout << endl;
|
|
}
|
|
|
|
return 0;
|
|
} |