Dev - C++ - Ayuda con pasar la dimension de un arreglo 2x2 a la funcion

 
Vista:
sin imagen de perfil
Val: 33
Ha disminuido su posición en 4 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con pasar la dimension de un arreglo 2x2 a la funcion

Publicado por Jorge (24 intervenciones) el 26/10/2020 23:46:53
Bueno en el sig. codigo modifico el arreglo desde una funcion, pero el tamaño del arreglo esta definido y lo tiene que pedir el usuario, pero no se como enviar el tamaño del arreglo, me explico

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
#include <stdio.h>
void llenarMatriz(int numeros[][3]);
main()
{
	int nums[2][3]={0}; // Aqui en lugar de 2 o 3 tienen que ser variables
	llenarMatriz(nums);
	printf("EL NUMERO ES: %d",nums[0][0]);
}
 
void llenarMatriz(int numeros[][T]){
	numeros[0][0]=10;
} // este codigo si funciona
 
#include <stdio.h>
void llenarMatriz(int numeros[][T]);
main()
{
 
        int T=3,A=3;
        int nums[A][T]={0};
	llenarMatriz(nums);
	printf("EL NUMERO ES: %d",nums[0][0]);
}
 
void llenarMatriz(int numeros[][T]){ //segun yo solo se nesesita el 2 valor pero no compila me podrian ayudar
	numeros[0][0]=10;
}
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 Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con pasar la dimension de un arreglo 2x2 a la funcion

Publicado por Alfil (1444 intervenciones) el 27/10/2020 06:33:12
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
#include <stdio.h>
 
void llenarMatriz(int **matriz, int fil, int col);
void imprimirMatriz(int **matriz, int fil, int col);
 
int main()
{
    int fil, col;
 
    printf("\nFilas: ");
    scanf("%d", &fil);
    printf("Columnas: ");
    scanf("%d", &col);
 
    int **nums = new int*[fil];
    for (int i = 0; i < fil; i++)
        nums[i] = new int[col];
 
    llenarMatriz(nums, fil, col);
 
    printf("\nLa matriz es: \n");
    imprimirMatriz(nums, fil, col);
 
    return 0;
}
 
void llenarMatriz(int **matriz, int fil, int col)
{
    for (int i = 0; i < fil; i++)
        for (int j = 0; j < col; j++)
            matriz[i][j] = i + j;
}
 
void imprimirMatriz(int **matriz, int fil, int col)
{
    for (int i = 0; i < fil; i++)
    {
        printf("| ");
        for (int j = 0; j < col; j++)
            printf("%d ", matriz[i][j]);
 
        printf("|\n");
    }
}
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
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con pasar la dimension de un arreglo 2x2 a la funcion

Publicado por Alfil (1444 intervenciones) el 27/10/2020 07:14:52
Cuando las dimensiones de la matriz no son un valor constante conocido previamente por la función que toma la matriz como parámetro, la matriz debe ser definida con memoria dinámica.

En este caso la matriz está definida en C++ (*.cpp), para definirla en C puro (*.c), se utilizaría malloc:

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
int main() {
 
double **myMatrix = NULL;
allocMatrix(&myMatrix, row, col);
funcion(myMatrix, row, col);
deallocMatrix(myMatrix, row);
 
}
 
void allocMatrix(double ***matrix, int row, int col) {
 
    *matrix = (double **)malloc(sizeof(double *) * row);
    for (int i = 0; i < col; i++) {
        *(*matrix + i) = (double *)malloc(sizeof(double) * col);
    }
}
 
void funcion(double **M, int row, int col) { ... }
 
void deallocMatrix(double **matrix, int row) {
    int i = 0;
    for (i = 0; i < row; i++) {
        free(matrix[i]);
    }
    free(matrix);
}
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
sin imagen de perfil
Val: 33
Ha disminuido su posición en 4 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con pasar la dimension de un arreglo 2x2 a la funcion

Publicado por Jorge (24 intervenciones) el 27/10/2020 18:09:42
Lo que pasa es que el tema que veo es almacenamiento estatico eso que tu dices es dinamico bro, yo nesesito el arreglo estatico del main modificarlo desde la funcion, no tengo la sintaxis para hacerlo con uno de dos dimensiones o mas es lo que preciso
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
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con pasar la dimension de un arreglo 2x2 a la funcion

Publicado por Alfil (1444 intervenciones) el 27/10/2020 19:25:16
Se define como dinámico, pero es estático, y es la única forma de pasar una matriz cuya dimensión se desconoce previamente como parámetro.
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