do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila

Iniciado por juligarc10, 6 Diciembre 2018, 22:47 PM

0 Miembros y 1 Visitante están viendo este tema.

juligarc10

Hola a todos.

He estado haciendo este programa, y lo que pretendo conseguir con esta porcion de codigo, es que al leer una cadena, me la vuelva a pedir siempre y cuando sea distinta de las palabras "ahorro" o "corriente". Aqui os dejo la parte del codigo.

do{leerCadena("tipoCuenta\n", variosClientes.Clientes[variosClientes.numClientes].tipoCuenta);
    }while (strcmp(variosClientes.Clientes[variosClientes.numClientes].tipoCuenta, ("corriente"||"ahorro"))!=0);


El error que le programa me dice que da es:  cannot convert 'bool' to 'const char*' for argument '2' to 'int strcmp(const char*, const char*)'|

No lo entiendo. Gracias.

K-YreX

<"corriente" || "ahorro"> es una expresión booleana, no es una cadena de caracteres <char*>. Tienes que comparar con una y después con la otra por separado. Suerte.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

AlbertoBSD

#2
Como te comentan esta mal la sentencia, no puedes meter el operador or "||" en medio de la funcion strcmp lo correcto seria:

do{

}while (strcmp(str,"cadena 1")==0 || strcmp(str,"cadena 2")==0);




Edición se cambiaron los != por == ya que como estaba siempre daria verdadero.

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW


CalgaryCorpus

#4
Tengo la impresion que este do - while se ejecutara por siempre. La condicion es una tautologia.

Citar
do{

}while (strcmp(str,"cadena 1")!=0 || strcmp(str,"cadena 2")!=0);

Aqui mi perfil en LinkedIn, invitame un cafe aqui

AlbertoBSD

Jajaja tienes razon, esperemos el usuario se de cuenta de eso. Acabo de corregir la respuesta anterior.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW