Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

Funciones, como hacer un puntero a matriz

Participa en el tema Funciones, como hacer un puntero a matriz en el foro Programación.
Disculpen si ya existe uno asi que seguro que si ando medio apurado xq no ...

Buscar en este tema:
1 2 >
 
  •  
    1 links from elsewhere to this Post. Click to view. #1 Funciones, como hacer un puntero a matriz
    Disculpen si ya existe uno asi que seguro que si ando medio apurado xq no llego, queria hacerles una consulta me olvide completamente como pasar matrices a funciones como parametros, nesesito hacer una funcion que reciba una matriz y la transponga.

    El codigo seria asi sin que haga nada, como seria que haga los cambios en la matriz del programa principal usando punteros?

    #include <stdio.h>
    #include <conio.h>
    #define n 4 /* ORDEN */

    void transponer(int [n][n]);

    void main()
    {
    int m[n][n];

    for(unsigned C=0; C<n ; C++ )
    for(unsigned F=0; F<n; F++ )
    m[F][C]=F;

    puts("Matriz original.");
    for(unsigned C=0; C<n ; C++ )
    {
    puts("\n");
    for(unsigned F=0; F<n; F++ )
    printf("%d ",m[F][C]);
    }

    transponer(m);

    puts("\n\nMatriz transpuesta.");
    for(unsigned C=0; C<n ; C++ )
    {
    puts("\n");
    for(unsigned F=0; F<n; F++ )
    printf("%d ",m[F][C]);
    }

    getch();
    }


    void transponer(int m[n][n])
    {
    int aux;

    for(unsigned C=0; C<n ; C++ )
    for(unsigned F=0; F<n; F++ )
    {
    aux=m[F][C];
    m[F][C]=m[C][F];
    m[C][F]=aux;
    }
    }
    +
     
    0
    Me gusta
     
    http://www.psicofxp.com/forums/programacion.313/916601-funciones-como-hacer-un-puntero-matriz.html
    | Más
  • #2 Re: Funciones, como hacer un puntero a matriz

    proba asi void transponer(int ** m)
    Me gusta este mensaje
  • #3 Re: Funciones, como hacer un puntero a matriz

    no funciona :S
    Me gusta este mensaje
  • #4 Re: Funciones, como hacer un puntero a matriz

    Proba asi void transponer(int m[][])
    Me gusta este mensaje
  • #5 Re: Funciones, como hacer un puntero a matriz

    La primera dimensión, en realidad, no se usa en la rutina, pero la segunda (en general todas las demás) es indispensable, y debe ser constante, como en tu ejercicio. O sea que en principio está bien, aunque se puede omitir la primera dimensión:
    trasponer(int m[][N])
    N debe ser constante, o sea #define N 4
    (usar mayúsculas para las constantes es sólo una convención, pero resulta útil)
    o directamente
    trasponer (int m[][4])
    No tengo tiempo ahora para verificar el resto del ejercicio.
    PD: te faltó el nombre de la variable en los parámetros: int m[][n]
    Editado por Kryptonyte - 28.04.2009 10:56 hs.
    Me gusta este mensaje
  • #6 Re: Funciones, como hacer un puntero a matriz

    mira yo la que me se ahora si que en "C el dios por dios" -> (funcion recursiva) jejeje es primero reservar la memoria depues pasas a la funcion como si nada la pasaas asi
    void tufuncion( int ** k)
    asi lo pasas y por si no me entendiste te paso un codigo que yo ice jejeje se be mejor -- -- -- --asi que geck es esto
    /----------------------------------------------------------------------------------------------------------------------------/
    / Saeros /
    /__________________________________________________ ____________________/
    #include <stdio.h>
    #include <stdlib.h>
    void fun(int **a){
    printf("hola %d",a[0][0]);
    }

    int main(){
    int i,k=2;
    int **b;
    b=malloc(k * sizeof(int *));
    for(i=0;i<k;i++)
    b[i]=malloc(k * sizeof (int *));
    b[0][0]=10;
    fun(b);


    }

    happy : dbruxa:
    Editado por saeros - 29.04.2009 18:13 hs. | Motivo: aaa lacage al escribir y queria ponerle caritas
    Me gusta este mensaje
  • #7 Re: Funciones, como hacer un puntero a matriz

    Originalmente publicado por saeros Ver mensaje
    mira yo la que me se ahora si que en "C el dios por dios" -> (funcion recursiva) jejeje es primero reservar la memoria depues pasas a la funcion como si nada la pasaas asi
    void tufuncion( int ** k)
    asi lo pasas y por si no me entendiste te paso un codigo que yo ice jejeje se be mejor -- -- -- --asi que geck es esto
    /----------------------------------------------------------------------------------------------------------------------------/
    / Saeros /
    /__________________________________________________ ____________________/
    #include <stdio.h>
    #include <stdlib.h>
    void fun(int **a){
    printf("hola %d",a[0][0]);
    }

    int main(){
    int i,k=2;
    int **b;
    b=malloc(k * sizeof(int *));
    for(i=0;i<k;i++)
    b[i]=malloc(k * sizeof (int *));
    b[0][0]=10;
    fun(b);


    }

    happy :ba nned:
    Por Dios y por Satanás,

    Eso no es lo que quiere hacer el hombre!!!
    Así sólo va a andar bien con una matriz de un solo elemento.
    Probá con matrices de dimensiones variables, y vas a ver que si en la función no declarás int m[][N], el programa no va a funcionar, porque no va a tomar los elementos en el orden correcto.
    Editado por Kryptonyte - 29.04.2009 21:51 hs.
    Me gusta este mensaje
  • #8 Re: Funciones, como hacer un puntero a matriz

    hombre falta de imaginacion creo yo, si es que sabes programar te daras cuenta por que la matriz ya la manejas a tu antojo no te voy hacer todo el codigo si no sabes programar a volar por que no es pa que postes el solo queria ayuda yo se la di pero bueno Kryptonyte si no es de tu agrado mira que pudiste haver dado una mejor respuesta bueno si es que la tienes y amigo si no saves que es reservar memoria echale andar que te falta
    Editado por saeros - 30.04.2009 00:50 hs.
    Me gusta este mensaje
  • #9 Re: Funciones, como hacer un puntero a matriz

    Originalmente publicado por saeros Ver mensaje
    hombre falta de imaginacion creo yo, si es que sabes programar te daras cuenta por que la matriz ya la manejas a tu antojo no te voy hacer todo el codigo si no sabes programar a volar por que no es pa que postes el solo queria ayuda yo se la di pero bueno Kryptonyte si no es de tu agrado mira que pudiste haver dado una mejor respuesta bueno si es que la tienes y amigo si no saves que es reservar memoria echale andar que te falta
    ¿Cómo no voy a saber lo que es reservar memoria? Lo que pasa es que el programa que posteó no lo necesita.
    El programa estaba casi correcto. Lo único que le faltaba es la pequeña correción que posteé. Quedaría así:

    #include <stdio.h>
    #include <conio.h>
    #define n 4 /* ORDEN */

    void transponer(int m[][n]);

    void main()
    {
    int m[n][n];

    for(unsigned C=0; C<n ; C++ )
    for(unsigned F=0; F<n; F++ )
    m[F][C]=F;

    puts("Matriz original.");
    for(unsigned C=0; C<n ; C++ )
    {
    puts("\n");
    for(unsigned F=0; F<n; F++ )
    printf("%d ",m[F][C]);
    }

    transponer(m);

    puts("\n\nMatriz transpuesta.");
    for(unsigned C=0; C<n ; C++ )
    {
    puts("\n");
    for(unsigned F=0; F<n; F++ )
    printf("%d ",m[F][C]);
    }

    getch();
    }


    void transponer(int m[][n])
    {
    int aux;

    for(unsigned C=0; C<n ; C++ )
    for(unsigned F=0; F<n; F++ )
    {
    aux=m[F][C];
    m[F][C]=m[C][F];
    m[C][F]=aux;
    }
    }

    Ahora, lo que vos escribiste no le va a andar, por más que complete el código. Cuando usás memoria dinámica, si en la función tenés, por ejemplo:

    void transponer(int m[][n])

    o

    void transponer (int m[n][n])

    n no puede ser una variable, por ejemplo global: int n = 10; otra variante:

    void transponer (int n, int m[][n])

    porque el compilador no te lo acepta, por muy buenas razones.

    Y si vos usás memoria dinámica, es justamente para poder tener matrices de tamaño variable.

    Probalo y me contás.
    Me gusta este mensaje
  • #10 Re: Funciones, como hacer un puntero a matriz

    bueno yo dicierno de lo que dices pero cadaquien con su nivel de programacion no!!!!!!!!!!
    Me gusta este mensaje
1 2 >
Estás en: Inicio >> Foros >> Informática >> Programación

LinkBacks: http://www.psicofxp.com/forums/programacion.313/916601-funciones-como-hacer-un-puntero-matriz.html


Estadísticas del tema
  • 10 RESPUESTAS
  • 903 VISTAS
  • 5 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB