elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila  (Leído 1,538 veces)
juligarc10

Desconectado Desconectado

Mensajes: 47


Ver Perfil
do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
« 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.


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
« Respuesta #1 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.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
« Respuesta #2 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!
« Última modificación: 7 Diciembre 2018, 00:27 am por AlbertoBSD » En línea

juligarc10

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
« Respuesta #3 en: 6 Diciembre 2018, 23:11 pm »

Muchas gracias amigos. Solucionado!!!
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
« Respuesta #4 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);
« Última modificación: 7 Diciembre 2018, 01:59 am por CalgaryCorpus » En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila
« Respuesta #5 en: 7 Diciembre 2018, 00:26 am »

Jajaja tienes razon, esperemos el usuario se de cuenta de eso. Acabo de corregir la respuesta anterior.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines