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.
el la parte de }return s;}
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
Cita de: 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
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 !.
¡¡fantásticas explicaciones!!, muchas gracias por toda la ayuda :D
¡un saludo!