elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  matris en cero por medio de int **p
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: matris en cero por medio de int **p  (Leído 2,733 veces)
neo_from_cs_matrix

Desconectado Desconectado

Mensajes: 35


Ver Perfil
matris en cero por medio de int **p
« en: 9 Julio 2011, 02:22 am »


quisiera saber como hacer para poner una matris en cero, pero esta matris se pasa como doble puntero. gracias


Código:
void matrizEnCero_int(int **mat, int filas, int columnas)
{
    /*    como se hace    */
}

Código:
int matris[2][4];

Código:
int main()
{

     matrizEnCero_int((int**)matris, 2, 4);

    for(int f=0;f<2;f++)
for(int g=0;g<4;g++)
cout<<matris[f][g] <<endl;

return 0;
}





En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: matris en cero por medio de int **p
« Respuesta #1 en: 9 Julio 2011, 08:22 am »

Podrías hacerlo así:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void ceros(int **matriz, unsigned filas, unsigned columnas)
  5. {
  6.    signed int i, j;
  7.    for(i = 0; i < filas; i++)
  8.    {
  9.        for(j = 0; j < columnas; j++)
  10.        matriz[i][j] = 0;
  11.    }
  12. }
  13.  
  14. void leer(int **matriz, unsigned int , unsigned);
  15. int main(void)
  16. {
  17.    int filas = 2;
  18.    int columnas = 4;
  19.  
  20.    signed int **matriz, i, j;
  21.  
  22.    if((matriz = malloc(filas * sizeof *matriz)) == NULL)
  23.    return EXIT_FAILURE;
  24.  
  25.    /* Reservar memoria para cada elemento de la matriz : */
  26.    for(i = 0; i < filas; i++)
  27.    if((matriz[i] = malloc(columnas * sizeof *matriz[i])) == NULL)
  28.    return EXIT_FAILURE;
  29.  
  30.    /* Dar valores : */
  31.    for(i = 0; i < filas; i++)
  32.    for(j = 0; j < columnas; j++)
  33.    do
  34.    {
  35.        printf("matriz[%d][%d] : ", i, j);
  36.        fflush(stdout);
  37.    } while(scanf("%d", &matriz[i][j]) != 1);
  38.  
  39.    leer(matriz, filas, columnas);
  40.    ceros(matriz, filas, columnas);
  41.    leer(matriz, filas, columnas);
  42.  
  43.    for(i = 0; i < filas; i++)
  44.    free(matriz[i]);
  45.    free(matriz);
  46.  
  47.    return EXIT_SUCCESS;
  48. }
  49. void leer(int **matriz, unsigned int filas, unsigned columnas)
  50. {
  51.    signed int i, j;
  52.    for(i = 0; i < filas; i++)
  53.    {
  54.        for(j = 0; j < columnas; j++)
  55.        printf("{%d}", matriz[i][j]);
  56.        putchar('\n');
  57.    }
  58. }
  59.  


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: matris en cero por medio de int **p
« Respuesta #2 en: 9 Julio 2011, 12:29 pm »

También podría hacerse con la función memset(matriz, 0, sizeof(matriz)) que está en <string.h>.

Creo que estaría bien hecho de esa forma, si quisieses poner valores negativos no te valdría esta función, porque lo que le pasas para que rellene (en este caso 0) son los bytes de la representación de 0.

Por cierto, ya puestos, se escribe matriZ con Z, no matris xD.

Saludos.
En línea

El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: matris en cero por medio de int **p
« Respuesta #3 en: 9 Julio 2011, 13:31 pm »

En C++ sería algo así:

Código
  1. #include <vector>
  2.  
  3. int main(){
  4.   vector<vector<int> > matriz(filas, vector<int> (columnas, 0));
  5.   return 0;
  6. }
  7.  

Lo que hace es crear un vector de dos dimensiones, que se usa igual que un array de dos dimensiones, que valdria matriz[filas][columnas] y todas son 0.
En línea

neo_from_cs_matrix

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: matris en cero por medio de int **p
« Respuesta #4 en: 9 Julio 2011, 22:48 pm »

señores agradezco sus respuestas pero me parece que la de leo g. es la mas posible, porque yo habia dejado el espacio como para completar dentro de la funcion asi


Código:
void matrizEnCero_int(int **mat, int filas, int columnas)
{
    /*    como se hace    */
}

es decir, la finalidad era acer uso del doble puntero para lograr esto..

En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: matris en cero por medio de int **p
« Respuesta #5 en: 10 Julio 2011, 00:42 am »

señores agradezco sus respuestas pero me parece que la de leo g. es la mas posible
Correcto. Solo debes tener cuidado de implementar la matriz como muestra Leo, utilizando un "int **":
Código
  1. signed int **matriz, i, j;
  2.  
  3. if((matriz = malloc(filas * sizeof *matriz)) == NULL)
  4.   return EXIT_FAILURE;
  5.  
  6. /* Reservar memoria para cada elemento de la matriz : */
  7. for(i = 0; i < filas; i++)
  8.   if((matriz[i] = malloc(columnas * sizeof *matriz[i])) == NULL)
  9.      return EXIT_FAILURE;


Lo que no debes hacer es implementar la matriz utilizando un array de arrays como sugiere tu primer mensaje:
Código
  1. int matris[2][4];


Ya que los tipos de las variables (el array y el parámetro de la función "matrizEnCero_int") son distintos ("int [2][4]" el primero e "int **" el segundo).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Empezar de cero
Análisis y Diseño de Malware
Balldur 3 2,626 Último mensaje 14 Febrero 2011, 16:32 pm
por Balldur
ayuda en vector y matris
.NET (C#, VB.NET, ASP)
fadutra 4 2,129 Último mensaje 1 Julio 2014, 08:45 am
por fadutra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines