Advertisement
nm9505

ESTADÍSTICA DESCRIPTIVA_FILESTREAM_console_out_txt

May 21st, 2022
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 21.02 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. namespace ESTADISTICA_DESCRIPTIVA
  5. {
  6.     public static class Program
  7.     {
  8.         public static void Main()
  9.         {
  10.             Console.ForegroundColor = ConsoleColor.Magenta;
  11.             Console.WriteLine("C# Android APK consola: CALCULO DE MEDIA MEDIANA Y MODA");
  12.             Console.ForegroundColor = ConsoleColor.Green;
  13.             Console.WriteLine("nimrodga@hotmail.com");
  14.             HOME://Etiqueta de inico
  15.             try //Capturador de excepcion de entrada
  16.             {
  17.                 double[] datos; double M; double sturges=0; double ME=0; double MO=0;
  18.                 var frec = new Tuple<string, string, string>("Caso", "frecuencia", "f %");
  19.                 double[,] frecuencias; double As = 0; double CU = 0;
  20.                 double?[] x; int c; double r; double Moda = 0; int fin;
  21.                 int[] f; double Interval; var Agrup = new Tuple<string, string, string, string>("Intervalo", "Xm", "fm", "fm %");
  22.                 // Configuracion de visualizacion de ingreso de datos
  23.                 Console.ForegroundColor = ConsoleColor.Yellow;
  24.                 Console.Write("Ingrese número de datos: ");
  25.                 int nd = int.Parse(Console.ReadLine());
  26.                 //Excepcion sobre el número de datos menor
  27.                 if (nd < 2)
  28.                 {
  29.                     Console.ForegroundColor = ConsoleColor.Cyan;
  30.                     Console.WriteLine("¡ Error !!");
  31.                     goto HOME;
  32.                 }
  33.                 Console.WriteLine();
  34.                 Console.Write("Ingrese número de cifras decimales que diferencian los datos (si son números enteros, ingrese 0), revise bien sus datos para ello, pues esto podría causar solamente, que la agrupación discreta omita algún valor: ");
  35.                 int dec = int.Parse(Console.ReadLine());
  36.                 datos = new double[nd]; double suma = 0;
  37.                 frecuencias = new double[1, 3];
  38.                 Console.Clear();
  39.                 for (int j = 0; j < nd; j++)
  40.                 {
  41.                     test:
  42.                     Console.Write($"Ingrese dato {j + 1} /{nd} : ");
  43.                     try //Capturador de ecepciones en lectura de entradas
  44.                     {
  45.                         datos[j] = double.Parse(Console.ReadLine());
  46.                         Console.Clear();
  47.                     }
  48.                     catch (FormatException)
  49.                     {
  50.                         Console.ForegroundColor = ConsoleColor.Red;
  51.                         Console.WriteLine($"Error en lectura numerica");
  52.                         Console.ForegroundColor = ConsoleColor.Yellow;
  53.                         goto test;
  54.                     }
  55.                     suma = suma + datos[j];
  56.                 }
  57.                
  58.                 string path = @"ESTADISTICA_DESCRIPTIVA.txt";
  59.                 if(File.Exists(path))
  60.                 {
  61.                     File.Delete(path);
  62.                 }
  63.                 static void AdText(FileStream ED, string value)
  64.                 {
  65.                     byte[] info = new UTF8Encoding(true).GetBytes(value);
  66.                     ED.Write(info,0,info.Length);
  67.                 }
  68.                 using (FileStream ED = File.Create(path))
  69.                 {
  70.                     //Console.WriteLine("REVISE SUS DATOS:");
  71.                     AdText(ED,"REVISE SUS DATOS:\r\n");
  72.                     Console.ForegroundColor = ConsoleColor.Green;
  73.                     for (int j = 0; j < nd; j++)
  74.                     {
  75.                         if (j == nd - 1)
  76.                         {
  77.                             //Console.Write(datos[j]);
  78.                             AdText(ED,$"{datos[j]}\r\n");
  79.                             AdText(ED,"\r\n");
  80.                             break;
  81.                         }
  82.                         //Console.Write($"{datos[j]}, ");
  83.                         AdText(ED,$"{datos[j]}, ");
  84.                     }
  85.                     //Console.WriteLine();
  86.                     Console.ForegroundColor = ConsoleColor.Magenta;
  87.                     //Console.WriteLine("1. MEDIA ARITMETICA");
  88.                     AdText(ED,"1. MEDIA ARITMETICA\r\n");
  89.                     Console.ForegroundColor = ConsoleColor.Yellow;
  90.                     //Console.WriteLine($" N = {nd} casos.");
  91.                     AdText(ED,$" N = {nd} casos.\r\n");
  92.                     //Console.WriteLine($" Puntos porcentuales por caso:");
  93.                     AdText(ED,$" Puntos porcentuales por caso:\r\n");
  94.                     //Console.WriteLine($" {Math.Round(100 / Convert.ToDouble(nd), 4)}");
  95.                     AdText(ED,$" {Math.Round(100 / Convert.ToDouble(nd), 4)}\r\n");
  96.                     Console.ForegroundColor = ConsoleColor.Cyan;
  97.                     ME = suma / nd;
  98.                     //Console.WriteLine($" La Media Aritmética es:  {ME}");
  99.                     AdText(ED,$" La media es: {ME}\r\n");
  100.                     //Cálculo del Segundo y Cuarto momento
  101.                     double Ds; double SM = 0; double X = Math.Round(suma / nd, 2); double CM = 0;
  102.                     for (int j = 0; j < nd; j++)
  103.                     {
  104.                         SM = SM + Math.Pow(datos[j] - ME, 2);
  105.                         CM = CM + Math.Pow(datos[j] - ME, 4);
  106.                     }
  107.                     Ds = Math.Sqrt(SM / nd);
  108.                     if (Ds != 0)
  109.                     {
  110.                         CU = CM / (nd * Math.Pow(Ds, 4));
  111.                     }
  112.                     decimal b = 2.11M;
  113.                     b = Math.Round(Convert.ToDecimal(Ds), 2);
  114.                     //Console.WriteLine();
  115.                     AdText(ED,"\r\n");
  116.                     Console.ForegroundColor = ConsoleColor.Magenta;
  117.                     //Console.WriteLine("2. ORDENAMIENTO DE DATOS");
  118.                     AdText(ED,"2. ORDENAMIENTO DE DATOS\r\n");
  119.                     Console.ForegroundColor = ConsoleColor.Cyan;
  120.                     //Console.WriteLine($"Los datos en orden son: ");
  121.                     AdText(ED,"Los datos en orden son:\r\n");
  122.                     //Algoritmo burbuja para el ordenamiento de datos
  123.                     for (int i = 0; i < nd; i++)
  124.                     {
  125.                         for (int k = 0; k <= nd - 2; k++)
  126.                         {
  127.    
  128.                             if (datos[k] > datos[k + 1])
  129.                             {
  130.                                 double y = datos[k];
  131.                                 datos[k] = datos[k + 1];
  132.                                 datos[k + 1] = y;
  133.                             }
  134.                         }
  135.                     }
  136.                     // Visualizador de los datos ordenados
  137.                     for (int m = 0; m < nd; m++)
  138.                     {
  139.                         if (m == nd - 1)
  140.                         {
  141.                             //Console.Write($"{datos[m]}");
  142.                             AdText(ED,$"{datos[m]}\r\n");
  143.                             AdText(ED,"\r\n");
  144.                             //Console.WriteLine();
  145.                             break;
  146.                         }
  147.                         //Console.Write($"{datos[m]}, ");
  148.                         AdText(ED,$"{datos[m]}, ");
  149.                     }
  150.                     //Console.WriteLine();
  151.                     AdText(ED,"\r\n");
  152.                     Console.ForegroundColor = ConsoleColor.Magenta;
  153.                     //Console.WriteLine("3. MEDIANA");
  154.                     AdText(ED,"3. MEDIANA\r\n");
  155.                     Console.ForegroundColor = ConsoleColor.Cyan;
  156.                     // Seccion de condicionales para visualizar la mediana
  157.                     if (nd % 2 == 1)
  158.                     {
  159.                         M = datos[((nd + 1) / 2) - 1];
  160.                         Console.WriteLine();
  161.                         //Console.WriteLine($"La mediana es {M} y pertenece a la muestra");
  162.                         AdText(ED,$"La mediana es {M} y pertenece a la muestra.\r\n");
  163.                     }
  164.                     if (nd % 2 == 0 && datos[nd / 2 - 1] == datos[nd / 2])
  165.                     {
  166.                         M = datos[nd / 2];
  167.                         //Console.WriteLine($"La mediana es {M} y pertenece a la muestra");
  168.                         AdText(ED,$"La mediana es {M} y pertenece a la muestra\r\n");
  169.                     }
  170.                     else if (nd % 2 == 0 && datos[nd / 2 - 1] != datos[nd / 2])
  171.                     {
  172.                         M = (datos[nd / 2 - 1] + datos[nd / 2]) / 2;
  173.                         //Console.WriteLine();
  174.                         //Console.WriteLine($"La mediana es {M} y no pertenece a la muestra");
  175.                         AdText(ED,$"La mediana es {M} y no pertenece a la muestra\r\n");
  176.                     }
  177.                     //Console.WriteLine();
  178.                     AdText(ED,$"\r\n");
  179.                     Console.ForegroundColor = ConsoleColor.Magenta;
  180.                     //Console.WriteLine("4. FRECUENCIAS SIMPLES");
  181.                     AdText(ED,"4. FRECUENCIAS SIMPLES\r\n");
  182.                     Console.ForegroundColor = ConsoleColor.Cyan;
  183.                     // Visualizacion y calculo de frecuencias
  184.                     x = new double?[datos.Length];
  185.                     f = new int[datos.Length];
  186.                     int Max = 0;
  187.                     //Console.WriteLine(frec);
  188.                     AdText(ED,$"{frec}\r\n");
  189.                    
  190.                     for (int i = 0; i < datos.Length; i++)
  191.                     {
  192.                         c = 0; f[i] = 0;
  193.                         for (int k = 0; k < datos.Length; k++)
  194.                         {
  195.                             if (datos[k] == datos[i])
  196.                             {
  197.                                 ++c;
  198.                                 if (caso(datos[i]))
  199.                                 {
  200.                                     x[i] = datos[i];
  201.                                 }
  202.                             }
  203.                             if (c >= Max)
  204.                             {
  205.                                 Max = c;
  206.                                 Moda = datos[i];
  207.                             }
  208.                         }
  209.                         f[i] = c;
  210.                         r = Math.Round(100 * Convert.ToDouble(f[i]) / Convert.ToDouble(nd), 1);
  211.                         if (x[i] != null)
  212.                         {
  213.                             //Console.WriteLine($"({x[i]}, {c}, {r} %)");
  214.                             AdText(ED,$"({x[i]}, {c}, {r} %)\r\n");
  215.                         }
  216.                     }
  217.                     //Console.WriteLine();
  218.                     AdText(ED,"\r\n");
  219.                     // funcion booleana para calculo de repeticiones
  220.                     bool caso(double valor)
  221.                     {
  222.                         for (int i = 0; i < x.Length; i++)
  223.                         {
  224.                             if (x[i] == valor)
  225.                             {
  226.                                 return false;
  227.                             }
  228.                         }
  229.                         return true;
  230.                     }
  231.                     // Visualizacion de valores modales posibles
  232.                     Console.ForegroundColor = ConsoleColor.Magenta;
  233.                     //Console.WriteLine("5. MODA");
  234.                     AdText(ED,"5. MODA\r\n");
  235.                     Console.ForegroundColor = ConsoleColor.Cyan;
  236.                     string modas = "";
  237.                     int z = 0; int s = 0; int us = 1;
  238.                     for (int j = 0; j < x.Length; j++)
  239.                     {
  240.                         if (f[j] == Max && Max > 1)
  241.                         {
  242.                             z++;
  243.                             if (x[j] != null)
  244.                             {
  245.                                 s++;
  246.                                 MO = Convert.ToDouble(x[j]);
  247.                                 //Console.WriteLine($"Moda {s} = {x[j]}");
  248.                                 AdText(ED,$"Moda {s} = {x[j]}\r\n");
  249.                                 us = j;
  250.                                 modas = modas + Convert.ToString(x[j]) + ", ";
  251.                             }
  252.                         }
  253.                     }
  254.                     if (Max != 1)
  255.                     {
  256.                         //Console.WriteLine($"Frecuencia modal = {Max}");
  257.                         AdText(ED,$"Frecuencia modal = {Max}\r\n");
  258.                     }
  259.                     string modas1 = modas;
  260.                     if (s > 1)
  261.                     {
  262.                         modas1 = modas.TrimEnd(' ');
  263.                         modas1 = modas1.TrimEnd(',');
  264.                         string umoda = Convert.ToString(x[us]);
  265.                         int ulm = umoda.Length + 1;
  266.                         modas1 = modas1.Insert(modas1.Length - ulm, " y");
  267.                     }
  268.                     //Console.WriteLine();
  269.                     if (Max == 1)
  270.                     {
  271.                         modas = null;
  272.                         //Console.WriteLine(" No existe valor modal alguno.\n La muestra tiende a una distribución Uniforme, ningún valor se repite.");
  273.                         AdText(ED," No existe valor modal alguno.\n La muestra tiende a una distribución Uniforme, ningún valor se repite.\r\n");
  274.                     }
  275.                     else if (Max > 1 && s == 2)
  276.                     {
  277.                         //Console.WriteLine($"Bimodal: {modas1} con una frecuencia de {Max} las dos.");
  278.                         AdText(ED,$"Bimodal: {modas1} con una frecuencia de {Max} las dos.\r\n");
  279.                     }
  280.                     else if (Max > 1 && s > 2)
  281.                     {
  282.                         //Console.WriteLine($"Multimodal: {modas1} con una frecuencia de {Max} cada una.");
  283.                         AdText(ED,$"Multimodal: {modas1} con una frecuencia de {Max} cada una.\r\n");
  284.                     }
  285.                     //Console.WriteLine();
  286.                     AdText(ED,"\r\n");
  287.                     Console.ForegroundColor = ConsoleColor.Magenta;
  288.                     //Console.WriteLine("6. DISPERSION");
  289.                     AdText(ED,"6. DISPERSION\r\n");
  290.                     Console.ForegroundColor = ConsoleColor.Cyan;
  291.                     double unit = Math.Pow(10, -dec);
  292.                     //Console.WriteLine();
  293.                     AdText(ED,"\r\n");
  294.                     double range = (datos[nd - 1] - datos[0]) + unit;
  295.                     //Console.WriteLine($"Xmax = {datos[nd - 1]}, Xmin = {datos[0]}");
  296.                     AdText(ED,$"Xmax = {datos[nd - 1]}, Xmin = {datos[0]}\r\n");
  297.                     //Console.WriteLine($"RANGO = {range}");
  298.                     AdText(ED,$"RANGO = {range}\r\n");
  299.                     if (nd >= 8)
  300.                     {
  301.                         sturges = Math.Round(1 + 3.3 * Math.Log10(nd), 0);
  302.                         //Console.WriteLine();
  303.                         //Console.WriteLine($"Intervalos de clase sugeridos según Sturges:\r\n#CLASES = Math.Round(1 + 3.3 x Log {nd},0) =\n {sturges}");
  304.                         AdText(ED,$"Intervalos de clase sugeridos según Sturges:\r\n#CLASES = Math.Round(1 + 3.3 x Log {nd},0) = {sturges}\r\n");
  305.                     }
  306.                     Interval = 0;
  307.                     AdText(ED,"\r\n");
  308.                     Interval = Math.Round(Convert.ToDouble(range * Math.Pow(10, dec)) / sturges, 0) * unit;
  309.                     //Console.WriteLine($"LONGITUD DE INTERVALO:\n I = Math.Round(RANGO/#clases,0) = {Interval}");
  310.                     AdText(ED,$"LONGITUD DE INTERVALO:\n I = Math.Round(RANGO/#clases,0) = {Interval}");
  311.                     //Console.WriteLine();
  312.                     AdText(ED,"\r\n");
  313.                     //Console.WriteLine($"Desviación estándar S = {b} unidades.");
  314.                     AdText(ED,$"Desviación estándar S = {b} unidades.\r\n");
  315.                     //Console.WriteLine();
  316.                     AdText(ED,"\r\n");
  317.                     Console.ForegroundColor = ConsoleColor.Magenta;
  318.                     //Console.WriteLine("7. ASIMETRIA O SESGO:");
  319.                     AdText(ED,"7. ASIMETRIA O SESGO:\r\n");
  320.                     Console.ForegroundColor = ConsoleColor.Cyan;
  321.                     //Console.WriteLine("As=(Moda - Media) ÷ Desviación Estándar");
  322.                     AdText(ED,"As=(Moda - Media) ÷ Desviación Estándar\r\n");
  323.                     //Console.WriteLine();
  324.                     AdText(ED,"\r\n");
  325.                     if (Max == 1)
  326.                     {
  327.                         //Console.WriteLine("La muestra no posee asimetria alguna, porque muestra una tendencia Uniforme.\nNingun valor se repite");
  328.                         AdText(ED,"La muestra no posee asimetria alguna,\r\nporque muestra una tendencia Uniforme.\r\nNingún valor se repite\r\n");
  329.                     }
  330.                     if (Ds == 0)
  331.                     {
  332.                         //Console.WriteLine("As = Indefinida porque S = 0.");
  333.                         AdText(ED,"As = Indefinida porque S = 0.\r\n");
  334.                     }
  335.                     else if (Max > 1 && s == 1)
  336.                     {
  337.                         As = (MO - ME) / Convert.ToDouble(b);
  338.                         //Console.WriteLine($"As = {As}");
  339.                         AdText(ED,$"As = {As}\r\n");
  340.                         if (Math.Abs(As) <= 0.2)
  341.                         {
  342.                             Console.ForegroundColor = ConsoleColor.Blue;
  343.                             //Console.WriteLine("Asimetría o sesgo mínimo !!:");
  344.                             AdText(ED,"Asimetría o sesgo mínimo !!\r\n");
  345.                             //Console.WriteLine();
  346.                             AdText(ED,"\r\n");
  347.                             Console.ForegroundColor = ConsoleColor.Green;
  348.                             //Console.WriteLine("Muestra con tendencia simétrica, o tendencia t-Student: \n Distribución unimodal con Media, Mediana y Moda muy cercanas entre sí.");
  349.                             AdText(ED,"Muestra con tendencia simétrica, o tendencia t-Student: \nDistribución unimodal con Media, Mediana y Moda muy cercanas entre sí.\r\n");
  350.                             Console.ForegroundColor = ConsoleColor.Cyan;
  351.                         }
  352.                         else if (Math.Abs(As) > 0.2 && MO > ME)
  353.                         {
  354.                             Console.ForegroundColor = ConsoleColor.Green;
  355.                             //Console.WriteLine("Muestra unimodal con sesgo positivo o tendencia asimétrica con sesgo hacia la derecha.");
  356.                             AdText(ED,"Muestra unimodal con sesgo positivo o \ntendencia asimétrica con sesgo hacia la derecha.\r\n");
  357.                             Console.ForegroundColor = ConsoleColor.Cyan;
  358.                         }
  359.                         else if (Math.Abs(As) > 0.2 && MO < ME)
  360.                         {
  361.                             Console.ForegroundColor = ConsoleColor.Green;
  362.                             //Console.WriteLine("Muestra unimodal con sesgo negativo o tendencia asimétrica con sesgo hacia la Izquierda.");
  363.                             AdText(ED,"Muestra unimodal con sesgo negativo o \ntendencia asimétrica con sesgo hacia la Izquierda.\r\n");
  364.                             Console.ForegroundColor = ConsoleColor.Cyan;
  365.                         }
  366.                     }
  367.                     if (Max > 1 && s > 1)//Si existe moda y hay más de una.
  368.                     {
  369.                         Console.ForegroundColor = ConsoleColor.Green;
  370.                         //Console.WriteLine($"No se puede caracterizar asimetría, porque la muestra presenta {s} picos modales en {modas1} los cuales forman altibajos.");
  371.                         AdText(ED,$"No se puede caracterizar asimetría, \nporque la muestra presenta {s} picos modales en \n{modas1}, los cuales forman altibajos.\r\n");
  372.                         Console.ForegroundColor = ConsoleColor.Cyan;
  373.                     }
  374.                     //Console.WriteLine();
  375.                     AdText(ED,"\r\n");
  376.                     Console.ForegroundColor = ConsoleColor.Magenta;
  377.                     //Console.WriteLine("8. CURTOSIS (Ω):");
  378.                     AdText(ED,"8. CURTOSIS (Ω):\r\n");
  379.                     Console.ForegroundColor = ConsoleColor.Cyan;
  380.                     //Console.WriteLine("Aglomeración entorno a la media. Tipos:");
  381.                     AdText(ED,"Aglomeración entorno a la media. Tipos:\r\n");
  382.                     //Console.WriteLine();
  383.                     AdText(ED,"\r\n");
  384.                     //Console.WriteLine("Leptocúrtica Ω > 3 (Punteaguda)");
  385.                     AdText(ED,"Leptocúrtica Ω > 3 (Punteaguda)\r\n");
  386.                     //Console.WriteLine("Mesocúrtica Ω = 3 (Curva Normal)");
  387.                     AdText(ED,"Mesocúrtica Ω = 3 (Curva Normal)\r\n");
  388.                     //Console.WriteLine("Flaticúrtica Ω < 3 (Achatada)");
  389.                     AdText(ED,"Flaticúrtica Ω < 3 (Achatada)\r\n");
  390.                     Console.ForegroundColor = ConsoleColor.Yellow;
  391.                     AdText(ED,"\r\n");
  392.                     //Console.WriteLine(" Para esta muestra:");
  393.                     AdText(ED," Para esta muestra:\r\n");
  394.                     if (Ds == 0)
  395.                     {
  396.                         //Console.WriteLine(" Ω = Indefinida, porque S = 0.");
  397.                         AdText(ED," Ω = Indefinida, porque S = 0.\r\n");
  398.                     }
  399.                     if (Ds != 0)
  400.                     {
  401.                         //Console.WriteLine($" Ω = {Math.Round(CU, 3)}");
  402.                         AdText(ED,$" Ω = {Math.Round(CU, 3)}\r\n");
  403.                     }
  404.                     if(CU>0 && Max>1 && s>1 || modas==null)
  405.                     {
  406.                         //Console.WriteLine("El valor de Ω no se puede caracterizar geométricamente, porque la muestra presenta más de una cumbre modal, o bien es una muestra que tiende a una distribución uniforme.");
  407.                         AdText(ED,"El valor de Ω no se puede caracterizar geométricamente, \r\nporque la muestra presenta más de una cumbre modal, \r\no bien es una muestra que tiende \r\na una distribución uniforme.");
  408.                     }
  409.                     else if (CU > 3 && Ds!=0)
  410.                     {
  411.                         //Console.WriteLine($"Muestra con tendencia leptocúrtica, con un exceso (pico de cumbre) de Ω - 3 = {Math.Round(CU - 3, 3)}, por encima de la curva Normal.");
  412.                         AdText(ED,$"Muestra con tendencia leptocúrtica, \ncon un exceso (pico de cumbre) de Ω - 3 = {Math.Round(CU - 3, 3)}, \npor encima de la curva Normal.\r\n");
  413.                         if (CU - 3 < 0.2 && CU - 3 >= 0.1)
  414.                         {
  415.                             //Console.WriteLine("Aunque el exceso es mínimo, pudiendo considerarse 'cuasinormal' ");
  416.                             AdText(ED,"Aunque el exceso es mínimo, \npudiendo considerarse 'cuasinormal'\r\n");
  417.                         }
  418.                     }
  419.                     else if (Math.Abs(CU - 3) < 0.1 && Ds!=0)
  420.                     {
  421.                         //Console.WriteLine("Muestra con tendencia Mesocúrtica o de curva Normal\n (Ω = 3).");
  422.                         AdText(ED,"Muestra con tendencia Mesocúrtica o de curva Normal\n (Ω = 3).\r\n");
  423.                     }
  424.                     else if (CU < 3 && Ds != 0)
  425.                     {
  426.                         //Console.WriteLine($"Muestra con tendencia flaticúrtica, con una disminución de cumbre 3 - Ω = {Math.Round(3 - CU, 3)}, por debajo de la Normal.");
  427.                         AdText(ED,$"Muestra con tendencia flaticúrtica, \ncon una disminución de cumbre:\n 3 - Ω = {Math.Round(3 - CU, 3)}, \npor debajo de la Normal.\r\n");
  428.                         if (3 - CU < 0.2 && 3 - CU >= 0.1)
  429.                         {
  430.                             //Console.WriteLine("Aunque la disminución es mínima, pudiendo considerarse 'cuasinormal'.");
  431.                             AdText(ED,"Aunque la disminución es mínima, \npudiendo considerarse 'cuasinormal'.\r\n");
  432.                         }
  433.                     }
  434.                     //Console.WriteLine();
  435.                     AdText(ED,"\r\n");
  436.                     //Datos en agrupación Discreta
  437.                     Console.ForegroundColor = ConsoleColor.Magenta;
  438.                     //Console.WriteLine("9. DATOS AGRUPADOS");
  439.                     AdText(ED,"9. DATOS AGRUPADOS\r\n");
  440.                     Console.ForegroundColor = ConsoleColor.Cyan;
  441.                     double Inicial = datos[0];
  442.                     double Final = 0;
  443.                     Console.ForegroundColor = ConsoleColor.DarkCyan;
  444.                     //Console.WriteLine("Agrupación con límites discretos sugerida:");
  445.                     AdText(ED,"Agrupación con límites discretos sugerida:\r\n");
  446.                     Console.ForegroundColor = ConsoleColor.Cyan;
  447.                     //Console.WriteLine($"LONGITUD DE INTERVALO I = {Interval}");
  448.                     AdText(ED,$"LONGITUD DE INTERVALO I = {Interval}\r\n");
  449.                     //Console.WriteLine();
  450.                     AdText(ED,"\r\n");
  451.                     //Console.WriteLine(Agrup);
  452.                     AdText(ED,$"{Agrup}\r\n");
  453.                     do
  454.                     {
  455.                         Final = Inicial + Interval;
  456.                         Final = Math.Round(Final, dec);
  457.                         double Xm = (Inicial + Final) / 2;
  458.                         int Fm = 0;
  459.                         for (int t = 0; t < nd; t++)
  460.                         {
  461.                             if (datos[t] >= Inicial && datos[t] <= Final)
  462.                             {
  463.                                 Fm++;
  464.                             }
  465.                         }
  466.                         double Fp = Math.Round(Convert.ToDouble(Fm) * 100 / Convert.ToDouble(nd), 2);
  467.                         //Console.WriteLine($"{Inicial} - {Final} | {Xm} | {Fm} | {Fp}");
  468.                         AdText(ED,$"{Inicial} - {Final} | {Xm} | {Fm} | {Fp}\r\n");
  469.                         Inicial = Math.Round(Final + unit, dec);
  470.                     } while (Final < datos[nd - 1]);
  471.                     //Console.WriteLine();
  472.                     AdText(ED,"\r\n");
  473.                     //Datos en agrupación continua
  474.                     Console.ForegroundColor = ConsoleColor.DarkCyan;
  475.                     //Console.WriteLine("Agrupación con límites continuos, o reales, sugerida:");
  476.                     AdText(ED,"Agrupación con límites continuos, o reales, sugerida:\r\n");
  477.                     Console.ForegroundColor = ConsoleColor.Cyan;
  478.                     //Console.WriteLine($"LONGITUD DE INTERVALO:\n I + unity = {Interval + unit}");
  479.                     AdText(ED,$"LONGITUD DE INTERVALO:\r\n I + unity = {Interval + unit}\r\n");
  480.                     //Console.WriteLine();
  481.                     AdText(ED,"\r\n");
  482.                     double LRI = datos[0] - 5 * Math.Pow(10, -dec - 1);
  483.                     double LRF = 0;
  484.                     double Xmr = 0; int Fmr = 0;
  485.                     //Console.WriteLine(Agrup);
  486.                     AdText(ED,$"{Agrup}\r\n");
  487.                     do
  488.                     {
  489.                         LRF = LRI + Interval + 1 * unit;
  490.                         LRF = Math.Round(LRF, dec + 1);
  491.                         Xmr = (LRI + LRF) / 2;
  492.                         Fmr = 0;
  493.                         for (int t = 0; t < nd; t++)
  494.                         {
  495.                             if (datos[t] > LRI && datos[t] < LRF)
  496.                             {
  497.                                 Fmr++;
  498.                             }
  499.                         }
  500.                         double Fpr = Math.Round(Convert.ToDouble(Fmr) * 100 / Convert.ToDouble(nd), 2);
  501.                         //Console.WriteLine($"{LRI} - {LRF} | {Xmr} | {Fmr} | {Fpr}");
  502.                         AdText(ED,$"{LRI} - {LRF} | {Xmr} | {Fmr} | {Fpr}\r\n");
  503.                         LRI = LRF;
  504.                     } while (LRF < datos[nd - 1]);
  505.                     //Console.WriteLine();
  506.                     AdText(ED,"\r\n");
  507.                     if (nd < 8)
  508.                     {
  509.                         Console.ForegroundColor = ConsoleColor.Red;
  510.                         //Console.WriteLine("La agrupacion es impropia para una muestra menor que N = 8");
  511.                         AdText(ED,"La agrupación es impropia para una muestra menor que N = 8\r\n");
  512.                         Console.ForegroundColor = ConsoleColor.Cyan;
  513.                         //Console.WriteLine();
  514.                     }
  515.                     ED.Close();
  516.                 }
  517.                 using(FileStream ReadED = File.OpenRead(path))
  518.                 {
  519.                     byte[] Text = new byte [ReadED.Length+10];
  520.                     UTF8Encoding Template = new UTF8Encoding(true);
  521.                     while (ReadED.Read(Text,0,Text.Length)>0);
  522.                     {
  523.                         Console.WriteLine(Template.GetString(Text));
  524.                     }
  525.                     ReadED.Close();
  526.                 }
  527.             }
  528.             // Visualizador de mensaje de excepcion y retorno a HOME
  529.             catch (FormatException)
  530.             {
  531.                 Console.WriteLine("Error !! ingrese entero mayor que 1, o cierre la aplicación.");
  532.                 goto HOME;
  533.             }
  534.             Console.ForegroundColor = ConsoleColor.White;
  535.             Console.Write("Seleccione y copie lo que desee para:\npegar en un documento editable y poder guardar, o bien tome capturas de pantalla \ny comparta directamente por Bluetooth u otro medio... \n");
  536.             //Console.WriteLine();
  537.         }
  538.     }
  539. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement