Problema con imprimir diagonales en matriz bidimensional

Iniciado por greenselves, 18 Marzo 2010, 14:13 PM

0 Miembros y 1 Visitante están viendo este tema.

greenselves

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.



Greenselves

Shell Root

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
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

greenselves

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;
      }
Greenselves