using System;
using [Link];
using [Link];
using [Link];
using [Link];
class Program
{
static void Main(string[] args)
{
// Establece la cultura para aceptar números con decimales ingresados con
coma decimal
CultureInfo cultura = new CultureInfo("es-ES");
// Obtiene la ruta del directorio donde se encuentra el ejecutable
string directoryPath = [Link];
string filePath = [Link](directoryPath, "[Link]");
// Verifica si el archivo existe
if ()
{
[Link]("El archivo '[Link]' no existe en el directorio:
" + directoryPath);
[Link](); // Espera a que el usuario presione una tecla antes
de cerrar la aplicación
return;
}
// Solicita al usuario que ingrese los valores de alfa y beta
double alfa, beta;
bool validInput = false;
do
{
[Link]("Ingresa el valor de alfa (mayor a 0 y menor a 1, usa
coma o punto como separador decimal):");
string input = [Link]().Replace(',', '.');
if ([Link](input, [Link],
[Link], out alfa) && alfa > 0 && alfa < 1)
{
validInput = true;
}
else
{
[Link]("Por favor, ingresa un valor válido para alfa
(mayor a 0 y menor a 1, usa coma o punto como separador decimal):");
}
} while (!validInput);
validInput = false;
do
{
[Link]("Ingresa el valor de beta (mayor a alfa y menor a 1,
usa coma o punto como separador decimal):");
string input = [Link]().Replace(',', '.');
if ([Link](input, [Link],
[Link], out beta) && beta > 0 && beta < 1 && beta > alfa)
{
validInput = true;
}
else
{
[Link]("Por favor, ingresa un valor válido para beta
(mayor a alfa y menor a 1, usa coma o punto como separador decimal):");
}
} while (!validInput);
// Lee los números del archivo que están dentro del rango alfa y beta
List<double> numeros = new List<double>();
foreach (string line in [Link](filePath))
{
if ([Link]([Link](',', '.'), [Link],
[Link], out double num) && num >= alfa && num <= beta)
{
[Link](num);
}
}
// Ordena los números
[Link]();
// Calcula los tamaños y detalles de los huecos
List<Hueco> huecos = new List<Hueco>();
Hueco huecoActual = null;
foreach (var num in numeros)
{
if (num > alfa && num < beta)
{
if (huecoActual != null)
{
[Link] = num;
[Link]ño = (int)(num - [Link] - 1);
[Link](huecoActual);
huecoActual = null;
}
}
else
{
if (huecoActual == null)
{
huecoActual = new Hueco { Inicio = num };
}
else
{
[Link]ño++;
}
}
}
// Contadores de huecos y tamaño de huecos
int totalHuecos = [Link];
Dictionary<int, int> tamanosHuecos = new Dictionary<int, int>();
// Contabiliza el tamaño de cada hueco
foreach (Hueco hueco in huecos)
{
int tamano = [Link]ño;
if ([Link](tamano))
{
tamanosHuecos[tamano]++;
}
else
{
tamanosHuecos[tamano] = 1;
}
}
// Suma los huecos de tamaño 0 si hay más de uno
int sumaHuecosTamaño0 = 0;
if ([Link](0))
{
sumaHuecosTamaño0 = tamanosHuecos[0];
[Link](0);
}
// Imprime los resultados en el formato requerido
[Link]($"Para el archivo '[Link]' con alfa =
{[Link](cultura)} y beta = {[Link](cultura)}:");
[Link]($"Número total de huecos: {totalHuecos +
sumaHuecosTamaño0}");
[Link]("Número de huecos por tamaño:");
foreach (KeyValuePair<int, int> kvp in [Link](x => [Link]))
{
[Link]($"Tamaño {[Link]}: {[Link]} huecos");
}
if (sumaHuecosTamaño0 > 0)
{
[Link]($"Suma de huecos de tamaño 0: {sumaHuecosTamaño0}");
}
[Link](); // Espera a que el usuario presione una tecla antes de
cerrar la aplicación
}
}
class Hueco
{
public double Inicio { get; set; }
public double Fin { get; set; }
public int Tamaño { get; set; }
}