C sharp - Crear dos matrices que deberán ser introducidas por el usuario

 
Vista:

Crear dos matrices que deberán ser introducidas por el usuario

Publicado por Sergio (2 intervenciones) el 16/03/2021 00:02:13
Buenas noches gran comunidad haber que tal véis el programa. Soy nuevo en esto de la programación en C#.

El programa consiste en crear dos matrices que deberán ser introducidas por el usuario. Los pasos a seguir por el programa, serán los siguientes:

Se deberá pedir el número de filas y de columnas que deberá tener la primera matriz
Se deberá pedir el número de filas y de columnas que deberá tener la segunda matriz
El usuario introducirá los elementos de la primera matriz
El usuario introducirá los elementos de la segunda matriz
Se mostrará por pantalla el contenido de la primera matriz
Se mostrará por pantalla el contenido de la segunda matriz
El programa deberá comprobar si las matrices se pueden comparar o no con la siguiente salida por pantalla:
"Las matrices no pueden ser comparadas"
"Las matrices pueden ser comparadas"
Si las matrices pueden ser comparadas, deberán salir los siguientes mensajes por pantalla:
"Las matrices son iguales"
"Las matrices no son iguales"

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 142
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Crear dos matrices que deberán ser introducidas por el usuario

Publicado por dario (28 intervenciones) el 16/03/2021 03:49:23
Hola, a que te refieres cuando dices "comparar'; que las matrices sean del mismo tamano, que las matrices tengan en mismo numero de elementos, o que clase de comparacion.
Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Crear dos matrices que deberán ser introducidas por el usuario

Publicado por Sergio (2 intervenciones) el 16/03/2021 08:02:34
Imagino que sean del mismo tamaño o que tengan el mismo número de variables o elementos. Patino un poco la verdad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis
Val: 50
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Crear dos matrices que deberán ser introducidas por el usuario

Publicado por Luis (15 intervenciones) el 17/03/2021 08:13:43
Como se dejan muchos detalles en el aire, a mi modo de ver:
Dos matrices no son comparables cuando:
1) Su dimensión es distinta
2) El tipo de datos que contienen es distinto.

Atendiendo a todas las salidas de pantalla:
1) Las matrices no pueden ser comparadas: cuando sus dimensiones son distintas o lo son el tipo de datos que contienen.
2) Las matrices pueden ser comparadas: misma dimensión y tipo de datos.
3) Las matrices son iguales: Se cumple 2) y además todos sus elementos son iguales.
4) Las matrices no son iguales: Se cumple 2) pero no tienen sus elementos iguales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis
Val: 50
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Crear dos matrices que deberán ser introducidas por el usuario

Publicado por Luis (15 intervenciones) el 17/03/2021 09:07:11
Una primera aproximación podría ser esta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
    Se deberá pedir el número de filas y de columnas que deberá tener la primera matriz
    Se deberá pedir el número de filas y de columnas que deberá tener la segunda matriz
    El usuario introducirá los elementos de la primera matriz
    El usuario introducirá los elementos de la segunda matriz
    Se mostrará por pantalla el contenido de la primera matriz
    Se mostrará por pantalla el contenido de la segunda matriz
    El programa deberá comprobar si las matrices se pueden comparar o no con la siguiente salida por pantalla:
    "Las matrices no pueden ser comparadas"
    "Las matrices pueden ser comparadas"
    Si las matrices pueden ser comparadas, deberán salir los siguientes mensajes por pantalla:
    "Las matrices son iguales"
    "Las matrices no son iguales"
 */
using System;
 
class lwp_Matrices
{
    static void Main()
    {
 
        bool comparables = false, seguir = true, iguales=false;
        byte i1=0,i2=0,j1=0,j2=0;
 
        while (seguir)
        {
            Console.Write("Nº de filas Matriz 1 -> ");
            i1 = Convert.ToByte(Console.ReadLine());
            Console.Write("Nº de columnas Matriz 1 -> ");
            j1 = Convert.ToByte(Console.ReadLine());
            Console.Write("Nº de filas Matriz 2 -> ");
            i2 = Convert.ToByte(Console.ReadLine());
            Console.Write("Nº de columnas Matriz 2 -> ");
            j2 = Convert.ToByte(Console.ReadLine());
 
            // Comprobar si las matrices son comparables
            if(i1 != i2 || j1 != j2)
            {
                Console.WriteLine("Las matrices no pueden ser comparadas");
            }
            else
            {
                Console.WriteLine("Las matrices pueden ser comparadas");
                comparables = true;
                seguir = false;
            }
        }
 
        // Crear dos matrices
        byte[,] matriz1 = new byte[i1, j1];
        byte[,] matriz2 = new byte[i2, j2];
 
        // Rellenar ambas matrices
        for(byte fil=0;fil<i1;fil++)
        {
            for(byte col = 0; col < j1; col++)
            {
                Console.Write("Matriz 1, elemento [{0},{1}] -> ", fil, col  );
                matriz1[fil,col] = Convert.ToByte( Console.ReadLine() );
                Console.Write("Matriz 2, elemento [{0},{1}] -> ", fil, col);
                matriz2[fil, col] = Convert.ToByte(Console.ReadLine());
            }
        }
 
        // Comparar los elementos de ambas matrices
        for (byte fil = 0; fil < i1; fil++)
        {
            for (byte col = 0; col < j1; col++)
            {
                if (matriz1[fil, col] == matriz2[fil, col])
                    iguales = true;
            }
        }
        if (iguales)
            Console.WriteLine("Las matrices son iguales");
        else
            Console.WriteLine("Las matrices no son iguales");
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 87
Bronce
Ha aumentado su posición en 4 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Crear dos matrices que deberán ser introducidas por el usuario

Publicado por Kabuto (15 intervenciones) el 17/03/2021 11:11:21
Hola, no he probado el código pero creo que esta forma de comparar podría fallar:

1
2
3
4
5
6
7
8
9
// Comparar los elementos de ambas matrices
for (byte fil = 0; fil < i1; fil++)
{
    for (byte col = 0; col < j1; col++)
    {
        if (matriz1[fil, col] == matriz2[fil, col])
            iguales = true;
    }
}

Pues bastaría con que solo los últimos elementos de la matriz fuesen iguales, para que el bool saliera de los bucles con valor true, incluso si todos los demás elementos anteriores eran distintos.

Sería mejor, hacer la pregunta opuesta. Que el bool comenzase con valor true y en cuanto se encontrase un pareja de elementos que no coinciden, cambie a false.

1
2
3
4
5
6
7
8
9
10
// Comparar los elementos de ambas matrices
iguales = true;
for (byte fil = 0; fil < i1; fil++)
{
    for (byte col = 0; col < j1; col++)
    {
        if (matriz1[fil, col] != matriz2[fil, col])
            iguales = false;
    }
}

Así no importaría si la última pareja de elementos a comparar son iguales, eso no hará que el bool cambie a true, si una comparación anterior lo estableció en false.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Luis
Val: 50
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Crear dos matrices que deberán ser introducidas por el usuario

Publicado por Luis (15 intervenciones) el 17/03/2021 12:27:10
Cierto!

Tendríamos pues la variante Kabuto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
 
class lwp_Matrices
{
    static void Main()
    {
 
        bool comparables = false, seguir = true, iguales = true;
        byte i1 = 0, i2 = 0, j1 = 0, j2 = 0;
 
        while (seguir)
        {
            Console.Write("Nº de filas Matriz 1 -> ");
            i1 = Convert.ToByte(Console.ReadLine());
            Console.Write("Nº de columnas Matriz 1 -> ");
            j1 = Convert.ToByte(Console.ReadLine());
            Console.Write("Nº de filas Matriz 2 -> ");
            i2 = Convert.ToByte(Console.ReadLine());
            Console.Write("Nº de columnas Matriz 2 -> ");
            j2 = Convert.ToByte(Console.ReadLine());
 
            // Comprobar si las matrices son comparables
            if(i1 != i2 || j1 != j2)
            {
                Console.WriteLine("Las matrices no pueden ser comparadas");
            }
            else
            {
                Console.WriteLine("Las matrices pueden ser comparadas");
                comparables = true;
                seguir = false;
            }
        }
 
        // Crear dos matrices
        byte[,] matriz1 = new byte[i1, j1];
        byte[,] matriz2 = new byte[i2, j2];
 
        // Rellenar ambas matrices
        for(byte fil = 0; fil < i1; fil++)
        {
            for(byte col = 0; col < j1; col++)
            {
                Console.Write("Matriz 1, elemento [{0},{1}] -> ", fil, col  );
                matriz1[fil,col] = Convert.ToByte( Console.ReadLine() );
                Console.Write("Matriz 2, elemento [{0},{1}] -> ", fil, col);
                matriz2[fil, col] = Convert.ToByte(Console.ReadLine());
            }
        }
 
        // Comparar los elementos de ambas matrices
        for (byte fil = 0; fil < i1; fil++)
        {
            for (byte col = 0; col < j1; col++)
            {
                if (matriz1[fil, col] != matriz2[fil, col])
                    iguales = false;
            }
        }
        if (iguales)
            Console.WriteLine("Las matrices son iguales");
        else
            Console.WriteLine("Las matrices no son iguales");
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar