Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: programador10 en 10 Octubre 2011, 22:29 pm



Título: C++ vector por parametro.
Publicado por: programador10 en 10 Octubre 2011, 22:29 pm

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

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. void leer(int v,int tam);
  4. using namespace std;
  5. int main(int argc, char *argv[])
  6. {
  7.    int v[50],n;
  8.  
  9.    cout<<"Ingresar Tamaño del Vector"<<endl;
  10.    cin>>n;    
  11.    leer(v[50],n);    
  12.    system("PAUSE");
  13.    return EXIT_SUCCESS;
  14. }
  15. void leer(int v[50],int tam)
  16. {
  17.     int i;    
  18.     for (i=0;i<tam;i++)
  19.     {
  20.         cout<<"ingresar dato : "<<endl;
  21.         cin>>v[i];
  22.     }
  23.  
  24. }
  25.  


Título: Re: C++ vector por parametro.
Publicado por: Eternal Idol en 10 Octubre 2011, 22:39 pm
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:
Código:
void leer(int v,int tam);

Linea 15:
Código:
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.

Código:
leer(v, n);


Título: Re: C++ vector por parametro.
Publicado por: programador10 en 10 Octubre 2011, 22:49 pm
ggracias por esas correciones pero aun no  me compila por completo mira :(

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. void leer(int v,int tam);
  4.  
  5. using namespace std;
  6. int main(int argc, char *argv[])
  7. {
  8.    int v[50],n;
  9.  
  10.    cout<<"Ingresar Tamaño del Vector"<<endl;
  11.    cin>>n;    
  12.    leer(v,n);    
  13.    system("PAUSE");
  14.    return EXIT_SUCCESS;
  15. }
  16. void leer(int v,int tam)
  17. {
  18.     int i;      
  19.     for (i=0;i<tam;i++)
  20.     {                    
  21.         cin>>v[i];
  22.     }
  23.  
  24. }
  25.  


Título: Re: C++ vector por parametro.
Publicado por: Eternal Idol en 10 Octubre 2011, 22:54 pm
Lo cambiaste mal, el prototipo estaba mal ... ahora podes ponerlo mejor asi en ambos lugares:

Código:
void leer(int *v,int tam);


Título: Re: C++ vector por parametro.
Publicado por: programador10 en 10 Octubre 2011, 23:00 pm
amigo me falta poner los corchetes....
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. int leer(int v[],int tam);
  5.  
  6. using namespace std;
  7. int main(int argc, char *argv[])
  8. {
  9.    int v[50],n;    
  10.    cout<<"Ingresar Tamaño del Vector"<<endl;
  11.    cin>>n;    
  12.    leer(v,n);    
  13.    system("PAUSE");
  14.    return EXIT_SUCCESS;
  15. }
  16. int leer(int v[],int tam)
  17. {      
  18.     for (int i=0;i<tam;i++)
  19.     {   cout<<"ingrese Dato ";                
  20.         cin>>v[i];
  21.     }
  22.  
  23. }


y ahora si me compila perfecto.


Título: Re: C++ vector por parametro.
Publicado por: Eternal Idol en 10 Octubre 2011, 23:01 pm
Asi si, [] y * son equivalentes.


Título: Re: C++ vector por parametro.
Publicado por: programador10 en 10 Octubre 2011, 23:03 pm
Gracias. :)


Título: Re: C++ vector por parametro.
Publicado por: Eternal Idol en 10 Octubre 2011, 23:06 pm
De nadas  ::)