PI-ITBA / 2024_02

Consultas 2C 2024
3 stars 0 forks source link

Ej sumar bordes #60

Open ssommerr opened 2 hours ago

ssommerr commented 2 hours ago

Hola! Cómo están? Quería consultar porque no estoy pudiendo arreglar una linea de mi código que basicamente me lo arruina todo; hoy uno de los ayudantes me tiró un tipo para recorrer esto de arriba para abaj como de abajo para arriba al mismo tiempo, que me pareció genial, pero la condición de corte hace que no me funcione perfectamente, ya que en una 6x6 no realiza la ultima suma de las filas, for (int i=0 ; i<n/2 ; i++) { int suma=0; for (int fila=i ; fila<=((n-1-i)/2) ; fila ++) { suma+=v[fila][i]; suma+=v[n-1-fila][i]; suma+=v[n-1-fila][n-1-i]; suma+=v[fila][n-1-i];

}esta es la parte que tengo que arreglar y no sé como, me tirarían algun tip? gracias!!

marcelogarberoglio commented 2 hours ago

No podés sumar las filas y las columnas en el mismo ciclo, porque estás sumando dos veces las esquinas Para sumas las dos filas tendría que ser

  suma = 0;
  for (col=i; col< n-i; col++) {
    suma += v[i][col];   // borde superior
    suma += v[n-i][col];   // borde inferior
 }
 // Ahora las columnas, sin incluir las esquinas
 for(fil=i+1; fil<n-i-1; fil++) {
    suma+=v[fil][i];   // borde izquierdo
    suma+=v[fil][n-i];   // borde derecho
  }
  // ya tengo la suma del elemento i del vector resultado

me parece que esa es la forma más simple, es pasar a código la idea que discutimos hoy en la consulta

ssommerr commented 2 hours ago

Sisi, es que ahí no se están sumando ambas cosas, solo la primer columna, pero como se mueve en filas cuando suma una columna la llame filas, lo que hace es moverse en las dos columnas que tiene que sumas al mismo tiempo, y a su misma vez sumando la mitad de arriba y la mitad de abajo al mismo tiempo. Lo que hice funciona ok, hasta que toca sumar las ultimas filas que ahí se rompe porque por ejemplo si tengo una matriz de 6x6 cuando tenga i=2 me qieda fila=2 pero fila<=(6-1-2)/2 que es 1 por que lo redondea. Sé que puedo hacerlo sin estar sumando de arriba para abajo al mismo tiempo y recorrer todas las filas de una vez y listo, pero me pareció interesante el tip que me tiró y quería ver que podía cambiar de la condición para que sirviese

ssommerr commented 2 hours ago

Si preferis te mando el código entero, lo único es que no modularice porque al haber un ciclo de i que encerraba a filas y columnas decidi dejarlo todo en una función