Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: luispad en 11 Enero 2020, 12:42 PM

Título: retornar varios arreglos
Publicado por: luispad en 11 Enero 2020, 12:42 PM
hola, tengo un inconveniente, como puedo retornar varios arreglos, tengo este ejercicio
int datos_candidatos(int i)
{
int id[10];
int voto[10],colab[10],edad[10];
char candidato[10];
char* nomCan[10];
char dato;
     printf("Ingrese nombre del candidato:");
      scanf("%s",&candidato);      
      nomCan =(char*)malloc(strlen(candidato)+1);
      strcpy(nomCan ,candidato);
      printf("Ingrese edad:");
      scanf("%d",&edad );
      printf("Ingresen numero de colaboradores de candidatura \n");
      scanf("%d",&colab );      
     
     
      return(nomCan ,edad ,colab );
}

int main()
{
int num,num2,num3;
int edad[10],colab[10];
int id[10],i;
int voto[10],votacion[10];
char candidato[10];
char* nomCan[10];
i=0;
do{

printf("1. INGRESO DATOS CANDIDATOS \n");
printf("2. SALIR\n");
printf("ELIJA UNA OPCION [1-5]\n");
scanf("%d",&num);
switch(num){
   case 1:
       id =i;
      (nomCan , edad ,colab )=datos_candidatos(i);
      voto=0;
      i++;
      break;
   case 2:
          break;
   default:
       printf("La opcion ingresada es incorrecta\nvuelva a ingresarlo\n");
       break;    
}
}
while(num!=2);
   system("pause");
   return 0;
}
Título: Re: retornar varios arreglos
Publicado por: CalgaryCorpus en 11 Enero 2020, 17:53 PM
Define una struct/clase
Devuelve un array de objetos de ese tipo.
Título: Re: retornar varios arreglos
Publicado por: @XSStringManolo en 11 Enero 2020, 17:56 PM
Si son pocos yo suelo pasar el array en el parámetro de la función por referencia.

PD: Utiliza las etiquetas Geshi para postear código coloreado en el foro.
printf("Ingrese edad:");
scanf("%d",&edad );
Título: Re: retornar varios arreglos
Publicado por: K-YreX en 11 Enero 2020, 18:01 PM
Coloca el código entre etiquetas de Código GeSHi... :rolleyes: :rolleyes:

Los arrays también puedes pasarlos como parámetros (exactamente lo que pasas es un puntero al array) y modificarlos en la función. Además no viene mal recalcar que no es necesario pasarlos por referencia a no ser que vayas a reservar/liberar memoria.


void f(int *numeros, int size){
  for(int i = 0; i < size; ++i)
    numeros[i] = i;
}

int main(){
  int numeros[10];
  f(numeros, 10);
  // Mostrar array numeros. Salida: 0 1 2 3 4 5 6 7 8 9
}