Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Ruffini Rule - Form1.cs

Form1.cs

Caricato da:
Scarica il programma completo

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Collections;
  9. using System.IO;
  10.  
  11.  
  12. namespace WindowsApplication1
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         AboutBox1 AB = new AboutBox1();
  17.  
  18.         ArrayList CoeffDividendo = new ArrayList();
  19.  
  20.         ArrayList CoeffRis = new ArrayList();
  21.  
  22.         ArrayList GradoCoeffRis = new ArrayList();
  23.  
  24.         ArrayList GradoCoeffIniziali = new ArrayList();
  25.  
  26.         int resto;
  27.         int numeroCoeffModificato = 0;
  28.         int numeroCoeffReale = 0;
  29.         int gradoRis=0;
  30.         int g=0;
  31.        
  32.         public Form1()
  33.         {
  34.             InitializeComponent();
  35.         }
  36.  
  37.         private void button1_Click(object sender, EventArgs e)
  38.         {
  39.             CoeffDividendo.Add(textBox1.Text);
  40.             textBox1.Text = "";
  41.             numeroCoeffModificato++;
  42.             numeroCoeffReale++;
  43.         }
  44.        
  45.         void RisolviPolinomio4Coefficienti()
  46.         {
  47.             //Non viene utilizzato dal programma
  48.             int termineNotoDivisore = Convert.ToInt32(numericUpDown1.Value);
  49.             int ris;
  50.             CoeffRis.Add(CoeffDividendo[0]);
  51.             //1°Coeff
  52.             listBox1.Items.Add(Convert.ToInt32(CoeffDividendo[0]));
  53.            
  54.             ris=Convert.ToInt32(CoeffRis[0]) * termineNotoDivisore;
  55.             CoeffRis.Add(ris+Convert.ToInt32(CoeffDividendo[1]));
  56.             //2°Coeff
  57.             listBox1.Items.Add(ris+Convert.ToInt32(CoeffDividendo[1]));
  58.  
  59.             ris = Convert.ToInt32(CoeffRis[1]) * termineNotoDivisore;
  60.             CoeffRis.Add(ris + Convert.ToInt32(CoeffDividendo[2]));
  61.             //3° Coeff
  62.             listBox1.Items.Add(ris + Convert.ToInt32(CoeffDividendo[2]));
  63.  
  64.             ris = Convert.ToInt32(CoeffRis[2]) * termineNotoDivisore;
  65.             resto = Convert.ToInt32(CoeffDividendo[3]) + ris;
  66.  
  67.             //Resto
  68.             label1.Text = resto.ToString();
  69.  
  70.          
  71.         }
  72.  
  73.         void RisolviPolinomioXCoefficienti()
  74.         {
  75.             double datEnd;
  76.             double datStart;
  77.             int ss, se;
  78.             datStart = DateTime.Now.Millisecond;
  79.             ss = DateTime.Now.Second;
  80.  
  81.             #region Algoritmo di divisione
  82.             int conto = 2;
  83.             int termineNotoDivisore = Convert.ToInt32(numericUpDown1.Value);
  84.             int ris;
  85.             int numeroCoeff = 3;
  86.  
  87.             //Calcola il 1°coeff
  88.             CoeffRis.Add(Convert.ToInt32(CoeffDividendo[0]));
  89.             listBox1.Items.Add(Convert.ToInt32(CoeffDividendo[0]));
  90.             listBox4.Items.Add("Calcolo coefficiente N° 1...");
  91.             listBox4.Items.Add("Coefficiente N° 1 trovato: " + Convert.ToInt32(CoeffDividendo[0]));
  92.             listBox4.Items.Add(" ");
  93.            
  94.  
  95.             //Calcola il 2°coeff
  96.             ris = Convert.ToInt32(CoeffDividendo[0]) * termineNotoDivisore;
  97.             CoeffRis.Add(ris + Convert.ToInt32(CoeffDividendo[1]));
  98.             listBox1.Items.Add(ris + Convert.ToInt32(CoeffDividendo[1]));
  99.             listBox4.Items.Add("Calcolo coefficiente N° 2...");
  100.             listBox4.Items.Add("|  " + Convert.ToInt32(CoeffDividendo[0]) + " x " + termineNotoDivisore + " = " + ris);
  101.             listBox4.Items.Add("|  " + ris + " + " + Convert.ToInt32(CoeffDividendo[1]) + " = " + Convert.ToInt32(CoeffRis[1]));
  102.             listBox4.Items.Add("Coefficiente N° 2 trovato: " + Convert.ToInt32(CoeffRis[1]));
  103.             listBox4.Items.Add(" ");
  104.            
  105.             numeroCoeffModificato--;
  106.  
  107.             //calcola i restanti
  108.             for (int i = 1; i < numeroCoeffModificato; i++)
  109.             {
  110.                 ris = Convert.ToInt32(CoeffRis[i]) * termineNotoDivisore;
  111.                 CoeffRis.Add(ris + Convert.ToInt32(CoeffDividendo[conto]));
  112.                 listBox1.Items.Add(ris + Convert.ToInt32(CoeffDividendo[conto]));
  113.                 listBox4.Items.Add("Calcolo del coefficiente N°: " + numeroCoeff + "...");
  114.                 listBox4.Items.Add("|  " + Convert.ToInt32(CoeffRis[i]) + " x " + termineNotoDivisore + " = " + ris);
  115.                 listBox4.Items.Add("|  " + ris + " + " + Convert.ToInt32(CoeffDividendo[conto]) + " = " + (ris + Convert.ToInt32(CoeffDividendo[conto])));        
  116.                 listBox4.Items.Add("Coeffciente N° " + numeroCoeff + " trovato: " + (ris + Convert.ToInt32(CoeffDividendo[conto])));
  117.                 listBox4.Items.Add(" ");
  118.                
  119.                 conto++;
  120.                 numeroCoeff++;
  121.             }
  122.  
  123.  
  124.             //calcola il grado
  125.             gradoRis = Convert.ToInt32(numericUpDown2.Value);
  126.             g = gradoRis;
  127.             while (g != 0)
  128.             {
  129.                 g--;
  130.                 listBox2.Items.Add(g);
  131.                 GradoCoeffRis.Add(g);
  132.             }
  133.  
  134.             //inserisce il grado immaginario del resto
  135.             GradoCoeffRis.Add(10000);
  136.  
  137.              
  138.             //stampa il risultato
  139.             for (int i = 0; i < numeroCoeffReale; i++)
  140.             {
  141.                 if (Convert.ToInt32(GradoCoeffRis[i]) < 10000)
  142.                 {
  143.                     listBox3.Items.Add(CoeffRis[i] + "x" + GradoCoeffRis[i]);
  144.                     if (Convert.ToInt32(CoeffRis[i]) < 0)
  145.                     {
  146.                         textBox3.AppendText(CoeffRis[i] + "x" + GradoCoeffRis[i] + " ");
  147.                     }
  148.                     else
  149.                     {
  150.                         textBox3.AppendText("+" + CoeffRis[i] + "x" + GradoCoeffRis[i] + " ");
  151.                     }
  152.                 }
  153.                 else if (Convert.ToInt32(GradoCoeffRis[i]) == 10000)
  154.                 {
  155.                     listBox3.Items.Add("Resto: " + CoeffRis[i]);
  156.                     textBox4.Text = "Resto: " + CoeffRis[i];
  157.                 }
  158.                
  159.             }
  160.            
  161.             //Ricrea la divisione iniziale
  162.  
  163.             //Scrive il dividendo
  164.             int k = Convert.ToInt32(numericUpDown2.Value);
  165.             GradoCoeffIniziali.Add(k);
  166.             while (k != 0)
  167.             {
  168.                 k--;
  169.                 GradoCoeffIniziali.Add(k);
  170.             }
  171.  
  172.             textBox2.AppendText("(");
  173.             for (int i = 0; i < numeroCoeffReale; i++)
  174.             {
  175.                
  176.                 if (Convert.ToInt32(CoeffDividendo[i]) < 0)
  177.                 {
  178.                     textBox2.AppendText(" " + CoeffDividendo[i].ToString() + "x" + GradoCoeffIniziali[i].ToString());
  179.                 }
  180.                 else if(Convert.ToInt32(CoeffDividendo[i]) > 0)
  181.                 {
  182.                     textBox2.AppendText(" +" + CoeffDividendo[i].ToString() + "x" + GradoCoeffIniziali[i].ToString());
  183.                 }
  184.             }
  185.             textBox2.AppendText(")");
  186.  
  187.             //Scrivi il divisore
  188.             int CambioSegno = 0;
  189.             if (termineNotoDivisore < 0)
  190.             {
  191.                 //Cambio divisore in +
  192.                 CambioSegno = termineNotoDivisore * -1;
  193.                 textBox2.AppendText(" / (x +" + CambioSegno + ")");
  194.             }
  195.             else if (termineNotoDivisore > 0)
  196.             {
  197.                 //Cambio divisore in -
  198.                 CambioSegno = termineNotoDivisore * -1;
  199.                 textBox2.AppendText(" / (x " + CambioSegno + ")");
  200.             }
  201.  
  202.             //Scrive il risultati nella lista del procedimento
  203.             listBox4.Items.Add("Espressione iniziale: ");
  204.             listBox4.Items.Add(textBox2.Text);
  205.             listBox4.Items.Add(" ");
  206.             listBox4.Items.Add("Risultato: ");
  207.             listBox4.Items.Add(textBox3.Text);
  208.             listBox4.Items.Add(textBox4.Text);
  209.  
  210.             #endregion
  211.  
  212.             se = DateTime.Now.Second;
  213.             datEnd = DateTime.Now.Millisecond;
  214.            
  215.             label7.Text = Convert.ToString(ss - se) + " secondi" + " e " + Convert.ToString(datStart - datEnd) + " millisecondi";
  216.         }
  217.  
  218.         private void button2_Click(object sender, EventArgs e)
  219.         {
  220.             RisolviPolinomioXCoefficienti();
  221.         }
  222.  
  223.         private void button3_Click(object sender, EventArgs e)
  224.         {
  225.             numeroCoeffModificato = 0;
  226.             numeroCoeffReale = 0;
  227.             gradoRis = 0;
  228.             g = 0;
  229.             CoeffDividendo.Clear();
  230.             CoeffRis.Clear();
  231.             GradoCoeffRis.Clear();
  232.             listBox1.Items.Clear();
  233.             listBox2.Items.Clear();
  234.             listBox3.Items.Clear();
  235.             listBox4.Items.Clear();
  236.             numericUpDown1.Value = 0;
  237.             numericUpDown2.Value = 0;
  238.             textBox2.Text = "";
  239.             GradoCoeffIniziali.Clear();
  240.             textBox3.Text = "";
  241.             textBox4.Text = "";
  242.         }
  243.  
  244.         private void button4_Click(object sender, EventArgs e)
  245.         {
  246.             saveFileDialog1.ShowDialog();
  247.         }
  248.  
  249.         private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
  250.         {
  251.             using (StreamWriter sv = new StreamWriter(saveFileDialog1.FileName))
  252.             {
  253.                 sv.WriteLine("Procedimento della divisione tra due polinomi...");
  254.                 sv.WriteLine("Procedimento realizzato da Ruffini Rule un programma di Andrea Sessa");
  255.                 sv.WriteLine("   ");
  256.                 foreach (string x in listBox4.Items)
  257.                 {
  258.                     sv.WriteLine(x);
  259.                 }
  260.             }
  261.         }
  262.  
  263.         private void button5_Click(object sender, EventArgs e)
  264.         {
  265.             AB.ShowDialog();
  266.         }
  267.     }
  268. }