User Tag List

Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 25

Tema: Paso de matrices a funciones

  1. #1
    Fecha de ingreso
    Jun 2017
    Mensajes
    2
    Agradecer
    0
    Agradecido 0 veces en 0 posts
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)

    Paso de matrices a funciones

    Hola, buenos dias,

    ¿ Alguien podría indicarme que estoy haciendo mal en el siguiente código ? Obtengo resultados diferentes y no veo el fallo. Muchas gracias de antemano.

    void multiply(int a[], int b[]){
    printf("\nTamaño de a = %d\n", (int)(sizeof(a)/sizeof(int)));
    printf("Tamaño de b = %d\n", (int)(sizeof(b)/sizeof(int)));
    }

    int main(int argc, const char * argv[]) {
    int a[] = { 9, 2, 3, 4, 5, 6, 7, 8 };
    int b[] = { 4, 3, 2, 1 };

    printf("sizeof(int)=%lu\n", sizeof(int));

    printf("Tamaño de a = %d\n", (int)(sizeof(a)/sizeof(int)));
    printf("Tamaño de b = %d\n", (int)(sizeof(b)/sizeof(int)));
    multiply(a,b);

    return 0;

    }

  2. #2
    Fecha de ingreso
    Jul 2009
    Mensajes
    8,482
    Agradecer
    746
    Agradecido 354 veces en 263 posts
    Mencionado
    53 Post(s)
    Tagged
    0 Tema(s)
    porque lo que recibe multiply como parametro son punteros no una matriz/array...

    el compilador ya te lo esta diciendo

    array.c: In function ‘multiply’:
    array.c:4:45: warning: ‘sizeof’ on array function parameter ‘a’ will return size of ‘int *’ [-Wsizeof-array-argument]
    printf("\nTamaño de a = %d\n", (int)(sizeof(a)/sizeof(int)));


    -----Actualizado-----

    tienes que incluir el tamaño como parametro... algo asi


    void multiply(int a[], int sza, int b[], int szb)

    ....


    multiply(a,sizeof(a)/sizeof(int),b,sizeof(b)/sizeof(int))




    (aunque yo usaria sizeof(a[0]) en lugar de sizeof(int))
    ...

  3. #3
    Fecha de ingreso
    Jun 2006
    Mensajes
    4,291
    Agradecer
    861
    Agradecido 506 veces en 318 posts
    Mencionado
    34 Post(s)
    Tagged
    0 Tema(s)
    Entradas de blog
    7
    Para empezar, podrías decir cual es el fallo en vez de decir solamente "da un fallo". qué es lo que esperas que salga como resultado? La longitud de los arrays -a- y -b- que estás pasando a la función multiply?

    Yo he probado el código aquí: https://www.jdoodle.com/c-online-compiler y, en la función main, los printf arrojan que la longitud de -a- y -b- valen 8 y 4 respectivamente (hasta ahí correcto,no?).

    Pero los printf de dentro de multiply sacan que la longitud de -a- y -b- vale 2 cada uno (WTF?)

    Lo siento, hace como 12 o 13 años que no toco C y ni me acuerdo ya de cómo se trabajaba con arrays en esa basura caduca de lenguaje. Supongo que es un trabajo de ciclo formativo o algo. Si no, te recomendaría que te olvidases de C y pasases a programación orientada a objetos. Los punteros y demás métodos de tortura satánicos mejor dejarlos como lo que son, algo del pasado que ya no tiene razón de ser.
    Última edición por akualung; 16/06/2017 a las 16:33
    _
    .

  4. #4
    Fecha de ingreso
    Jul 2009
    Mensajes
    8,482
    Agradecer
    746
    Agradecido 354 veces en 263 posts
    Mencionado
    53 Post(s)
    Tagged
    0 Tema(s)
    "caduca"???!!! WTF?
    ...

  5. #5
    Fecha de ingreso
    Jun 2006
    Mensajes
    4,291
    Agradecer
    861
    Agradecido 506 veces en 318 posts
    Mencionado
    34 Post(s)
    Tagged
    0 Tema(s)
    Entradas de blog
    7
    Cita Iniciado por SplinterGU Ver mensaje
    "caduca"???!!! WTF?
    Hombre, no me dirás que el ansi C no es del año de la catapúm. Casi toda la programación en C actual es C#, no?
    _
    .

  6. #6
    Fecha de ingreso
    Feb 2004
    Ubicación
    Madrid
    Mensajes
    22,349
    Agradecer
    1,983
    Agradecido 1,564 veces en 1,010 posts
    Mencionado
    198 Post(s)
    Tagged
    0 Tema(s)
    cojo palomitas sobre todo por la última frase xDDD

  7. Los siguientes 2 usuarios agradecen a ^MiSaTo^ este post:

    Karkayu (16/06/2017),Ñuño Martínez (19/06/2017)

  8. #7
    Fecha de ingreso
    Jul 2009
    Mensajes
    8,482
    Agradecer
    746
    Agradecido 354 veces en 263 posts
    Mencionado
    53 Post(s)
    Tagged
    0 Tema(s)
    Cita Iniciado por akualung Ver mensaje
    Hombre, no me dirás que el ansi C no es del año de la catapúm. Casi toda la programación en C actual es C#, no?
    del año que quieras, pero decir "caduca" es mucho...

    lo demas, ve y decilo a Linus...
    ...

  9. #8
    Fecha de ingreso
    Jun 2006
    Mensajes
    4,291
    Agradecer
    861
    Agradecido 506 veces en 318 posts
    Mencionado
    34 Post(s)
    Tagged
    0 Tema(s)
    Entradas de blog
    7
    Cita Iniciado por ^MiSaTo^ Ver mensaje
    cojo palomitas sobre todo por la última frase xDDD
    Hombre, yo me refiero a los que programan en visual studio. O usas VB o C#. Si haces juegos o otras cosas que se salga del habitual desarrollo de aplicaciones web, entonces sí.

    Bueno, si he ofendido a alguien, lo siento, pasemos página. Respecto al tema principal del post, en esta web hay un ejemplo en C de paso de array a una función y no incluyen el tamaño del array (aunque en este caso es un array de float, no de ints): https://www.programiz.com/c-programm...rays-functions
    Última edición por akualung; 16/06/2017 a las 16:51
    _
    .

  10. #9
    Fecha de ingreso
    Apr 2006
    Mensajes
    10,412
    Agradecer
    1,839
    Agradecido 2,728 veces en 1,288 posts
    Mencionado
    139 Post(s)
    Tagged
    0 Tema(s)
    Entradas de blog
    15
    @akualung, no me seas hereje...


  11. #10
    Fecha de ingreso
    Jun 2004
    Ubicación
    Pinto (MADRID)
    Mensajes
    911
    Agradecer
    3
    Agradecido 56 veces en 38 posts
    Mencionado
    3 Post(s)
    Tagged
    0 Tema(s)
    Esperad que pongo el índice TIOBE. Otra de palomitas.
    https://www.tiobe.com/tiobe-index/

  12. El siguiente usuario agradece a saboteur este mensaje:

    Ñuño Martínez (19/06/2017)

  13. #11
    Fecha de ingreso
    Feb 2004
    Ubicación
    Madrid
    Mensajes
    22,349
    Agradecer
    1,983
    Agradecido 1,564 veces en 1,010 posts
    Mencionado
    198 Post(s)
    Tagged
    0 Tema(s)
    Cita Iniciado por akualung Ver mensaje
    Hombre, yo me refiero a los que programan en visual studio. O usas VB o C#. Si haces juegos o otras cosas que se salga del habitual desarrollo de aplicaciones web, entonces sí.

    Bueno, si he ofendido a alguien, lo siento, pasemos página. Respecto al tema principal del post, en esta web hay un ejemplo en C de paso de array a una función y no incluyen el tamaño del array (aunque en este caso es un array de float, no de ints): https://www.programiz.com/c-programm...rays-functions
    Lo dices como si el 99% de los programadores usaran visual studio, VB y C#. Como si no hubiera nada más en este mundo xDDDDDDD

    No me ofendo tío, pero incluso para programar aplicaciones web (cosa que he hecho durante 6 años de mi vida) no hace falta usar eso. Es más, yo nunca lo he usado xD Y llevo casi 15 años programando profesionalmente.

  14. #12
    Fecha de ingreso
    Jul 2009
    Mensajes
    8,482
    Agradecer
    746
    Agradecido 354 veces en 263 posts
    Mencionado
    53 Post(s)
    Tagged
    0 Tema(s)
    Cita Iniciado por akualung Ver mensaje
    Hombre, yo me refiero a los que programan en visual studio. O usas VB o C#. Si haces juegos o otras cosas que se salga del habitual desarrollo de aplicaciones web, entonces sí.

    Bueno, si he ofendido a alguien, lo siento, pasemos página. Respecto al tema principal del post, en esta web hay un ejemplo en C de paso de array a una función y no incluyen el tamaño del array (aunque en este caso es un array de float, no de ints): https://www.programiz.com/c-programm...rays-functions
    vale, ahora veo que AJMurphy, esta programando paginas webs...

    por otro lado, no me has ofendido... solo que tal afirmacion es erronea...

    y el link que pasaste esos codigos son de listillo, ahi ya sabe el tamaño dentro de la funcion, que gracia tiene eso? no es el caso que pregunta arriba, que por cierto ya respondi que es lo que pasa y como solucionarlo...
    ...

  15. #13
    Fecha de ingreso
    Jun 2006
    Mensajes
    4,291
    Agradecer
    861
    Agradecido 506 veces en 318 posts
    Mencionado
    34 Post(s)
    Tagged
    0 Tema(s)
    Entradas de blog
    7
    Cita Iniciado por SplinterGU Ver mensaje
    vale, ahora veo que AJMurphy, esta programando paginas webs...

    por otro lado, no me has ofendido... solo que tal afirmacion es erronea...

    y el link que pasaste esos codigos son de listillo, ahi ya sabe el tamaño dentro de la funcion, que gracia tiene eso? no es el caso que pregunta arriba, que por cierto ya respondi que es lo que pasa y como solucionarlo...
    Tienes razón, no me había fijado en el bucle donde el tío ha metido ahí, hardcodeado, el tamaño del array que recibe esa función. Pero pregunto, y de ahí lo que he dicho antes de "caduco". si en C le pasas un array a una función (un array que se supone que viene ya con una serie de valores dentro y por lo tanto, ya tendrá un tamaño determinado) por qué has de pasar el tamaño del array como otro parámetro adicional en vez de simplemente sacarlo de alguna manera similar como se hace en programación orientada a objetos con un sencillo arrayQueAcabamosDeRecibir.length()?

    Sí, lo sé: programación orientada a objetos != programación estructurada... Pero aún así. Encuentro muy fuerte que, en C, si pasas un array a una función, "pierdas" su tamaño y por lo tanto lo tengas que enviar como un parámetro adicional porque el sizeof() ya no funciona dentro de la función multiply (cuando en main sí que devuelve bien lso tamaños de -a- y -b-).

    Edito: por si aca, para no ofender más a nadie, que ya veo que están los ánimos caldeados (debe ser el calor, jejeje) he buscado yo mismo https://stackoverflow.com/questions/...-to-a-function
    Última edición por akualung; 16/06/2017 a las 17:12
    _
    .

  16. #14
    Fecha de ingreso
    Jul 2009
    Mensajes
    8,482
    Agradecer
    746
    Agradecido 354 veces en 263 posts
    Mencionado
    53 Post(s)
    Tagged
    0 Tema(s)
    Cita Iniciado por saboteur Ver mensaje
    Esperad que pongo el índice TIOBE. Otra de palomitas.
    https://www.tiobe.com/tiobe-index/
    por cierto, caramba! gracias por el link...

    Nombre:  bennugd.jpg
Visitas: 757
Tamaño: 53.8 KB
    ...

  17. #15
    Fecha de ingreso
    Jan 2010
    Ubicación
    Getxo
    Mensajes
    1,513
    Agradecer
    50
    Agradecido 234 veces en 114 posts
    Mencionado
    6 Post(s)
    Tagged
    0 Tema(s)
    Por cierto... ¿qué es lo que quieres que haga el código? Supongo que hacer algun tipo de multiplicación entre dos arrays... pero ¿como los quieres multiplicar exactamente?

Página 1 de 2 12 ÚltimoÚltimo

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •