Ver Mensaje Individual
  #8 (permalink)  
Antiguo 28/02/2014, 18:32
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 3 meses
Puntos: 38
Respuesta: Error con una función

para que una funcion "retorne" mas de un parámetro y lo digo entre comillas por que en realidad no lo retorna, debes utilizar acción envés de función.
Con una acción le puedes pasar varios parámetros y te los "retorna" cuantos quieras.
¿Como es eso de acción?
Te dejo aquí la explicación:
http://www.youtube.com/watch?v=1lk3hMqk0Tw
https://www.youtube.com/watch?v=cicFrj4TRJ0
https://www.youtube.com/watch?v=8g9bdT005a8

Si haces return la función se detiene ahí justo en el return, pero si envés de devolver con return usas punteros o referencias puedes "retornar" mas de un valor.
En realidad no se retorna nada sino que la operación se realiza sobre los mismos valores que pasas por parámetros como punteros.
Un puntero es una simples variable que dice donde esta guardada otra variable en la memoria.
Vemos como es esto y veras que si se puede hacer tal como lo planeabas XD

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. /*prototipo de accion*/
  5. void hazlo ( char * a, char * b, char * c, float * z, float * x, float * w );
  6.  
  7. main() {
  8.     char  a, b, c; /*las variables donde guardamos los char*/
  9.     float z, x, w; /*las variables donde guardaremos abc despues de convertirlas a float*/
  10.     printf ( "\nIngrese 3 letras " );
  11.     scanf ( "%c%c%c", &a, &b, &c );
  12.     /*A la accion le enviamos a, b y c. Los convertira en float y los guardara en z,x y w  todo es usando punteros y no return*/
  13.     hazlo ( & a, &b, &c, &z, &x, &w );
  14.  
  15.     printf ( "\n Valores: \nfloat a: %.2f \nfloat b: %.2f \nfloat c: %.2f ", z, x, w );
  16.     getch();
  17. }
  18.  
  19. //accion
  20. void hazlo ( char * a, char * b, char * c, float * z, float * x, float * w ) {
  21.     *z=((float)*a); // hacemos un cast de char a float(convercion)
  22.     *x=((float)*b); // hacemos un cast de char a float(convercion)
  23.     *w=((float)*c); // hacemos un cast de char a float(convercion)
  24. }

como ves aqui hay cosas que quizas no ayas visto, cosas como * y &, eso es tema de punteros.

Los temas implicados son punteros y acción, también esta la referencia pero me parece que solo para cpp.
Si aun eres muy nuevo a la programación creo que punteros es un tema escabroso y debes tomarlo con calma.
La potencia de los punteros es ilimitada pero no lo debes tomar a la ligera.
Si sigues alguna clase de cursos en libro o algo sigue el ritmo del libro y no avances hasta tener claro el tema actual.
Si te sientes preparado para punteros en la misma pagina de los vídeos que te envié tienes vídeos sobre punteros.
Son sobre cpp pero los punteros son lo mismo en c o cpp, a lo mejor allí para mostrar algo por pantalla el usa cout, pero tu lo haces con printf ;)
O mejor solo mire la teoría y programes como sabes hacer.
Cosas como funciones, punteros, tablas son lo mismo o cambia muy poco.
Los vídeos son solo para que entiendas que es una acción, lo mejor es que sigas con tu libro o lo que sea XDD
Suerte.

Última edición por vangodp; 28/02/2014 a las 18:38