¿Cómo se vinculan dos matrices?

votos
1

Estoy en una clase de programación básica, y todo está hecho en pseudo código.

Mi pregunta es esta: ¿cómo se vinculan dos matrices?

Tengo una matriz unidimensional que enumera los nombres de los estudiantes, y tengo una matriz bidimensional que enumera los ocho puntajes más altos de cada estudiante ... todo está bien y excelente, pero ahora necesito ordenar los arreglos de los estudiantes. nombre. Me hurgué en línea y leí el capítulo de libros dos veces, solo menciona brevemente el enlace de dos matrices pero no muestra ejemplos.

Si sirve de ayuda, estamos utilizando sorting de burbujas, y eso es con lo que estoy bastante familiarizado ... Puedo ordenar los nombres, esa es la parte fácil, pero no sé cómo clasificar las calificaciones para que no fuera de servicio

¡Gracias por el aporte!

Sidenote: ¡Lo entendí! Terminé haciendo lo que Greg Hewgill había mencionado. Al poner en mi comentario su sugerencia, comencé a arrojar aleatoriamente líneas de código hasta que esa idea me golpeó ... no se ve bonita (un módulo cambió los nombres, otro para cambiar las calificaciones, y un tercero incluso entonces) para intercambiar las calificaciones individuales de los estudiantes en una matriz multidimensional), pero de hecho parecía funcionar ... no hay manera de probarlo en un idioma, ya que no tengo compilador ni tengo suficiente conocimiento para convertir el pseudo código en código real si Debía descargar uno, ¡pero suena realmente bien en el papel en el que lo escribí!

Como también mencioné en la nota, les agradezco a todos por su visión rápida y útil, de hecho ni siquiera pensé en obtener una respuesta esta noche, ¡gracias a todos de nuevo por toda su ayuda!

Jeffrey

Publicado el 02/12/2008 a las 09:03
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
0

Tu premisa es incorrecta. No deberías tener dos matrices en primer lugar.

Debería tener una matriz de objetos , cada uno de los cuales contiene el nombre de un alumno y sus puntajes:

public class Record
{
    public string Student;
    public int[] Scores;
} 
Respondida el 02/12/2008 a las 09:08
fuente por usuario

votos
1

Lo que puede hacer es lo siguiente: cuando clasifique los nombres y tenga que cambiar dos posiciones, haga el mismo intercambio en la matriz de puntajes. De esta forma, todos los cambios que realice en la matriz de nombres se reflejarán en la matriz de puntajes. Cuando termines, los puntajes estarán en el mismo orden en que están los nombres.

Hay formas más efectivas de hacerlo con diferentes estructuras de datos, como lo mostrarán otros comentarios.

Respondida el 02/12/2008 a las 09:12
fuente por usuario

votos
0

Dos enfoques: primero, al ordenar los nombres, cada vez que intercambies dos nombres, intercambia las filas (o columnas o lo que quieras llamar) de puntajes en las mismas posiciones. Al final, los puntajes deberían estar sincronizados con los nombres.

En segundo lugar, en lugar de ordenar los nombres, cree una tercera matriz que contendrá los índices en cualquiera de las otras dos matrices, inicialmente de 0 a n-1, pero luego ordenada, comparando el nombre [a] y el nombre [b], en lugar de ordenar la matriz de nombres en sí.

Respondida el 02/12/2008 a las 09:18
fuente por usuario

votos
2

Defina una clase de Estudiante simple como esta:

public class Student : IComparable<Student>
{
    public string Name { get; set; }
    public int[] Scores { get; set; }

    #region IComparable<Student> Members

    public int CompareTo(Student other)
    {
        // Assume Name cannot be null
        return this.Name.CompareTo(other.Name);
    }

    #endregion
}

entonces aún más simple

    var students = new[] {
        new Student(){ Name = "B", Scores = new [] { 1,2,3 } },
        new Student(){ Name = "C", Scores = new [] { 3,4,5 } },
        new Student(){ Name = "A", Scores = new [] { 5,6,7 } }
    };

    Array.Sort(students);

hará el trabajo por ti.

Respondida el 02/12/2008 a las 09:40
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more