C++ vector por parametro.

Iniciado por programador10, 10 Octubre 2011, 22:29 PM

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

programador10


hola buenas tardes.  NO COMPRENDO PORQUE no compila :( ... obs. no me sale ningun error. gracias POR SU AYUDA.

Código (cpp) [Seleccionar]
#include <cstdlib>
#include <iostream>
void leer(int v,int tam);
using namespace std;
int main(int argc, char *argv[])
{
    int v[50],n;
   
    cout<<"Ingresar Tamaño del Vector"<<endl;
    cin>>n;   
    leer(v[50],n);     
    system("PAUSE");
    return EXIT_SUCCESS;
}
void leer(int v[50],int tam)
{
     int i;   
     for (i=0;i<tam;i++)
     {
         cout<<"ingresar dato : "<<endl;
         cin>>v[i];
     }
     
}

Eternal Idol

1) El prototipo de la funcion y la definicion no coinciden en sus tipos, por eso este programa compila pero no enlaza al no encontrar la funcion que reciba como parametro dos enteros.

Linea 3:
void leer(int v,int tam);

Linea 15:
void leer(int v[50],int tam)

2) Si lo que queres pasar es un array entonces no podes pasar v[50] al llamar a la funcion (que por otra parte seria erroneo, al tener 50 elementos el array estos van de 0 a 49), tenes que pasar v simplemente.

leer(v, n);
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

programador10

ggracias por esas correciones pero aun no  me compila por completo mira :(

Código (cpp) [Seleccionar]
#include <cstdlib>
#include <iostream>
void leer(int v,int tam);

using namespace std;
int main(int argc, char *argv[])
{
    int v[50],n;
   
    cout<<"Ingresar Tamaño del Vector"<<endl;
    cin>>n;     
    leer(v,n);     
    system("PAUSE");
    return EXIT_SUCCESS;
}
void leer(int v,int tam)
{
     int i;     
     for (i=0;i<tam;i++)
     {                   
         cin>>v[i];
     }
     
}

Eternal Idol

Lo cambiaste mal, el prototipo estaba mal ... ahora podes ponerlo mejor asi en ambos lugares:

void leer(int *v,int tam);
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

programador10

amigo me falta poner los corchetes....
Código (cpp) [Seleccionar]
#include <cstdlib>
#include <iostream>

int leer(int v[],int tam);

using namespace std;
int main(int argc, char *argv[])
{
    int v[50],n;   
    cout<<"Ingresar Tamaño del Vector"<<endl;
    cin>>n;     
    leer(v,n);     
    system("PAUSE");
    return EXIT_SUCCESS;
}
int leer(int v[],int tam)
{     
     for (int i=0;i<tam;i++)
     {   cout<<"ingrese Dato ";                 
         cin>>v[i];
     }
     
}



y ahora si me compila perfecto.

Eternal Idol

Asi si, [] y * son equivalentes.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón


Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón