C/Visual C - MATRICES EN FORMA DE CARACOL

 
Vista:

MATRICES EN FORMA DE CARACOL

Publicado por gina (3 intervenciones) el 01/09/2001 23:46:05
hola necesecito ayuda para un programa en c++ o en c de las dimensiones que el usuario quiera la matriz y llenarla en forma de caracol se puede en c++ o en c, el usuario introduce numeros enteros para llenar la matriz
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cargar una matriz en forma de caracol con entradas del usuario

Publicado por Alejandro (913 intervenciones) el 11/10/2024 22:28:44
Claro, Gina, aquí tienes un programa en C++ que permite al usuario ingresar las dimensiones de una matriz y luego llenarla en forma de caracol (espiral) con números enteros que el usuario proporciona.

Código en C++



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#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;
}

Explicación del código



1. Función `cargarMatrizEnEspiral`:
- Esta función llena la matriz en forma de espiral, pero en este caso, se llenará con índices en lugar de los números que el usuario ingresa.

2. Función `imprimirMatriz`:
- Imprime la matriz en la consola.

3. Función `main`:
- Solicita al usuario el tamaño de la matriz y los elementos que desea ingresar.
- Luego, llama a la función para llenar la matriz en espiral y la imprime.

Compilación y ejecución



Para compilar y ejecutar el código, puedes usar un compilador como `g++`:

1
2
g++ -o matriz_espiral matriz_espiral.cpp
./matriz_espiral

Ejemplo de salida



Si ingresas 3 filas y 3 columnas y los elementos son:

1
2
3
1 2 3
4 5 6
7 8 9

La salida será:

1
2
3
4
Matriz en espiral:
1	2	3
6	5	4
7	8	9

Nota




El código actual llena la matriz en espiral con índices. Si deseas que la matriz en espiral contenga los números que el usuario ingresó, necesitarías modificar la lógica para que use esos números en lugar de los índices.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar