es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Necesita calcular la mediana y la moda, C#.

Necesito organizar los números y obtener la mediana y la moda de cualquier cantidad de números, así que intenté diferentes formas de implementar esto, pero simplemente no puedo encontrar la solución.

public static void Main()
 {
    int i, n;
    int[] a = new int[100];

    Console.Write("\n\nLeer n número de valores en un arreglo y mostrarlo en orden inverso:\n");
    Console.Write("------------------------------------------------------------------------\n");

    Console.Write("Ingrese el número de elementos para almacenar en el arreglo :");
    n = Convert.ToInt32(Console.ReadLine());

  //cantidad de números para insertar
    Console.Write("Ingrese {0} número de elementos en el arreglo :\n", n);
    for (i = 0; i < n; i++)
    {
        Console.Write("elemento - {0} : ", i);
        a[i] = Convert.ToInt32(Console.ReadLine());
    }
  //números individuales para insertar
    Console.Write("\nLos valores almacenados en el arreglo son: \n");
    for (i = 0; i < n; i++)
    {
        Console.Write("{0} ", a[i]);
    }
}

Intenté usar esto, pero no sé cómo usarlo

public static class Extensions
{
    public static decimal GetMedian(this int[] array)
    {
        int[] tempArray = array;
        int count = tempArray.Length;

        Array.Sort(tempArray);

        decimal medianValue = 0;

        if (count % 2 == 0)
        {
            // count es par, necesitamos obtener los dos elementos del medio, sumarlos y luego dividir por 2
            int middleElement1 = tempArray[(count / 2) - 1];
            int middleElement2 = tempArray[(count / 2)];
            medianValue = (middleElement1 + middleElement2) / 2;
        }
        else
        {
            // count es impar, simplemente obtenemos el elemento medio.
            medianValue = tempArray[(count / 2)];
        }

        return medianValue;
    }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para organizar los números y obtener la mediana y la moda, se puede utilizar el código anterior para calcular la mediana de un arreglo de números enteros. Para obtener la moda de un arreglo, se puede implementar el siguiente código:

    public static int GetMode(int[] array)
    {
        Dictionary<int, int=""> dict = new Dictionary<int, int="">();
    
        // contar la frecuencia de cada número en el arreglo
        foreach (int value in array)
        {
            if (dict.ContainsKey(value))
            {
                dict[value]++;
            }
            else
            {
                dict[value] = 1;
            }
        }
    
        // obtener la moda
        int modeValue = 0;
        int maxCount = 0;
    
        foreach (var pair in dict)
        {
            if (pair.Value > maxCount)
            {
                maxCount = pair.Value;
                modeValue = pair.Key;
            }
        }
    
        return modeValue;
    }
    

    Se pueden llamar estos métodos después de leer los valores de entrada en un arreglo utilizando el código proporcionado en la pregunta. Por ejemplo:

    “`
    int[] a = new int[n];

    // leer los valores de entrada en el arreglo a

    decimal mediana = a.GetMedian();
    int moda = GetMode(a);

    Console.WriteLine(“Mediana: {0}”, mediana);
    Console.WriteLine(“Moda: {0}”, moda);
    “`</int,></int,>

Comments are closed.