Tengo un pequeño problema. Tenía un programa que funcionaba, y cerré el ordenador y dejó de funcionar, no se por que. Quizás toqué algo y no me di cuenta. De todas formas, por mucho que miro el código no consigo ver el error. De hecho el código compila, pero no entra dentro del primer if, por mucho que la condición se cumpla. Aquí les dejo el código.
Código:
int menu3(){//menu asociado a la funcion de modificar los datos//
{
int opcion3;
cout <<"¿Que desea modificar?";//no he incluído la fecha ya que cuando alguien va a modificar sus datos, es porque ya está dado de alta, entonces la fecha no es un dato que se pueda modificar//
do{
cout <<"\n1. Nombre";
cout << "\n2. DNI";
cout << "\n3. Domicilio";
cout << "\n4. Numero de cuenta";
cout << "\n5. Tipo de cuenta";
cout << "<\n6. Salir";
opcion3=leerEntero ("\nOpcion: ");
}while (opcion3<1 || opcion3>6);
return opcion3;
}
}
setClientes modificarDatos(setClientes variosClientes){
int menu3();
bool x=true;
char comparacionDNI[10];
char t[7]="ahorro";
char p[10]="corriente";
int longitud=9, longitud1=10, opcion3;
int n=variosClientes.numClientes, i=0;
leerCadena("Introduzca el DNI del cliente que desea modificar ", comparacionDNI);
for (i=0;i<n;i++){
if (strcmp(variosClientes.Clientes[i].DNI, comparacionDNI)==0){
cout<<"El cliente cuyos datos desea modificar es "<<variosClientes.Clientes[i].nombre<<endl;
opcion3=menu3();
switch(opcion3){
case 1:
leerCadena("Nombre\n",variosClientes.Clientes[i].nombre);
return (variosClientes);
x=false;
break;
case 2:
do {leerCadena("DNI\n", variosClientes.Clientes[i].DNI);
}while (longitud!=strlen(variosClientes.Clientes[i].DNI));
return (variosClientes);
x=false;
break;
case 3:
leerCadena("domicilio\n", variosClientes.Clientes[i].domicilio);
return (variosClientes);
x=false;
break;
case 4:
do {leerCadena("NumCuenta\n", variosClientes.Clientes[i].numCuenta);
}while (longitud1!=strlen(variosClientes.Clientes[i].numCuenta));
return (variosClientes);
break;
case 5:
do{leerCadena("tipoCuenta\n", variosClientes.Clientes[i].tipoCuenta);
}while ((strcmp(variosClientes.Clientes[i].tipoCuenta, p)!=0)&&(strcmp(variosClientes.Clientes[i].tipoCuenta, t)!=0));
return (variosClientes);
x=false;
break;
}}
else if ((strcmp(variosClientes.Clientes[i].DNI, comparacionDNI)!=0)&&(x==true)){
cout<<"El cliente insertado no se encuentra en nuestros datos"<<endl;
return (variosClientes);
}
}
}
{
int opcion3;
cout <<"¿Que desea modificar?";//no he incluído la fecha ya que cuando alguien va a modificar sus datos, es porque ya está dado de alta, entonces la fecha no es un dato que se pueda modificar//
do{
cout <<"\n1. Nombre";
cout << "\n2. DNI";
cout << "\n3. Domicilio";
cout << "\n4. Numero de cuenta";
cout << "\n5. Tipo de cuenta";
cout << "<\n6. Salir";
opcion3=leerEntero ("\nOpcion: ");
}while (opcion3<1 || opcion3>6);
return opcion3;
}
}
setClientes modificarDatos(setClientes variosClientes){
int menu3();
bool x=true;
char comparacionDNI[10];
char t[7]="ahorro";
char p[10]="corriente";
int longitud=9, longitud1=10, opcion3;
int n=variosClientes.numClientes, i=0;
leerCadena("Introduzca el DNI del cliente que desea modificar ", comparacionDNI);
for (i=0;i<n;i++){
if (strcmp(variosClientes.Clientes[i].DNI, comparacionDNI)==0){
cout<<"El cliente cuyos datos desea modificar es "<<variosClientes.Clientes[i].nombre<<endl;
opcion3=menu3();
switch(opcion3){
case 1:
leerCadena("Nombre\n",variosClientes.Clientes[i].nombre);
return (variosClientes);
x=false;
break;
case 2:
do {leerCadena("DNI\n", variosClientes.Clientes[i].DNI);
}while (longitud!=strlen(variosClientes.Clientes[i].DNI));
return (variosClientes);
x=false;
break;
case 3:
leerCadena("domicilio\n", variosClientes.Clientes[i].domicilio);
return (variosClientes);
x=false;
break;
case 4:
do {leerCadena("NumCuenta\n", variosClientes.Clientes[i].numCuenta);
}while (longitud1!=strlen(variosClientes.Clientes[i].numCuenta));
return (variosClientes);
break;
case 5:
do{leerCadena("tipoCuenta\n", variosClientes.Clientes[i].tipoCuenta);
}while ((strcmp(variosClientes.Clientes[i].tipoCuenta, p)!=0)&&(strcmp(variosClientes.Clientes[i].tipoCuenta, t)!=0));
return (variosClientes);
x=false;
break;
}}
else if ((strcmp(variosClientes.Clientes[i].DNI, comparacionDNI)!=0)&&(x==true)){
cout<<"El cliente insertado no se encuentra en nuestros datos"<<endl;
return (variosClientes);
}
}
}
Un saludo y gracias.
P.D.: Cabe mencionar que no es un programa completo, sólo una función del programa.