Título: función que devuelva valores únicos
Publicado por: indict en 24 Enero 2013, 22:19 pm
Hola, como harías una función que devuelva los números no repetidos, v= 1 , 2 , 3 , 3 , 7 , 8 , 7 devuelva 1 , 2 , 3 , 7 , 8 #include<iostream> #include<vector> #include<cstdlib> using namespace std;
vector <int> vector_unico (vector <int>& v){ int i=0; int j=v.size()-1; int s=0; while(i<j){ if(v[i++]!=v[j--]){s=s+v[i];} }return s;}
int main(){ int n,i,e; cout<<" muestre el tamaño "; cin>>n; vector<int>v(n); for(i=0;i<n;i++){ cout<<" el elemento "<<i<<" ... "; cin>>e; v[i]=e;} cout<<vector_unico(v)<<endl; system ("pause"); return 0;}
Lo que intento es recorrer todo el vector con dos contadores y que acumule los valores que están repetidos más de una vez.
Título: Re: función que devuelva valores únicos
Publicado por: flony en 25 Enero 2013, 02:42 am
el la parte de recorda que s es un int y que la función devuelve un vector ... nunca probé devolver un vector...no se si se puede o no..intentaria que sea una funcion void
Título: Re: función que devuelva valores únicos
Publicado por: leosansan en 25 Enero 2013, 15:49 pm
Hola,
como harías una función que devuelva los números no repetidos,
v= 1 , 2 , 3 , 3 , 7 , 8 , 7 devuelva 1 , 2 , 3 , 7 , 8
Fíjate, como indica flony, que la función si va a devolver un int tiene que ser del tipo int, no vector. Pero en realidad no hace falta que devuelva nada, ya que los arrays se pasan por referencia y su valor en la función valen en el main. Otra cosa es el valor de la variable i de la función, que lo necesito y es el que retorno:#include<iostream> #include<vector> #include<cstdlib> #include<clocale> using namespace std; int vector_unico (vector <int>& v,int n){ int i,j,k; for( i = 0,k=0; k < n; i++,k++){ cout<<"Ingrese el "<<i+1<<" numero: "; cin>>v[i]; for( j = i-1; j >=0 ; j--){ if(v[i] == v[j]){ i--;break; } } } return i; } int main(){ setlocale(LC_ALL, "Spanish"); int i,j,n,e; cout<<"¿Cuántos números desea ingresar?: "; cin>>n; vector<int>v(n); i=vector_unico(v,n); for( j = 0; j < i; j++) cout<<v[j]<<" "; system ("pause"); return 0; }
Saluditos!. Aunque podría no retornar nada e imprimir desde la función, teniendo en cuenta que el vector lo tienes disponible en main para cualquier otra operación:#include<iostream> #include<vector> #include<cstdlib> #include<clocale> using namespace std; int vector_unico (vector <int>& v,int n){ int i,j,k; for( i = 0,k=0; k < n; i++,k++){ cout<<"Ingrese el "<<i+1<<" numero: "; cin>>v[i]; for( j = i-1; j >=0 ; j--){ if(v[i] == v[j]){ i--;break; } } } cout<<"Tamaño del vector sin repetidos: "<<i<<endl; for( j = 0; j < i; j++) cout<<v[j]<<" "; } int main(){ setlocale(LC_ALL, "Spanish"); int i,j,n,e; cout<<"¿Cuántos números desea ingresar?: "; cin>>n; vector<int>v(n); vector_unico(v,n); system ("pause"); return 0; }
Y ya que estamos, ¿para qué usar una función y la librería vector?. Podríamos hacer:#include <iostream> #include <cstdlib> #include<clocale> using namespace std; int main () { setlocale(LC_ALL, "Spanish"); int i,j,k,total; cout<<"¿Cuántos números desea ingresar?: "; cin>>total; int numeros[total]; for( i = 0,k=0; i < total,k < total; i++,k++){ cout<<"Ingrese el "<<i+1<<" numero: "; cin >> numeros[i]; for( j = i-1; j >=0 ; j--){ if(numeros[i] == numeros[j]){ i--;break; } } } for( j = 0; j < i; j++) cout<<numeros[j]<<" "; return 0; }
Saluditos otra vez !.
Título: Re: función que devuelva valores únicos
Publicado por: indict en 26 Enero 2013, 17:24 pm
¡¡fantásticas explicaciones!!, muchas gracias por toda la ayuda :D
¡un saludo!
|