using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
AboutBox1 AB
= new AboutBox1
();
ArrayList CoeffDividendo
= new ArrayList
();
ArrayList CoeffRis
= new ArrayList
();
ArrayList GradoCoeffRis
= new ArrayList
();
ArrayList GradoCoeffIniziali
= new ArrayList
();
int resto;
int numeroCoeffModificato = 0;
int numeroCoeffReale = 0;
int gradoRis=0;
int g=0;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
CoeffDividendo.Add(textBox1.Text);
textBox1.Text = "";
numeroCoeffModificato++;
numeroCoeffReale++;
}
void RisolviPolinomio4Coefficienti()
{
//Non viene utilizzato dal programma
int termineNotoDivisore = Convert.ToInt32(numericUpDown1.Value);
int ris;
CoeffRis.Add(CoeffDividendo[0]);
//1°Coeff
listBox1.Items.Add(Convert.ToInt32(CoeffDividendo[0]));
ris=Convert.ToInt32(CoeffRis[0]) * termineNotoDivisore;
CoeffRis.Add(ris+Convert.ToInt32(CoeffDividendo[1]));
//2°Coeff
listBox1.Items.Add(ris+Convert.ToInt32(CoeffDividendo[1]));
ris = Convert.ToInt32(CoeffRis[1]) * termineNotoDivisore;
CoeffRis.Add(ris + Convert.ToInt32(CoeffDividendo[2]));
//3° Coeff
listBox1.Items.Add(ris + Convert.ToInt32(CoeffDividendo[2]));
ris = Convert.ToInt32(CoeffRis[2]) * termineNotoDivisore;
resto = Convert.ToInt32(CoeffDividendo[3]) + ris;
//Resto
label1.Text = resto.ToString();
}
void RisolviPolinomioXCoefficienti()
{
double datEnd;
double datStart;
int ss, se;
datStart = DateTime.Now.Millisecond;
ss = DateTime.Now.Second;
#region Algoritmo di divisione
int conto = 2;
int termineNotoDivisore = Convert.ToInt32(numericUpDown1.Value);
int ris;
int numeroCoeff = 3;
//Calcola il 1°coeff
CoeffRis.Add(Convert.ToInt32(CoeffDividendo[0]));
listBox1.Items.Add(Convert.ToInt32(CoeffDividendo[0]));
listBox4.Items.Add("Calcolo coefficiente N° 1...");
listBox4.Items.Add("Coefficiente N° 1 trovato: " + Convert.ToInt32(CoeffDividendo[0]));
listBox4.Items.Add(" ");
//Calcola il 2°coeff
ris = Convert.ToInt32(CoeffDividendo[0]) * termineNotoDivisore;
CoeffRis.Add(ris + Convert.ToInt32(CoeffDividendo[1]));
listBox1.Items.Add(ris + Convert.ToInt32(CoeffDividendo[1]));
listBox4.Items.Add("Calcolo coefficiente N° 2...");
listBox4.Items.Add("| " + Convert.ToInt32(CoeffDividendo[0]) + " x " + termineNotoDivisore + " = " + ris);
listBox4.Items.Add("| " + ris + " + " + Convert.ToInt32(CoeffDividendo[1]) + " = " + Convert.ToInt32(CoeffRis[1]));
listBox4.Items.Add("Coefficiente N° 2 trovato: " + Convert.ToInt32(CoeffRis[1]));
listBox4.Items.Add(" ");
numeroCoeffModificato--;
//calcola i restanti
for (int i = 1; i < numeroCoeffModificato; i++)
{
ris = Convert.ToInt32(CoeffRis[i]) * termineNotoDivisore;
CoeffRis.Add(ris + Convert.ToInt32(CoeffDividendo[conto]));
listBox1.Items.Add(ris + Convert.ToInt32(CoeffDividendo[conto]));
listBox4.Items.Add("Calcolo del coefficiente N°: " + numeroCoeff + "...");
listBox4.Items.Add("| " + Convert.ToInt32(CoeffRis[i]) + " x " + termineNotoDivisore + " = " + ris);
listBox4.Items.Add("| " + ris + " + " + Convert.ToInt32(CoeffDividendo[conto]) + " = " + (ris + Convert.ToInt32(CoeffDividendo[conto])));
listBox4.Items.Add("Coeffciente N° " + numeroCoeff + " trovato: " + (ris + Convert.ToInt32(CoeffDividendo[conto])));
listBox4.Items.Add(" ");
conto++;
numeroCoeff++;
}
//calcola il grado
gradoRis = Convert.ToInt32(numericUpDown2.Value);
g = gradoRis;
while (g != 0)
{
g--;
listBox2.Items.Add(g);
GradoCoeffRis.Add(g);
}
//inserisce il grado immaginario del resto
GradoCoeffRis.Add(10000);
//stampa il risultato
for (int i = 0; i < numeroCoeffReale; i++)
{
if (Convert.ToInt32(GradoCoeffRis[i]) < 10000)
{
listBox3.Items.Add(CoeffRis[i] + "x" + GradoCoeffRis[i]);
if (Convert.ToInt32(CoeffRis[i]) < 0)
{
textBox3.AppendText(CoeffRis[i] + "x" + GradoCoeffRis[i] + " ");
}
else
{
textBox3.AppendText("+" + CoeffRis[i] + "x" + GradoCoeffRis[i] + " ");
}
}
else if (Convert.ToInt32(GradoCoeffRis[i]) == 10000)
{
listBox3.Items.Add("Resto: " + CoeffRis[i]);
textBox4.Text = "Resto: " + CoeffRis[i];
}
}
//Ricrea la divisione iniziale
//Scrive il dividendo
int k = Convert.ToInt32(numericUpDown2.Value);
GradoCoeffIniziali.Add(k);
while (k != 0)
{
k--;
GradoCoeffIniziali.Add(k);
}
textBox2.AppendText("(");
for (int i = 0; i < numeroCoeffReale; i++)
{
if (Convert.ToInt32(CoeffDividendo[i]) < 0)
{
textBox2.AppendText(" " + CoeffDividendo[i].ToString() + "x" + GradoCoeffIniziali[i].ToString());
}
else if(Convert.ToInt32(CoeffDividendo[i]) > 0)
{
textBox2.AppendText(" +" + CoeffDividendo[i].ToString() + "x" + GradoCoeffIniziali[i].ToString());
}
}
textBox2.AppendText(")");
//Scrivi il divisore
int CambioSegno = 0;
if (termineNotoDivisore < 0)
{
//Cambio divisore in +
CambioSegno = termineNotoDivisore * -1;
textBox2.AppendText(" / (x +" + CambioSegno + ")");
}
else if (termineNotoDivisore > 0)
{
//Cambio divisore in -
CambioSegno = termineNotoDivisore * -1;
textBox2.AppendText(" / (x " + CambioSegno + ")");
}
//Scrive il risultati nella lista del procedimento
listBox4.Items.Add("Espressione iniziale: ");
listBox4.Items.Add(textBox2.Text);
listBox4.Items.Add(" ");
listBox4.Items.Add("Risultato: ");
listBox4.Items.Add(textBox3.Text);
listBox4.Items.Add(textBox4.Text);
#endregion
se = DateTime.Now.Second;
datEnd = DateTime.Now.Millisecond;
label7.Text = Convert.ToString(ss - se) + " secondi" + " e " + Convert.ToString(datStart - datEnd) + " millisecondi";
}
private void button2_Click(object sender, EventArgs e)
{
RisolviPolinomioXCoefficienti();
}
private void button3_Click(object sender, EventArgs e)
{
numeroCoeffModificato = 0;
numeroCoeffReale = 0;
gradoRis = 0;
g = 0;
CoeffDividendo.Clear();
CoeffRis.Clear();
GradoCoeffRis.Clear();
listBox1.Items.Clear();
listBox2.Items.Clear();
listBox3.Items.Clear();
listBox4.Items.Clear();
numericUpDown1.Value = 0;
numericUpDown2.Value = 0;
textBox2.Text = "";
GradoCoeffIniziali.Clear();
textBox3.Text = "";
textBox4.Text = "";
}
private void button4_Click(object sender, EventArgs e)
{
saveFileDialog1.ShowDialog();
}
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
using (StreamWriter sv
= new StreamWriter
(saveFileDialog1.
FileName))
{
sv.WriteLine("Procedimento della divisione tra due polinomi...");
sv.WriteLine("Procedimento realizzato da Ruffini Rule un programma di Andrea Sessa");
sv.WriteLine(" ");
foreach (string x in listBox4.Items)
{
sv.WriteLine(x);
}
}
}
private void button5_Click(object sender, EventArgs e)
{
AB.ShowDialog();
}
}
}