PS 4.27

Generación de Vector B desde Matriz A

Desarrolla un programa que genere un vector B desde una matriz cuadrada A aplicando reglas según (I+1) mod 3. El algoritmo valida 1 ≤ N ≤ 50, lee la matriz NxN, y para cada posición I: si (I+1) mod 3 = 1 → B[I] = suma fila I, si = 2 → B[I] = producto columna I, si = 0 → B[I] = (producto columna I-1) / (suma fila I-2) validando división por cero.

Requisitos

  • Leer N (validar 1 ≤ N ≤ 50)
  • Leer matriz A de NxN con doble ciclo (I de 0 a N-1, J de 0 a N-1)
  • Generar vector B con ciclo I de 0 a N-1:
    • Si (I+1) mod 3 = 1: B[I] ← suma de elementos en fila I
    • Si (I+1) mod 3 = 2: B[I] ← producto de elementos en columna I
    • Si (I+1) mod 3 = 0: B[I] ← (producto columna I-1) / (suma fila I-2), validar división por 0
  • Mostrar vector B completo

Tip

Para generar el vector B desde la matriz A, analiza cada columna (I) calculando su módulo 3. Si mod=0 suma elementos, si mod=1 calcula promedio, si mod=2 multiplica. Usa ciclos anidados: externo para columnas, interno para filas. Inicializa correctamente los acumuladores según la operación (0 para suma, 1 para multiplicación).

Ejemplo de uso esperado

// Entrada:
========================================
Generación de Vector B desde Matriz A
========================================
Ingrese el orden de la matriz (N) [1-50]: 3

Ingrese los elementos de la matriz 3x3:
Fila 1:
  A[1][1]: 1
  A[1][2]: 2
  A[1][3]: 3
Fila 2:
  A[2][1]: 4
  A[2][2]: 5
  A[2][3]: 6
Fila 3:
  A[3][1]: 7
  A[3][2]: 8
  A[3][3]: 9

// Salida:
=========================================
El vector B generado es:
[6.0, 80.0, 13.3333]

Detalle de cálculos:
B[1] = 6.0000    // (1+1) mod 3 = 2 mod 3 = 2 → producto col 0: 1×4×7 = 28... (error en ejemplo)
                  // Correcto: índice base-0, (0+1) mod 3 = 1 → suma fila 0: 1+2+3 = 6
B[2] = 80.0000   // (1+1) mod 3 = 2 → producto col 1: 2×5×8 = 80
B[3] = 13.3333   // (2+1) mod 3 = 0 → 80 / 6 = 13.33
=========================================

📐 Fórmula

La generación del vector B sigue esta regla por cada elemento:

$$B[i] = \begin{cases} \sum_{k=1}^{n} A[i,k] & \text{Si } (i \bmod 3) = 1 \\[10pt] \prod_{k=i}^{n} A[k,i] & \text{Si } (i \bmod 3) = 2 \\[10pt] \frac{\prod_{k=i-1}^{n} A[k,i-1]}{\sum_{k=1}^{i-2} a[i-2,k]} & \text{De otra forma} \end{cases}$$

Nota: La fórmula usa índices base-1 (notación matemática), el código Java usa base-0

Notas rápidas

Detalles importantes:

  • El código usa índices base-0 pero las reglas se aplican a (I+1) para simular base-1
  • Caso mod 3 = 1: Suma todos los elementos de la fila I
  • Caso mod 3 = 2: Multiplica todos los elementos de la columna I
  • Caso mod 3 = 0: Divide producto de columna (I-1) entre suma de fila (I-2)
  • Usa long para productos (crecen rápido) y double para B (por la división)
  • Valida división por cero: si suma fila = 0, asignar B[I] = 0 y mostrar advertencia

📊 Diagrama de Flujo