Recorrer Matriz y vector en C#

Iniciado por dnxs, 13 Septiembre 2015, 21:20 PM

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

dnxs

buenas que tal, tenia una duda con un ejercicio en el cual ingreso una matriz de m(filas) x n(columnas) y después la recorro, cuento la cantidad de ceros de cada columna y los guardo en otro vector paralelo.
Si la cantidad de ceros de una columna es mayor o igual a 2 guardar y mostrar en el vector la cantidad de ceros que hay en esa columna y si es menor a 2 mostrar solamente 0.
se entiende :huh:??
por favor que alguien me oriente lo mejor posible, gracias!

El codigo lo tengo en c# pero si me explican en java o en c++ o con el algoritmo es suficiente.
Saludos!

seryioo

#1
Buenas, normalmente soy yo el que pregunto. Pero gracias a este foro he conseguido aprobar Programación I en la universidad así que te contesto cómo sería el algoritmo.

Voy a tratar de hacer un pseudocódigo:

Código (cpp) [Seleccionar]

//para recorrer la matriz empiezas en la fila cero y compruebas todas las columnas de la fila cero, se incrementa   fila, se vuelven a comprobar las columnas... Teniendo encuenta las dimensiones de la matriz

for(int f=0; f<nFilas; ++f){
 for(int c=0; c<nColumnas; ++c){
  if(matriz[f][c]==0){
     //Guardar en vector[columna] un cero e incrementar a la siguiente posicion.
  }
 }
}
//al final haces una comprobación y recorres el vector para ver la cantidad de ceros guardada y dependiendo de eso muestras lo que quieras en pantalla


DarK_FirefoX

Cita de: dnxs en 13 Septiembre 2015, 21:20 PM
El codigo lo tengo en c# pero si me explican en java o en c++ o con el algoritmo es suficiente.

¿Dónde está?

Ahora, lo que haría fuera lo siguiente:

Código (csharp) [Seleccionar]
int mRows = 10; //Cantidad de filas
int nColumns = 10; //Cantidad de columnas

//Inicializas la matriz
int[,] matrix = new int[mRows, nColumns];

//Inicializas el vector con el tamaño igual a la cantidad de columnas
int[] vector = new int[nColumns];

for(int iColumn = 0; iColumn < matrix.GetLength(1); iColumn++)
{
  int jCounter = 0; //Para contar la cantidad de ceros en la columna
  for(int jRow = 0; jRow < matrix.GetLength(0); jRow++)
  {
    //Si el valor de la matriz en esa posición es igual a 0, entonces incrementamos
    if(matrix[jRow, iColumn] == 0)
      jCounter++;
  }
  //Si el la cantidad de 0 en esa columna es mayor o igual a 2, entonces
  //guardamos ese valor
  if(jCounter >= 2)
    vector[iColumn] = jCounter; //Cada posición del vector representa una
    //columna, su valor representa la cantidad de 0 (de acuerdo a la orden
    //del ejercicio
}

//Devuelves el vector o lo recorres y lo muestras, depende de lo que
//quieras hacer


Espero hayas entendido, así lo haría yo! Cualquier cosa pregunta!

Salu2s