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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error funcion aleatoria.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error funcion aleatoria.  (Leído 3,708 veces)
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Error funcion aleatoria.
« en: 30 Mayo 2012, 19:42 pm »

Bueno estoy haciendo un programa muy basico que te da una palabra en ingles seleccionada aleatoriamente y te la pide en español. El problema es que cuando lo ejecuto siempre sale la palabra "Asustado", aunque vuelva a compilar, y que, aunque ponga "h" en vez de "scared" me sale que es correcto. Dejo el code y espero que me puedan ayudar:

Código:
#include <cstdlib>
#include <iostream>

using namespace std;

char palabra[35];
int c;

int main(){
  c=(1 + rand() % 2);
  switch (c)
  {
   case 1: {cout <<"Ligth\n"<<"Introduce la palabra y pulsa enter:";  cin >> (palabra); if (palabra=="ligero" || "Ligero" || "Luz"){cout << "Rigth!";} else {cout << "Wrong!";}} break;
   case 2: {cout <<"Asustado\n"<<"Introduce la palabra y pulsa enter:"; cin >> palabra; if (palabra=="scared" || "Scared") {cout << "Rigth!";} else {cout << "Wrong!";} } break;
   default: {cout <<"Se produjo un error";}
  }return 0;
}

Saludos y gracias de antemano;D


En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Error funcion aleatoria.
« Respuesta #1 en: 31 Mayo 2012, 00:40 am »

Tienes algunos errores conceptuales, prueba así:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. char palabra[35];
  7. int c;
  8.  
  9. int main(){
  10.  c=(1 + rand() % 2);
  11.  switch (c)
  12.  {
  13.   case 1:
  14.      cout <<"Ligth\n"<<"Introduce la palabra y pulsa enter:";
  15.      cin >> (palabra);
  16.      if (palabra=="ligero" || palabra=="Ligero" || palabra=="Luz"){
  17.         cout << "Rigth!";
  18.      }
  19.      else{
  20.         cout << "Wrong!";
  21.      }
  22.      break;
  23.  
  24.   case 2:
  25.      cout <<"Asustado\n"<<"Introduce la palabra y pulsa enter:";
  26.      cin >> palabra;
  27.      if (palabra=="scared" || palabra=="Scared"){
  28.          cout << "Rigth!";
  29.      } else {
  30.          cout << "Wrong!";
  31.      }
  32.      break;
  33.  
  34.   default:
  35.      cout <<"Se produjo un error";
  36.  }
  37.  return 0;
  38. }

Si te fijas los cambios están dentro del if. Tienes que escribir la condición de forma completa, es decir, no puedes decir que una variable sea igual a un valor u otro de esta forma: variableA == 2 || 3, tendrías que hacerlo de forma completa: variableA == 2 || variableA == 3. Si lo dejas como tú lo tenías puesto, si no me equivoco estaría comprobando que la cadena "Ligero" o "Luz" o "Scared" es distinta del valor nulo, pero no estoy seguro al 100%.

Si estás intentando aprender C++ por tu propia cuenta te recomiendo que leas algún libro básico sobre programación y posteriormente algún libro básico sobre C++, por el foro hay millones de recomendaciones.

Saludos.


En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Error funcion aleatoria.
« Respuesta #2 en: 31 Mayo 2012, 15:42 pm »

Muchas gracias, ahora lo entiendo, estaba haciendo que saltase rigth si Luz o ligero se verificaban True, creo, y que lo son por defecto.

Sin embargo, aunque ya funcionan las condiciones sigue fallando la funcion aleatoria, ya que al ejecutarlo me sigue saliendo siempre "Asustado".

Saludos y gracias ;D

EDITO:Siempre da wrong
« Última modificación: 31 Mayo 2012, 15:50 pm por daniyo » En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Error funcion aleatoria.
« Respuesta #3 en: 31 Mayo 2012, 20:04 pm »

Valkyr, tu código tiene MUCHOS errores fundamentales de concepto, te invito a releer sobre punteros, vectores, sobrecarga de operadores, tipos de datos y demás ... estas comparando un puntero con otro, no estas comparando palabras y el tema del case de las cadenas se te transpapelo, la semilla, etc ...

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4.  
  5.  
  6. using namespace std;
  7.  
  8.  
  9. int main(int argc, char* argv[])
  10. {
  11.    srand(time(0));
  12.  
  13.    string inputWord;
  14.    int randomNumber = rand()%2+1; // rand()%maximo+minimo
  15.  
  16.    if ( randomNumber == 1) cout << "Palabra : Light ";
  17.      else if ( randomNumber == 2) cout << "Palabra : Asustado ";
  18.    cout << endl << "Introduce su traduccion y pulsa enter : ";
  19.  
  20.    cin >> inputWord;
  21.      transform(inputWord.begin(),inputWord.end(),inputWord.begin(),::tolower); // todo a minusculas (!)
  22.  
  23.    if ( randomNumber == 1 && (inputWord == "ligero" || inputWord == "luz") ) cout << endl << "Correcto !!" << endl;
  24.      else if ( randomNumber == 2 && inputWord == "scared" ) cout << endl << "Correcto !!" << endl  ;
  25.    else cout << "Incorrecto" << endl;
  26.  
  27.    return EXIT_SUCCESS;
  28. }
  29.  
  30.  

El mío también está feo, podría haberlo alargado más agregando un switch (para dos opciones? :S), hacer que consuma más instrucciones y que sea más lindo ... pero ni ganas x'3
La cosa es que funciona y todo esta en las references :D
« Última modificación: 1 Junio 2012, 21:21 pm por vertexSymphony » En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Error funcion aleatoria.
« Respuesta #4 en: 1 Junio 2012, 16:03 pm »

Ahora si funciona! Gracias por el code. Que tenga solo dos opciones es porque es solo una prueba jeje
Y no sabia que con la biblioteca string se podia declarar una variable de tipo string. Lo unico que sigo sin entender es la parte donde esta la funcion tansform. Supongo que es de la biblioteca algorithm, pero no la conozco.

Saludos ;D
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Error funcion aleatoria.
« Respuesta #5 en: 1 Junio 2012, 21:18 pm »

Sí, debí haber evitado transform, pero por las malas aprendí que es mejor ir metiendo bocadillos de la STL desde temprano, sino siguen con costumbres raras de programar en C, pero en otro paradigma, osea x'3

No sé si sabrás sobre contenedores/containers e iteradores/iterators (si no, podés dar una vuelta por el buscador que SEGURO que encontrás una explicación simplificada, SEGURO) ... pero std::transform (sí, es de algorithm) recorre un contenedor desde posición X a Y (en el caso ese, begin() y end(), de principio a fin del contenedor), le aplica W en cada elemento (en este caso aplica tolower, que sirve para pasar a minúscula un caracter ... y sobre cada caracter, que es el "elemento" de un string) y lo almacena en Z (de nuevo, uso begin() para obtener el iterador al principio del contenedor).

chusmeá la info acá : http://www.cplusplus.com/reference/algorithm/transform/ (bah, esa web es genial, probablemente la uses seguido :D)

Saludos.
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Error funcion aleatoria.
« Respuesta #6 en: 2 Junio 2012, 00:18 am »

No tengo muy claro que son los contendores y eso, pero creo que mirare esa pagina a menudo si.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Error funcion aleatoria.
« Respuesta #7 en: 2 Junio 2012, 12:52 pm »

Confusión mía, pensaba que estaba declarado como string en lugar de char[] y podía hacer la comparación tal cual por la sobrecarga del operador.

Saludos.
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