Necesito ayuda

Iniciado por Quieroaprenderprogramacio, 17 Febrero 2019, 06:07 AM

0 Miembros y 2 Visitantes están viendo este tema.

Quieroaprenderprogramacio

Hola soy nuevo usando dev c++, y queria hacer como un tipo de examen de preguntas abiertas, ejemplo:

¿Que te pertenece y todo el mundo lo utiliza?

la respuesta seria el nombre,

y lo que hasta ahora he logrado es que justo despues de poner la pregunta pueda poner la respuesta, pero la respuesta no he logrado que sea el nombre, ya que la unica manera en la que he logrado que funcione es dando opciones 1,2 y 3, o algo menos alejado ha sido "El" no "El nombre" y darle un valor a la respuesta si es correcta, si es correcta 1 si no -1 igual con la sig pregunta y pues queria ayuda para poder lograrlo.


Pedrocasty

buenas, has probado a guardar una variable string, que sea igual a `el nombre`;
y si la respuesta es igual a esa variable que haga un cout de es correcto. Repito estoy empezando también

Quieroaprenderprogramacio

Voy a intentarlo, gracias.

0xDevC

Se que ya te han dado la respuesta pero esta tarde tambien te la iba a dar anexandole el codigo pero como me fallaba decidí no enviarlo, entonces simplemente dejaré el codigo ahora que si me funciona como es debido.


#include <iostream>
#include <string.h>

using namespace std;

int main(){
   
   string resp;
   
   cout<<"¿Que te pertenece y todo el mundo lo utiliza?"<<endl;
   cin>>resp;
   
   if (resp == "el nombre", "El nombre")
   {
      cout<<"Respuesta correcta !";
   }
   else
   {
      cout<<"Respuesta incorrecta !";
   }
   
   
   cin.get();
   return 0;
}

Tengo un curso de c++ que incié ayer, talvez te interesaría, tambien soy nuevo e inicie ese curso para aprender junto a los demas  :D

https://goo.gl/h8boEX

EdePC

#4
Código (cpp) [Seleccionar]
if (resp == "el nombre", "El nombre")

- Que clase de brujería es esa :xD, no lo encuentro en mis libros pero funciona  :o ( corrijo, trabaja como un if (true) )

Pedrocasty

ajjajaajajja lo de la , es verdad que arece que funciona pero sustituyelo por una puerta or ||  , es mas profesiona, supongo

MAFUS

El operador coma no es para eso.
Es el operador binario de menor prioridad. Funciona así:
Evalúa el primer operando y descarta el valor, después evalúa el siguiente operando y regresa su valor. Tal y cómo está en el código primer evaluará respuesta=="el nombre" y descartará el respuesta, después evaluará "El nombre" y devolverá su dirección, que cómo no será NULL el if lo tratará como true. Básicamente es un if(true).

EdePC

- Anda, cierto, no habia probado una respuesta incorrecta, jeje, con tanto cambio que he visto en C++ pensé que estaba facilitando el uso de expresiones booleanas como Python XD.

K-YreX

Además de lo ya comentado no puedes usar <cin> para la entrada de datos. Ya que <cin> sólo almacena hasta el primer espacio. Por lo que si introduces "el nombre" mediante un <cin>, en la variable sólo se almacenará "el".
Para solucionar eso te recomiendo usar <getline()>. Suerte :-X

PD: Si quieres ampliar un poco el programa te recomiendo transformar toda la solución a minúsculas y comparar sólo con "el nombre". Por si se da el caso de que alguien lo escribe en mayúsculas.
Código (cpp) [Seleccionar]

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

Quieroaprenderprogramacio

Gracias a todos, ya he podido poner incluso mas de solo 1 pregunta.

int main(){
   system("color 70");
   int t;
   
   char r1[50];
   char r2[] = "Si";
   char r3[50];
   char r4[] = "El nombre";
   
     
   
   cout<<"(Todas las respuestas deben ser contestastas con la letra inicial en mayusculas, una respuesta correcta vale 10 puntos, una erronea vale -5)"<<endl;
   
   do{
      cout<<"Listo (Si o No): ";
      gets(r1);
      if(strcmp(r1,r2)!=0){
      }
   }while(strcmp(r1,r2)!=0);
   
   cout<<"\nBien empecemos..."<<endl;
   //
   cout<<"\n(P1)...Que te pertenece que todo el mundo usa? ";
   gets(r3);
   if(strcmp(r3,r4)==0){
      t=0+10;
      cout<<"Corecto... Puntuacion: "<<t<<endl;
   }
   else{
      t=0-5;
      cout<<"Incorrecto, respuesta correcta..... (El nombre) ... puntuacion: "<<t<<endl;
   }

   
   cout<<"\n\n\n";
   system("pause");
   return 0;
}


;D ;D ;D