Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: greenselves en 18 Marzo 2010, 14:13 PM

Título: Problema con imprimir diagonales en matriz bidimensional
Publicado por: greenselves en 18 Marzo 2010, 14:13 PM
hola! Tengo que hacer un programa en C#, donde coloco un identificador desntro de una tabla de 8*8, y despues imprimir sus 4 diagonales, dentro de la tabla.

es decir

*    *
* *
  A
* *
*    *

tengo hecho esto

      for(i=fila+1; i<8; i++ )
      {
         columna++;
         var[i,columna]='*';
      } // diagonal derecha abajo

donde me imprime la diagonal derecha, hacia abajo,
pero ya que continuo con las otras 3 diagonales, me marca error, al ejecutar.

      for ( i=fila-1; i>=0; i-- )
      {   
         columna++;
         var[i,columna]='*';
      }//diagonal derecha arriba
Dice que me paso del limite del arreglo.

Algun consejo para poder resolver mi problema?

nota: antes de cada ciclo tengo que inicializar nuevamente fila y columna,
porque sino, cada variable viene incrementado antes de entrar a otro ciclo for.

Por su ayuda gracias.



Título: Re: Problema con imprimir diagonales en matriz bidimensional
Publicado por: Shell Root en 18 Marzo 2010, 18:58 PM
Te puede ayudar en algo, conviertelo a C#.
Código (vbnet) [Seleccionar]
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim strMatriz(4, 4) As Integer 'Matriz
        'Seteo de datos dentro de la matriz
        strMatriz(0, 0) = 1
        strMatriz(0, 1) = 2
        strMatriz(0, 2) = 3
        strMatriz(0, 3) = 4
        strMatriz(1, 0) = 5
        strMatriz(1, 1) = 6
        strMatriz(1, 2) = 7
        strMatriz(1, 3) = 8
        strMatriz(2, 0) = 9
        strMatriz(2, 1) = 10
        strMatriz(2, 2) = 11
        strMatriz(2, 3) = 12
        strMatriz(3, 0) = 13
        strMatriz(3, 1) = 14
        strMatriz(3, 2) = 15
        strMatriz(3, 3) = 16

        'Diagonal de Sup-Izq|Inf-Der
        ' 1 2  3  4
        ' 5 6  7  8
        ' 9 10 11 12
        '13 14 15 16

        'Print = 1 6 11 16
        Dim dia1 As String
        For i As Integer = 0 To 3
            For j As Integer = 0 To 3
                If i = j Then
                    dia1 = dia1 & strMatriz(i, j) & " "
                End If
            Next
        Next
        MsgBox(dia1)

        'Diagonal de Sup-Der|Inf-Izq
        ' 1 2  3  4
        ' 5 6  7  8
        ' 9 10 11 12
        '13 14 15 16
        'Print = 4 7 10 13

        Dim dia2 As String
        For i As Integer = 0 To 3
            For j As Integer = 0 To 3
                If (i + j = 2 + 1) Then
                    dia2 = dia2 & strMatriz(i, j) & " "
                End If
            Next
        Next
        MsgBox(dia2)
    End Sub
Título: Re: Problema con imprimir diagonales en matriz bidimensional
Publicado por: greenselves en 19 Marzo 2010, 16:34 PM
ya lo he solucionado, gracias

      for(i=fila+1; i<8; i++ )
      {
         columna++;
         a[i,columna]='*';
      }



      for(i=columna-1; i>=0; i-- )
      {
         fila++;
         a[fila,i]='*';
      }



      for ( i=fila-1; i>=0; i-- )
      {   
         columna++;
         a[i,columna]='*';
      }





   for (i=fila-1; i>=0; i--)
      {   
         columna--;
         if ( columna>=0)
         {
            a[i,columna]='*';
         }
         else
         break;
      }