Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Por favor, alguien puede ayudarme con este problema

Estas en el tema de Por favor, alguien puede ayudarme con este problema en el foro de C/C++ en Foros del Web. Estoy desarrollando el siguiente problema: Desarrollar un programa que almacene 15 valores en un vector. Si el usuario introduce un valor repetido, el programa le ...
  #1 (permalink)  
Antiguo 17/06/2010, 18:50
 
Fecha de Ingreso: junio-2010
Ubicación: Ehhh... ¿Alguien podría decirme donde me encuentro o_O???
Mensajes: 39
Antigüedad: 13 años, 10 meses
Puntos: 0
Por favor, alguien puede ayudarme con este problema

Estoy desarrollando el siguiente problema:
Desarrollar un programa que almacene 15 valores en un vector. Si el usuario introduce un valor repetido, el programa le pedirá nuevamente que introduzca un nuevo valor hasta que no sea repetido.


Este es el código que he escrito:
#include<iostream>

using namespace std;

void main()
{
int numeros[15];
int i=0,j=0,k=0,nentrada=0;
int a=0;
bool control, encontrado;
for(i=0;i<=14;i++)
{
cout<<"Ingrese un valor: ";
cin>>nentrada;
while(control=true)
{
for(j=0;j<=14;j++)
{
if(nentrada==numeros[j])
{
encontrado=true;
}
}
if(encontrado)
{
cout<<"Numero repetido. Ingrese un numero nuevo: ";
cin>>nentrada;
}
else
{
numeros[j]=nentrada;
encontrado=false;
control=false;
}
}
}


cout<<"Los números introducidos son: "<< endl;
for(i=0;i<=14;i++)
{
cout<<numeros[i]<<" ";
}
}

Alguien me puede ayudar con este problema. El problema es que siempre me tira el mensaje de repetido, aunque el número introducido no es repetido.
Disculpen la molestia y saludos a todos.

Última edición por raptor_yimm; 17/06/2010 a las 18:57
  #2 (permalink)  
Antiguo 18/06/2010, 12:36
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: Por favor, alguien puede ayudarme con este problema

Ojo:

while(control=true) // esta sentencia siempre es verdadera, no es lo mismo que (control == true)
numeros[j]=nentrada; // Qué pasa si cambias j por i?

Por último, depura tu programa y observa que sucede con las variables "control" y "encontrado".

Saludos.
  #3 (permalink)  
Antiguo 21/06/2010, 23:55
 
Fecha de Ingreso: junio-2010
Ubicación: Ehhh... ¿Alguien podría decirme donde me encuentro o_O???
Mensajes: 39
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Por favor, alguien puede ayudarme con este problema

Gracias figthmx, no lo había notado. Voy a cambiarlo.

Gracias por tu ayuda. Saludos,
  #4 (permalink)  
Antiguo 27/06/2011, 11:05
Avatar de afrika026  
Fecha de Ingreso: junio-2011
Mensajes: 85
Antigüedad: 12 años, 10 meses
Puntos: 19
Respuesta: Por favor, alguien puede ayudarme con este problema

primero antes del while tenes que setear la variable "control=true";

luego "while(control=true)" lo tenes que cambiar a:
"while(control==true)" ó "while(control)"
  #5 (permalink)  
Antiguo 27/06/2011, 14:50
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 7 meses
Puntos: 9
Respuesta: Por favor, alguien puede ayudarme con este problema

Cita:
Iniciado por raptor_yimm Ver Mensaje
Estoy desarrollando el siguiente problema:
Desarrollar un programa que almacene 15 valores en un vector. Si el usuario introduce un valor repetido, el programa le pedirá nuevamente que introduzca un nuevo valor hasta que no sea repetido.


Este es el código que he escrito:
#include<iostream>

using namespace std;

void main()
{
int numeros[15];
int i=0,j=0,k=0,nentrada=0;
int a=0;
bool control, encontrado;
for(i=0;i<=14;i++)
{
cout<<"Ingrese un valor: ";
cin>>nentrada;
while(control=true)
{
for(j=0;j<=14;j++)
{
if(nentrada==numeros[j])
{
encontrado=true;
}
}
if(encontrado)
{
cout<<"Numero repetido. Ingrese un numero nuevo: ";
cin>>nentrada;
}
else
{
numeros[j]=nentrada;
encontrado=false;
control=false;
}
}
}


cout<<"Los números introducidos son: "<< endl;
for(i=0;i<=14;i++)
{
cout<<numeros[i]<<" ";
}
}

Alguien me puede ayudar con este problema. El problema es que siempre me tira el mensaje de repetido, aunque el número introducido no es repetido.
Disculpen la molestia y saludos a todos.

Pues tienes varios errores.

1) while(control=true), esta sentencia siempre será cierta, ya que realizas una asignación, no una comparacion, cambiala por while(control==true), ademas debes hacer la siguiente asignación antes de entrar al while: control=true, ya que si no la haces, después de salir del primer ciclo tu control se vuelve falso y nunca mas entraría a este while.

2) for(j=0;j<=14;j++), con esta condición vaz a hacer comparaciones con basura que hay en la memoria. Cambiala por algo asi for(j=0, j<i; j++)

3) --------

if(encontrado)
{
cout<<"Numero repetido. Ingrese un numero nuevo: ";
cin>>nentrada;
}

----------

Aqui el problema es que cuando entras a esta condición debes reestablecer el valor de encontrado a false. De otra forma siempre obtendras "Numero repetido..." después del primer número repetido que ingreses.

cambialo por algo asi:

if(encontrado)
{
cout<<"Numero repetido. Ingrese un numero nuevo: ";
cin>>nentrada;
encontrado=false;
}

Básicamente son los errores que encontré. Además de que la variable k y la variable a nunca las utilizas, pero eso es lo de menos. espero eso te ayude.

Salu2 ++

Etiquetas: c++, ciclos, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:20.