Cita de: MAFUS en 3 Diciembre 2018, 20:30 PM
Tu fallo puede estar en esta línea, de hecha en esta línea hay un fallo gordo que suele pasar desapercibido:Código [Seleccionar]}else if (x=true&&(i==n-1)){
Si te fijas asignas true a x: x=true
Para evitarte esto: cuando se evalúa una variable para C o C++ devuelve false si de alguna forma vale 0 (que valga false, 0, NULL, '\0'), para todo lo demás vale true.
Todo esto viene a decir que lo podrías haber escrito:Código [Seleccionar]}else if (x && (i==n-1)){
Hola. He probado a hacer lo que me has dicho, en el else if, y no ha dado resultado. El codigo compila, pero sigue funcionando igual que antes. El código ha quedado así.
Código [Seleccionar]
setClientes buscarCuenta(setClientes variosClientes){
bool x=true;
char comparacionCuenta[11];
int n=variosClientes.numClientes, i=0;
do{
leerCadena("Introduzca la cuenta del cliente que desea buscar ", comparacionCuenta);
for (i=0;i<n;i++){
if (strcmp(variosClientes.Clientes[i].numCuenta, comparacionCuenta)==0){
x==false;
cout<<"La cuenta que ha introducido se corresponde con el cliente "<<variosClientes.Clientes[i].nombre<<endl;
cout<< "Sus datos son..."<<endl;
cout << "\nCliente : " << i;
mostrarCliente( variosClientes.Clientes[ i ] );
}
else if (x &&(i==n-1)){
cout<< "La cuenta no es valida"<<endl;}}
}while (x);
return(variosClientes);
}
Lo que parece pasar es que el
Código [Seleccionar]
x==false;
que está dentro del if, parece que no lo tiene en cuenta, y que al llegar al Código [Seleccionar]
while(x);
, la x tiene el valor de true, cuando en realidad, cumpliendose el if, debería tener valor false.Gracias. Un saludo.