Devolver un arreglo o vector desde una funcion.

Iniciado por MartNahuel95, 10 Junio 2016, 03:54 AM

0 Miembros y 2 Visitantes están viendo este tema.

MartNahuel95

Tengo creada una función que ordena un arreglo de forma ascendente.
Ahora necesito que esa función me regrese el arreglo ordenado para seguir usándolo en el main().

#include<stdio.h>

  int ordenar_vector(int V[],int a){
    int aux=0,i,j;
  for(i=0; i<a; i++){
for(j=0; j<a-1; j++){
if(V[j]>V[j+1]){
        aux=V[j];
V[j]=V[j+1];
V[j+1]=aux;
}
}
  }

  }


int main(){
int L=0;
printf("\nCuantos elementos desea que tengo el vector:");
scanf("%d",&L);
int V[L];
printf("\n\nIngrese los elementos del vector:\n");
for(int i=0;i<L;i++){
scanf("%d",&V[i]);
}


}


Esto no funciona simplemente poniéndole un return V al final de la función y guardar en el main() asi:
int vector_ordenado[L];
vector_ordenado=ordenar_vector(V[],L);

MartNahuel95

#1
ouch, lo siento mucho, ya pude solucionarlo. No sé si algún moderador puede eliminar el tema o?.

En todo caso, dejo el código solucionado (a alguien le servirá):

#include<stdio.h>

int* ordenar_vector(int V[],int a){
 int aux=0,i,j;
 for(i=0; i<a; i++){
for(j=0; j<a-1; j++){
if(V[j]>V[j+1]){
       aux=V[j];
V[j]=V[j+1];
V[j+1]=aux;
}
}
}
return V;
 }


int main(){
int L=0;
printf("\nCuantos elementos desea que tengo el vector:");
scanf("%d",&L);
int V[L];
printf("\n\nIngrese los elementos del vector:\n");
for(int i=0;i<L;i++){
scanf("%d",&V[i]);
}

int *Z=ordenar_vector(V,L);
for(int i=0;i<L;i++){
printf("%d",Z[i]);
}

}


De igual manera, me gustaría entender ¿por qué tuve que poner el asterisco de puntero luego del int en mi función y declarar mi variable Z como puntero?

engel lex

no es renecesario el return, recomiendo leer un poco mas sobre c... cuando pasas array a una funcion pasas la dirección de momeria (se pasa por referencia) así que lo que haga la funcion afecta al array pasado

ej en c++
Código (cpp) [Seleccionar]
#include<iostream>
void cambiar(int V[], int e){
int i;
for (i=0;i<e;i++)
V[i]*=7;
}


int main(){
 int V[10];
 int i;
 for (i=0;i<10;i++)
  V[i]=i;

 for (i=0;i<10;i++)
  std::cout << V[i] << std::endl;

 cambiar(V,10);  
 for (i=0;i<10;i++)
  std::cout << V[i] << std::endl;


}





y no, no se tiene que eliminar el tema... el foro no es un sistema de atención al cliente... es un registro de conocimientos para que cualquiera con dudas similares consiga en internet y pueda ver información al respecto
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.