Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Retornar arreglo unidimensional desde función

Estas en el tema de Retornar arreglo unidimensional desde función en el foro de C/C++ en Foros del Web. Buenas noches comunidad de forosweb, estoy haciendo un ejercicio que retorne un arreglo de 3 elementos, he leído en el foro que las funciones solo ...
  #1 (permalink)  
Antiguo 04/03/2014, 21:45
 
Fecha de Ingreso: junio-2009
Ubicación: House
Mensajes: 38
Antigüedad: 14 años, 10 meses
Puntos: 1
Retornar arreglo unidimensional desde función

Buenas noches comunidad de forosweb, estoy haciendo un ejercicio que retorne un arreglo de 3 elementos, he leído en el foro que las funciones solo retornan un solo valor, tambien he leido en el foro, que se debe hacer a través de punteros asi que intente con punteros, dándome errores, pensé que uds podrían darme alguna sugerencia de como hacerlo dejo mi parte del código .

Código:
#include <stdio.h>
#include <conio.h>


/*Protop tipo de la función */
int fuc(int a[],int b[]);

main()
{
      
      int x[3],y[3],i,s[3]; /*Declaro arreglos */ 
      
      for (i=0;i<3;i++)
      {
          scanf("%d",&x[i]);
          }   
              for (i=0;i<3;i++)
           {
            scanf("%d",&y[i]);
             } 
 
            s[1]=fuc(x,y); /*Envio argumentos a la funcion FUC*/
            
             for (i=0;i<3;i++)
           {
            printf("%d ",s[i]);
             }
getch();
}

/*Funcion fuc */
int fuc (int a[],int b[])
{
int i,c[3];
  for (i=0;i<3;i++)
    {
        c[i]=a[i]+b[i]; 
        
        }
        return c[i];
    
}
Esta parte del código
Código:
      s[1]=fuc(x,y); /*Envio argumentos a la funcion FUC*/
cuando envió argumentos intente hacerlo con un for dejando el subíndice i, pero envía 9 valores, es decir estoy un poco liado xD algunas sugerencias? Gracias
  #2 (permalink)  
Antiguo 04/03/2014, 22:21
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 11 meses
Puntos: 49
Respuesta: Retornar arreglo unidimensional desde función

Te has liado un poco con tanto arrays y for.

* Para empezar ten en cuenta que la función main es de tipo int, cosas del estándar de C, y como tal hay que declararla con su correspondiente return.

* Por como tienes configurada la llamada a la función, tanto x[i] como y[i] deberían estar dentro del mismo for y son los argumentos de la función.

* La llamada a la función la hace s[i], no s[1] y por lógica dentro del for, el único que realmente hace falta.

* Los argumentos de la función son simples enteros, no arrays y sin for, sobreentendiendo que lo que quieres es que te vaya sumando en cada c[i], que por cierto te lo puedes ahorrar, los valores que le manda la función x[i] e y[i] a través de los argumentos int a y int b.

He aquí una salida:


Cita:

Introduzca componente x[0]:1

Introduzca componente y[0]:2

Introduzca componente x[1]:3

Introduzca componente y[1]:4

Introduzca componente x[2]:5

Introduzca componente y[2]:6

s[0]=3 s[1]=7 s[2]=11
Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. int fuc(int a,int b);
  5.  
  6. int main()
  7. {
  8.     int x[3],y[3],i,s[3]; /*Declaro arreglos */
  9.     for (i=0;i<3;i++)
  10.       {
  11.           printf ("\nIntroduzca componente x[%d]:",i);
  12.           scanf("%d",&x[i]);
  13.           printf ("\nIntroduzca componente y[%d]:",i);
  14.           scanf("%d",&y[i]);
  15.           s[i]=fuc(x[i],y[i]); /*Envio argumentos a la funcion FUC*/
  16.       }
  17.     putchar ('\n');
  18.     for (i=0;i<3;i++)
  19.       printf("s[%d]=%d   ",i,s[i]);
  20.     getch();
  21.     return 0;
  22. }
  23.  
  24. /*Funcion fuc */
  25. int fuc (int a,int b)
  26. {
  27.  return (a+b);
  28. }


¡¡¡Saluditos!!!


Última edición por leosansan; 04/03/2014 a las 22:33
  #3 (permalink)  
Antiguo 05/03/2014, 07:36
 
Fecha de Ingreso: junio-2009
Ubicación: House
Mensajes: 38
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Retornar arreglo unidimensional desde función

Gracias leosansan, ya logre observar que errores tuve también puedo resolver esto a través de punteros cierto? Bueno sin embargo ya solucione lo único que le agregue al código fue un acumulador que sume los 3 arreglos gracias por tu ayuda.

Código:
    #include <stdio.h>
    #include <conio.h>
     
    int fuc(int a,int b);
     
    int main()
    {
        int acum;
        int x[3],y[3],i,s[3]; /*Declaro arreglos */
        acum=0;
        for (i=0;i<3;i++)
          {
              printf ("\nIntroduzca componente x[%d]:",i);
              scanf("%d",&x[i]);
              printf ("\nIntroduzca componente y[%d]:",i);
              scanf("%d",&y[i]);
              s[i]=fuc(x[i],y[i]); /*Envio argumentos a la funcion FUC*/
              acum+=s[i];
          }
        putchar ('\n');
       
                for (i=0;i<3;i++)
                {
             printf("%d +",s[i]);
          }
          printf("La suma total es : %d ",acum);
        getch();
        return 0;
    }
     
    /*Funcion fuc */
    int fuc (int a,int b)
    {
     return (a+b);
    }

Etiquetas: arreglo, ejercicio, funcion, int, retornar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:37.