Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: juligarc10 en 6 Diciembre 2018, 22:47 pm



Título: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
Publicado por: juligarc10 en 6 Diciembre 2018, 22:47 pm
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.

Código:
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.


Título: Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
Publicado por: K-YreX en 6 Diciembre 2018, 22:55 pm
<"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.


Título: Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
Publicado por: AlbertoBSD en 6 Diciembre 2018, 23:06 pm
Como te comentan esta mal la sentencia, no puedes meter el operador or "||" en medio de la funcion strcmp lo correcto seria:

Código
  1. do{
  2.  
  3. }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!


Título: Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
Publicado por: juligarc10 en 6 Diciembre 2018, 23:11 pm
Muchas gracias amigos. Solucionado!!!


Título: Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
Publicado por: CalgaryCorpus en 7 Diciembre 2018, 00:19 am
Tengo la impresion que este do - while se ejecutara por siempre. La condicion es una tautologia.

Citar
Código
  1. do{
  2.  
  3. }while (strcmp(str,"cadena 1")!=0 || strcmp(str,"cadena 2")!=0);


Título: Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
Publicado por: AlbertoBSD en 7 Diciembre 2018, 00:26 am
Jajaja tienes razon, esperemos el usuario se de cuenta de eso. Acabo de corregir la respuesta anterior.