Devolver un vector en una funcion

Iniciado por d00ze13, 11 Enero 2011, 23:57 PM

0 Miembros y 1 Visitante están viendo este tema.

d00ze13

Hola buenas, necesito para un programa devolver en una funcion un vector a traves de un puntero, os pongo un ejemplo a ver si me podriais ayudar.

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int * divisor(int n)
{
    int vector[10];
    for(int i=0;i<n;i++)
        vector[i]=i;
   
    return vector;
}
int main(void)
{
    int num,*ptr;
    cout<<"Introduce un numero"<<endl;
    cin>>num;
   
    *ptr=divisor(num);
   
    cout<<ptr;
    return 0;
}

leogtz

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int *divisor(int n)
{
    int *vector = new int[n];
    for(int i = 0; i < n; i++)
        vector[i] = i;

    return vector;
}
int main(void)
{
    int num;
    cout<<"Introduce un numero"<<endl;
    cin>>num;

    int *ptr = divisor(num);

    for(unsigned int i = 0; i < num; i++)
    cout << *(ptr + i) << " ";

    return 0;
}
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

d00ze13

#2
Mil gracias Leo ;)
new int[n] que es lo mismo que usar malloc? ahí cuanto estarias reservando? para un int?

bomba1990

new y delte es mas que todo de c++ y malloc para c. hay estarias reservando dependiendo de la variable n que la introduce la persona en el programa.
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

Khronos14

#4
Leo, se te olvidó liberar la memoria al final del programa ;)

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;
int *divisor(int n)
{
   int *vector = new int[n];
   for(int i = 0; i < n; i++)
       vector[i] = i;

   return vector;
}
int main(void)
{
   int num;
   cout<<"Introduce un numero"<<endl;
   cin>>num;

   int *ptr = divisor(num);

   for(unsigned int i = 0; i < num; i++)
    cout << *(ptr + i) << " ";

delete(ptr);
   return 0;
}


Saludos.

leogtz

Cita de: Khronos14 en 12 Enero 2011, 08:27 AM
Leo, se te olvidó liberar la memoria al final del programa ;)


Cierto, una errata mía.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com