Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/06/2011, 14:50
Trovaz
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 11 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 ++