#include <iostream>
#include <vector>
void cargarMatrizEnEspiral(std::vector<std::vector<int>>& matriz, int n, int m) { int inicioFila = 0, finFila = n - 1;
int inicioColumna = 0, finColumna = m - 1;
int indice = 0;
while (inicioFila <= finFila && inicioColumna <= finColumna) { // Llenar de izquierda a derecha
for (int i = inicioColumna; i <= finColumna; i++) { matriz[inicioFila][i] = indice++;
}
inicioFila++;
// Llenar de arriba hacia abajo
for (int i = inicioFila; i <= finFila; i++) { matriz[i][finColumna] = indice++;
}
finColumna--;
// Llenar de derecha a izquierda
if (inicioFila <= finFila) { for (int i = finColumna; i >= inicioColumna; i--) { matriz[finFila][i] = indice++;
}
finFila--;
}
// Llenar de abajo hacia arriba
if (inicioColumna <= finColumna) { for (int i = finFila; i >= inicioFila; i--) { matriz[i][inicioColumna] = indice++;
}
inicioColumna++;
}
}
}
void imprimirMatriz(const std::vector<std::vector<int>>& matriz) { for (const auto& fila : matriz) { for (int valor : fila) { std::cout << valor << "\t";
}
std::cout << std::endl;
}
}
int main() { int n, m;
std::cout << "Ingrese el número de filas: ";
std::cin >> n;
std::cout << "Ingrese el número de columnas: ";
std::cin >> m;
std::vector<std::vector<int>> matriz(n, std::vector<int>(m));
std::cout << "Ingrese los elementos de la matriz:\n";
for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { std::cout << "Elemento [" << i << "][" << j << "]: ";
std::cin >> matriz[i][j];
}
}
std::vector<std::vector<int>> matrizEspiral(n, std::vector<int>(m));
cargarMatrizEnEspiral(matrizEspiral, n, m);
std::cout << "Matriz en espiral:\n";
imprimirMatriz(matrizEspiral);
return 0;
}