elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  función que devuelva valores únicos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: función que devuelva valores únicos  (Leído 4,475 veces)
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
función que devuelva valores únicos
« 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

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


En línea

flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: función que devuelva valores únicos
« Respuesta #1 en: 25 Enero 2013, 02:42 am »

el la parte de 
Código:
 }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


En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: función que devuelva valores únicos
« Respuesta #2 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:
Código
  1. #include<iostream>
  2. #include<vector>
  3. #include<cstdlib>
  4. #include<clocale>
  5. using namespace std;
  6.  
  7. int vector_unico (vector <int>& v,int n){
  8.  int i,j,k;
  9.  for( i = 0,k=0; k < n; i++,k++){
  10.      cout<<"Ingrese el "<<i+1<<" numero: ";
  11.      cin>>v[i];
  12.    for( j = i-1; j >=0 ; j--){
  13.      if(v[i] == v[j]){
  14.        i--;break;
  15.      }
  16.    }
  17.  }
  18.  return i;
  19. }
  20.  
  21. int main(){
  22.  setlocale(LC_ALL, "Spanish");
  23.  int i,j,n,e;
  24.  cout<<"¿Cuántos números desea ingresar?: ";
  25.  cin>>n;
  26.  vector<int>v(n);
  27.  i=vector_unico(v,n);
  28.  for( j = 0; j < i; j++)
  29.    cout<<v[j]<<"  ";
  30.  system ("pause");
  31.  return 0;
  32. }
  33.  
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:

Código
  1. #include<iostream>
  2. #include<vector>
  3. #include<cstdlib>
  4. #include<clocale>
  5. using namespace std;
  6.  
  7. int vector_unico (vector <int>& v,int n){
  8.  int i,j,k;
  9.  for( i = 0,k=0; k < n; i++,k++){
  10.      cout<<"Ingrese el "<<i+1<<" numero: ";
  11.      cin>>v[i];
  12.    for( j = i-1; j >=0 ; j--){
  13.      if(v[i] == v[j]){
  14.        i--;break;
  15.      }
  16.    }
  17.  }
  18.  cout<<"Tamaño del vector sin repetidos: "<<i<<endl;
  19.  for( j = 0; j < i; j++)
  20.    cout<<v[j]<<"  ";
  21.  }
  22.  
  23. int main(){
  24.  setlocale(LC_ALL, "Spanish");
  25.  int i,j,n,e;
  26.  cout<<"¿Cuántos números desea ingresar?: ";
  27.  cin>>n;
  28.  vector<int>v(n);
  29.  vector_unico(v,n);
  30.  system ("pause");
  31.  return 0;
  32. }
  33.  
Y ya que estamos, ¿para qué usar una función y la librería vector?. Podríamos hacer:
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include<clocale>
  4. using namespace std;
  5.  
  6. int main () {
  7.    setlocale(LC_ALL, "Spanish");
  8.    int i,j,k,total;
  9.    cout<<"¿Cuántos números desea ingresar?: ";
  10.    cin>>total;
  11.    int numeros[total];
  12.    for( i = 0,k=0; i < total,k < total; i++,k++){
  13.        cout<<"Ingrese el "<<i+1<<" numero: ";
  14.        cin >> numeros[i];
  15.  
  16.        for( j = i-1; j >=0 ; j--){
  17.            if(numeros[i] == numeros[j]){
  18.                i--;break;
  19.            }
  20.        }
  21.    }
  22.  for( j = 0; j < i; j++)
  23.        cout<<numeros[j]<<"  ";
  24.  return 0;
  25. }
  26.  
Saluditos otra vez !.
En línea

indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: función que devuelva valores únicos
« Respuesta #3 en: 26 Enero 2013, 17:24 pm »

¡¡fantásticas explicaciones!!, muchas gracias por toda la ayuda :D

¡un saludo!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
funcion que devuelva 4 parametros
Programación C/C++
mapers 3 4,690 Último mensaje 4 Diciembre 2010, 04:51 am
por mapers
Función que devuelva un array (javascript)
Desarrollo Web
Fox_Neo 5 18,438 Último mensaje 13 Diciembre 2010, 15:31 pm
por Fox_Neo
Función que devuelva un resultado y también: true o false
PHP
pisagatos 5 6,502 Último mensaje 23 Enero 2011, 22:07 pm
por Nakp
Duda sobre un metodo que devuelva tres valores random « 1 2 »
Java
Dyabel03 12 10,096 Último mensaje 13 Marzo 2011, 07:53 am
por .mokk.
Funcion que me devuelva un valor PL SQL
Bases de Datos
Algotrix 1 4,681 Último mensaje 6 Noviembre 2011, 22:50 pm
por Don Pollo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines