Salve a tutti, apro questo post perchè sono alle prime armi ancora e ho bisogno di aiuto da qualcuno più esperto, so già che dal titolo viene da ridere per il post che sto aprendo. Comunque come da titolo apro questo thread perchè ho "creato" un programmino che risolve equazioni di secondo grado. Mi è stato chiesto anche di fare in modo che venga disegnata la rispettiva parabola. Non avendo mai usato con la scuola i comandi di disegno con c# (questo è il primo anno di programmazione) sono andato su youtube per vedere se trovavo qualcosa. Ho trovato, però mi disegna solo la parabola verso l'alto, nel caso in cui la a (dell'equzione) fosse negativa la parabola dovrebbe essere rivolta verso il basso. Io provo manualmente ad impostare la "a" a -1, mi disegna la parabola verso il basso, però dopo si blocca e mi da un errore: "Eccezione non gestita di tipo 'System.OverflowException' in System.Drawing.dll" "assicurarsi che non si stia dividendo per zero". E' una banalità per voi però io non riesco a capire come posso fare, grazie a chi mi aiuta.
public FormParabola()
{
InitializeComponent();
}
private void btnDisegna_Click(object sender, EventArgs e)
{
int a = -1;
int b = 2;
int c = 3;
int ox = panel1.Width / 2;
int oy = panel1.Height / 2;
double x, y;
Bitmap penna = new Bitmap(1, 1);
penna.SetPixel(0, 0, Color.Green);
System.Drawing.Graphics dove = panel1.CreateGraphics();
for (double i = 0; i <= 100000; i += 0.1)
{
x = i;
// y = Math.Sqrt(Math.Pow(b, 2) - (4 * a * c));
y = (a * (x * x) + (b * x) + c);
dove.DrawImageUnscaled(penna, ox - (int)x, oy - (int)y);
dove.DrawImageUnscaled(penna, ox + (int)x, oy - (int)y);
/* if (a < 0)
{
a = -1;
dove.DrawImageUnscaled(penna, ox - (int)x, oy + (int)y);
dove.DrawImageUnscaled(penna, ox - (int)x, oy - (int)y);
}
*/
Come potrete notare ci sono anche sciocchi tentativi miei di risolvere il problema invani. Grazie ancora per la pazienza e l'attenzione