Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: peterfly en 2 Agosto 2011, 00:58 am



Título: preguntas y respuestas c++
Publicado por: peterfly en 2 Agosto 2011, 00:58 am
tengo un problema con el siguiente codigo...
Código:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>

int main (void)
{
    int a,b,c,i;
    char cadena1[40]="calcul";
   
    printf("mis preguntas y respuestas \n \n");
    printf("escriba la pregunta:  ");
    gets(cadena1);
   
    i= strcmp(cadena1,"que edad tengo?");
    if (i==0){
    printf("15\n\n");
}
std::cout << "desea continuar (s o n)?\n";
char answer=0;
std::cin >> answer;
switch (answer){
       case 's':
            return true;
       case 'n':
            return false;
       default:
               std::cout<<"tomo su respuesca como un no.\n";
               return false;
               }
               
     getchar();
     return 0;
}

el problema es que cuando me pregunta si deseo continuar o no y pongo la letra "s" que en un principio es para continuar en el programa sin que se cierre... no pasa eso... se me cierra!!! se que me falta algo pero no se el que es...

me podeis ayudar con esa duda que tengo???


Título: Re: preguntas y respuestas c++
Publicado por: M1L0666 en 2 Agosto 2011, 01:38 am
En el switch te falto poner los: "break;"
seria algo asi:
Código:
switch (answer){
       case 's':
            return true;
break;
       case 'n':
            return false;
break;
       default:
               std::cout<<"tomo su respuesca como un no.\n";
               return false;
               }


Título: Re: preguntas y respuestas c++
Publicado por: leogtz en 2 Agosto 2011, 01:44 am
¿Cuándo aprenderán a distinguir entre C y C++?


Título: Re: preguntas y respuestas c++
Publicado por: Ferno en 2 Agosto 2011, 03:13 am
¿Cuándo aprenderán a distinguir entre C y C++?

Supongo que eso pasará cuando todos empiecen aprendiendo C y no directamente C++ :P


Título: Re: preguntas y respuestas c++
Publicado por: peterfly en 2 Agosto 2011, 13:28 pm
M1L0666 e puesto lo que me digistes... pero sigue cerrandose cuando le pido continuar con el programa...


Título: Re: preguntas y respuestas c++
Publicado por: Dark Invader en 2 Agosto 2011, 15:21 pm
No se muy bien que es lo que buscas pero creo que es esto:
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <string.h>
  5. char respuesta =0;
  6. int main (void)
  7. {
  8.    int a,b,c,i;
  9.    char cadena1[40]="calcul";
  10.    do{
  11.    printf("mis preguntas y respuestas \n \n");
  12.    printf("escriba la pregunta:  ");
  13.    gets(cadena1);
  14.  
  15.    i= strcmp(cadena1,"que edad tengo?");
  16.    if (i==0){
  17.    printf("15\n\n");
  18. }
  19.  
  20. std::cout << "desea continuar (s o n)?\n";
  21. std::cin >> respuesta;
  22. switch (respuesta){
  23.       case 's':
  24.   if (respuesta == 's'){
  25.   printf("ha salido con la respuesta s\n");
  26.  
  27.   break;}
  28.       case 'n':
  29.   if (respuesta == 'n'){
  30.   printf("ha salido con la respuesta n");
  31.            return false;
  32. break;}
  33.       default:
  34.  
  35.   printf("ha salido sin la letra n o s");
  36.               return false;
  37.   break;
  38. }
  39.               }while ((respuesta =='s')||(respuesta == 'S'));
  40.  
  41.     getchar();
  42.     return 0;
  43. }

Un saludo


Título: Re: preguntas y respuestas c++
Publicado por: peterfly en 2 Agosto 2011, 15:37 pm
muchas gracias por la ayuda...

aora el problema es que cuando la respuesta es que si quiero continuar no para de preguntarme si deseo continuar i no me deja poner mas la pregunta inicial...

se que falta algun detalle que se nos a escapado... pero aun asi... muchisimas gracias por la aclaracion


Título: Re: preguntas y respuestas c++
Publicado por: Dark Invader en 2 Agosto 2011, 15:47 pm
¿Has probado el code que te he pasado? :-\ Hace eso que pides...

Un saludo


Título: Re: preguntas y respuestas c++
Publicado por: peterfly en 2 Agosto 2011, 15:59 pm
si que lo e provado... i cuando pongo la "s" de si que quiero continuar despues de la pregunta  inicial me lase el principio de todo pero tambien me pregunta si quiero continuar i no me deja volver a poner "que edad tengo?"
es decir que no para de preguntarme si quiero continuar

por eso decia que se nos escapa algun detalle... i es para que no me vuelva a preguntar si quiero continuar despues de poner la "s" (para que solo me lo pregunte una vez)


Título: Re: preguntas y respuestas c++
Publicado por: Dark Invader en 2 Agosto 2011, 17:28 pm
Explicanos con lujo de detalles que quieres que haga el programa,porque sigo sin enterarme bien  :-\

Un saludo


Título: Re: preguntas y respuestas c++
Publicado por: peterfly en 2 Agosto 2011, 17:39 pm
lo que quero es:
1. el programa tiene que preguntarte (que pregunta quieres acer)
2. cuando aces la pregunta te sale automaticamente la respuesta
3. cuando a salido la respuesta te pregunta el programa (quieres continuar o no)
4. al responder (si quiero continuar) vuelve al principio

resultados actuales:
1. el programa te pregunta (que pregunta quieres acer)
2. cuando aces la pregunta te sale la respuesta automaticamente
3. cuando a salido la respuesta te pregunta si quieres continuar o no
4. AQUI ESTA EL PROBLEMA al responder (si quiero continuar) te sigue preguntando (si quieres continuar)


Título: Re: preguntas y respuestas c++
Publicado por: Dark Invader en 2 Agosto 2011, 18:25 pm
Esto es lo que quieres,pero te falta añadir muchas preguntas y sus respuesta:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. int main (void)
  7. {
  8.  
  9.    int i;
  10.    char cadena1[40]="";
  11. char respuesta =0;
  12.    do{
  13.    printf("mis preguntas y respuestas \n \n");
  14.    printf("escriba la pregunta:  ");
  15.    gets(cadena1);
  16.  
  17.  
  18.    i= strcmp(cadena1,"que edad tengo?");
  19.    if (i==0){
  20.    printf("15\n\n");
  21.  
  22. }
  23.  
  24. std::cout << "desea continuar (s o n)?\n";
  25. std::cin >> respuesta;
  26. setbuf(stdin,NULL);
  27. switch (respuesta){
  28.       case 's':
  29.  
  30.   printf("ha salido con la respuesta s\n");
  31.  
  32.   break;
  33.       case 'n':
  34.  
  35.   printf("ha salido con la respuesta n");
  36.            return false;
  37. break;
  38.       default:
  39.  
  40.   printf("ha salido sin la letra n o s");
  41.               return false;
  42.   break;
  43.  
  44. }
  45.               }while ((respuesta =='s')||(respuesta == 'S'));
  46.  
  47.     getchar();
  48.     return 0;
  49. }


Título: Re: preguntas y respuestas c++
Publicado por: rir3760 en 2 Agosto 2011, 18:33 pm
En respuesta a peterfly: necesitas un buen libro o curso sobre C++ y seguirlo a detalle ya que con "palos de ciego" ni aprendes bien ni aprendes rápido. Revisa los temas fijos de este foro, ahí hay información para entretenerse por meses.

En cuanto al programa honestamente no lo veo sentido pero se puede hacer asi:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <string>
  7. using std::string;
  8.  
  9. #include <limits>
  10. using std::numeric_limits;
  11.  
  12. int main ()
  13. {
  14.   string pregunta;
  15.   char continuar;
  16.  
  17.   do {
  18.      cout << "Escribe la pregunta:  ";
  19.      getline(cin, pregunta);
  20.  
  21.      if (pregunta == "que edad tengo?")
  22.         cout << "Pregunta correcta!" << endl;
  23.      else
  24.         cout << "Pregunta incorrecta!" << endl;
  25.  
  26.      cout << "Desea continuar (s o n)?" << endl;
  27.      std::cin >> continuar;
  28.      cin.ignore(numeric_limits<int>::max(), '\n');
  29.   } while (continuar == 's' || continuar == 'S');
  30.  
  31.   return 0;
  32. }


----


Un comentario sobre el programa de Dark Invader , el uso de la función:
Código
  1. setbuf(stdin,NULL);
Para así vaciar el bufer de la entrada estándar no es correcto ya que esa función termina en una llamada a "setvbuf". El problema aquí es que esta ultima solo puede llamarse antes de cualquier uso del stream (salvo su apertura con fopen).

Un saludo


Título: Re: preguntas y respuestas c++
Publicado por: peterfly en 2 Agosto 2011, 18:42 pm
muchisimas gracias a todos... tema solucionado