Advertisement
Guest User

Untitled

a guest
Mar 24th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.75 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace frequenciaEstatistica
  12. {
  13.     public partial class formInterface : Form
  14.     {   //variáveis essenciais
  15.         double valorAmplitude;        
  16.         double valorQuantidadeIntervalo;
  17.         double valorTamanhoIntervalo;
  18.         double valorPrimeiroValor;
  19.         double valorUltimoValor;
  20.         public formInterface()
  21.         {
  22.             InitializeComponent();
  23.         }
  24.         public void acaoConfirmar()
  25.         {   //método para o botão confirmar
  26.             if (tbNumero.Text == "")
  27.             {
  28.                 MessageBox.Show("Não foi digitado nenhum número.", "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  29.             }
  30.             else
  31.             {
  32.                 try
  33.                 {
  34.                     lstRoll.Items.Add(tbNumero.Text);
  35.                     btnRemoveRoll.Enabled = true;
  36.                     btnResetAll.Enabled = true;
  37.  
  38.                     tbNumero.Text = "";
  39.                     tbNumero.Focus();
  40.                 }
  41.                 catch (Exception)
  42.                 {
  43.                     MessageBox.Show("Por favor, digite apenas numeros", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
  44.                     tbNumero.Text = "";
  45.                     tbNumero.Focus();
  46.                 }
  47.  
  48.             }
  49.         }
  50.         public void calcularDetalhes()
  51.         {   //faz o cálculo das informações essenciais, amplitude, qntd intervalo e tamanho do intervalo
  52.             try
  53.             {  
  54.                 valorPrimeiroValor = Convert.ToDouble(lstRoll.Items[0]);
  55.                 valorUltimoValor = Convert.ToDouble(lstRoll.Items[lstRoll.Items.Count - 1]);
  56.  
  57.                 tbNumero.Enabled = false;
  58.  
  59.                 valorAmplitude = valorUltimoValor - valorPrimeiroValor;
  60.                 valorQuantidadeIntervalo = Math.Sqrt(lstRoll.Items.Count);
  61.                 valorTamanhoIntervalo = Math.Round((valorAmplitude / valorQuantidadeIntervalo), 4);
  62.                 valorQuantidadeIntervalo = Math.Ceiling((Math.Sqrt(lstRoll.Items.Count)));                
  63.  
  64.                 lblAmplitude.Text += valorAmplitude;
  65.                 lblQntInt.Text += valorQuantidadeIntervalo;
  66.                 lblTamanhoIntervalo.Text += valorTamanhoIntervalo;
  67.  
  68.                 lstRoll.Focus();
  69.             }
  70.             catch (Exception)
  71.             {
  72.                 MessageBox.Show("Por favor, digite apenas números.", "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Error);
  73.             }
  74.         }    
  75.         public void reordenar()
  76.         {   //reordena o roll de forma crescente
  77.             string[] a = lstRoll.Items.Cast<string>().ToArray();
  78.  
  79.             lstRoll.Items.Clear();
  80.  
  81.             var ret = a.OrderBy(p => int.Parse(p));
  82.  
  83.             foreach (var item in ret)
  84.  
  85.                 lstRoll.Items.Add(item.ToString());
  86.         }
  87.         public void criarGrid()
  88.         {   //cria a quantidade de linhas na grid baseada na quantidade de intervalos existentes.
  89.             for (double i = valorQuantidadeIntervalo; i > 0; i--)
  90.             {
  91.                 GridDistribuicao.Rows.Add();
  92.             }
  93.             //faz a distribuição dos dados na coluna Dados.
  94.             for (int a = 0; a < valorQuantidadeIntervalo; a++)
  95.             {                                                
  96.                 GridDistribuicao.Rows[a].Cells["Dados"].Value = valorPrimeiroValor + " |--> " + Math.Round((valorPrimeiroValor + valorTamanhoIntervalo), 2);
  97.                 valorPrimeiroValor += Math.Round((valorTamanhoIntervalo), 2);
  98.  
  99.                 //guarda os valores de valorPrimeiroValor num vetor para futuros cálculos
  100.                 double[] guardarPrimeiroValor = new double[Convert.ToInt32(valorQuantidadeIntervalo)+1];
  101.                 guardarPrimeiroValor[a] = valorPrimeiroValor;
  102.  
  103.                 //faz a distribuição na tabela Xi (em construção)
  104.                 GridDistribuicao.Rows[0].Cells["Xi"].Value = ((guardarPrimeiroValor[0] * (valorPrimeiroValor+valorTamanhoIntervalo))/2);
  105.             }
  106.         }                    
  107.         private void btnConfirmar_Click(object sender, EventArgs e)
  108.         {
  109.             acaoConfirmar();
  110.             btnCalcular.Enabled = true;
  111.         }
  112.         private void btnRemoveRoll_Click(object sender, EventArgs e)
  113.         {   //limpa o item selecionado pelo usuário no roll
  114.             lstRoll.Items.Remove(lstRoll.SelectedItem);                  
  115.         }
  116.         private void btnResetAll_Click(object sender, EventArgs e)
  117.         {   //Limpa todos os valores, resetando o programa
  118.             lblAmplitude.Text = "Amplitude: ";
  119.             lblQntInt.Text = "Quantidade de Intervalos: ";
  120.             lblTamanhoIntervalo.Text = "Tamanho dos Intervalos: ";
  121.  
  122.             valorAmplitude = 0;
  123.             valorQuantidadeIntervalo = 0;
  124.             valorTamanhoIntervalo = 0;
  125.            
  126.             btnConfirmar.Enabled = true;
  127.             tbNumero.Enabled = true;
  128.             btnResetAll.Enabled = false;
  129.             btnRemoveRoll.Enabled = false;
  130.  
  131.             lstRoll.Items.Clear();
  132.             tbNumero.Focus();
  133.         }
  134.         private void tbNumero_KeyDown(object sender, KeyEventArgs e)
  135.         {   //método para que o usuário confirme o valor via tecla Enter
  136.             if (e.KeyCode == Keys.Enter)
  137.             {
  138.                 acaoConfirmar();
  139.                 btnRemoveRoll.Enabled = false;
  140.                 btnCalcular.Enabled = true;
  141.             }
  142.         }
  143.         private void pictureBox1_Click(object sender, EventArgs e)
  144.         {
  145.             MessageBox.Show("*********************** INFORMAÇÕES ***********************\n\n - Use o botão Confirmar Valor para inserir sua lista de dados.\n\n - Use o botão 'Remover do Roll' caso tenha confirmado algum número acidentalmente. Este botão não estará disponível caso já tenha clicado em Calcular.", "Informações Úteis", MessageBoxButtons.OK, MessageBoxIcon.Information);
  146.         }
  147.         private void btnCalcular_Click(object sender, EventArgs e)
  148.         {
  149.             if (lstRoll.Items.Count < 1)
  150.             {   //se não estiver nada no roll, uma mensagem de erro é enviada
  151.                 MessageBox.Show("Não foi inserido nenhum valor.", "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  152.             }
  153.             else
  154.             {                
  155.                 reordenar();
  156.                 btnRemoveRoll.Enabled = false;
  157.                 calcularDetalhes();
  158.                 criarGrid();
  159.             }
  160.         }
  161.         private void formInterface_Load(object sender, EventArgs e)
  162.         {            
  163.             tbNumero.Select();
  164.         }
  165.     }
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement