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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con codigo de preguntas y respuestas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con codigo de preguntas y respuestas  (Leído 2,087 veces)
carlos112233

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con codigo de preguntas y respuestas
« en: 24 Septiembre 2017, 21:27 pm »

Hola, soy nuevo en la programacion y me gustaria si me pueden aportar con un programa que he realizado. Este programa realiza una pregunta en ingles y si el usuario responde correctamente a traves del teclado sigue con la siguiente pregunta, si no, espera a que responda en forma correcta.
Agradeceria si alguien me puede apoyar con otra forma mas elegante o menos bruta para realizar el programa. El codigo es el siguiente:

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4.  
  5. main(){
  6.       char c1[15]="hi", c2[15];
  7.  
  8.       printf("hello\n");
  9.       etiqueta_1:
  10.       scanf("%s",&c2[0]);
  11.  
  12.       int n;
  13.  
  14.       n = strcmp(c1,c2);
  15.  
  16.       if(n==0){
  17.                int l;
  18.                char c3[30], c4[30]="Iam good.How are you?";
  19.  
  20.                printf("How are you?\n");
  21.                scanf("%s",&c3[0]);
  22.  
  23.                l = strcmp(c3,c4);  
  24.  
  25.                if(n==0){
  26.                         int m;
  27.                         char c5[30], c6[30]="A little.Are you American?";
  28.  
  29.                         printf("Good.Do you speak English?\n");
  30.                         scanf("%s",&c5[0]);
  31.  
  32.                         m = strcmp(c5,c6);
  33.  
  34.                         if(n==0){
  35.                                  int o;
  36.                                  char c7[30], c8[30]="Where are you from?";
  37.  
  38.                                  printf("yes\n");
  39.                                  scanf("%s",&c7[0]);
  40.  
  41.                                  o = strcmp(c7,c8);
  42.                                 }
  43.                        }
  44.                }
  45.  
  46.  
  47.      if(n>0){
  48.              printf("Vuelva a intentarlo\n");
  49.              goto etiqueta_1;
  50.             }
  51.  
  52.     else{
  53.              printf("Vuelva a intentarlo\n");
  54.              goto etiqueta_1;
  55.         }
  56.  
  57.  
  58. system("pause");
  59. return 0;
  60. }


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 24 Septiembre 2017, 23:21 pm por engel lex » En línea

Tucho

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda con codigo de preguntas y respuestas
« Respuesta #1 en: 25 Septiembre 2017, 00:00 am »

Lee los comientarios del codigo:
Código
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4.  
  5. main(){ //Pongamos el int, no seamos tan cabezas
  6. char c1[15]="hi", c2[15];
  7.  
  8. printf("hello\n");
  9. etiqueta_1:
  10. scanf("%s",&c2[0]); //poner &c2[0] es lo mismo que poner c2, Además, yo utiilizari scanf("%15s",c2) para que no se pueda poner mas que el largo del string.
  11. //Si no se puede usar: fgets(c2,15,stdin)
  12. int n;
  13.  
  14. n = strcmp(c1,c2); //Esto podes ponerlo directamente cono condicion del if..
  15.  
  16. if(n==0){ // if(!strcmp(c1,c2))
  17. int l;
  18. char c3[30], c4[30]="Iam good.How are you?";
  19.  
  20. printf("How are you?\n");
  21. scanf("%s",&c3[0]);
  22.  
  23. l = strcmp(c3,c4);
  24.  
  25. if(n==0){ //Aca es: if(l==0)
  26. int m;
  27. char c5[30], c6[30]="A little. Are you American?";
  28.  
  29. printf("Good.Do you speak English?\n");
  30. scanf("%s",&c5[0]);
  31.  
  32. m = strcmp(c5,c6);
  33.  
  34. if(n==0){ //Aca es: if(m==0)
  35. int o;
  36. char c7[30], c8[30]="Where are you from?";
  37.  
  38. printf("yes\n");
  39. scanf("%s",&c7[0]);
  40.  
  41. o = strcmp(c7,c8); //si pensas hacer la conversacion muy larga, tendrias que ver como hacer mas escalable el program, y no tener que escribir tanto(Ver al final).
  42.                   //Si queres verificar que el usuario responde bien en todos los casos tendrias que ver que pasa cuando m!=0 y l!=0, por que esto hace el goto solo cuando falla el primero de todos. Tendrias que usar el mismo n en todos lados de ultima..
  43. }
  44. }
  45. }
  46.  
  47.  
  48. if(n>0){ //Este if(n>0) y lo que hay en el else, pueden estar juntos, directamente usar el else..
  49. printf("Vuelva a intentarlo\n");
  50. goto etiqueta_1;
  51. }
  52.  
  53. else{
  54. printf("Vuelva a intentarlo\n");
  55. goto etiqueta_1;
  56. }
  57.  
  58. system("pause"); //Ojo con las llamadas a system..
  59. return 0;
  60. }
  61.  
  62. //Yo personalmente no me gusta el "goto", yo haria algo como:
  63.  
  64. do{
  65. scanf("%s", c2);
  66. printf("Estoy aca y voy a entrar aca hasta que le acertes a la frase..")
  67. }while(strcmp(c1,c2));
  68.  
  69. en lugar de lo que haces vos:
  70.  
  71. lala:
  72. scanf("%s", c2);
  73. if(strcmp(c1,c2))
  74. goto lala:
  75.  
  76. //Por otro lado, si queres hacer que puedas agregar tantas frases como quieras, sin tener que cambiar tanto codigo, podrias hace algo como:
  77.  
  78. #include <stdio.h>
  79. #include <string.h>
  80. #define NUM 4
  81. int main(){
  82. char *respuestas[NUM]={"hi", "Iam good. How are you?", "A little. Are you American?", "Where are you from?"};
  83. char *preguntas[NUM] = {"Hello\n", "How are you?\n", "Good. Do you speak English?\n", "yes\n"};
  84. int i;
  85. char aux[30] ={0};
  86. for(i=0; i<NUM; i++){
  87. do{
  88. int j;
  89. for(j=0; j<strlen(aux); ++j)
  90. aux[j]=0;
  91. printf(preguntas[i]);
  92. scanf("%s", aux);
  93. }while(strcmp(aux,respuestas[i]));
  94. }
  95. getchar(); //Lo mismo que el system("sleep")..
  96. }
  97.  

Ojo que el ultimo main no esta ni revisado ni compilado.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[FAQ] Preguntas y respuestas frecuentes.
Software
Siuto 0 27,290 Último mensaje 11 Diciembre 2005, 04:43 am
por Siuto
preguntas y respuestas
Software
pingoroxo 2 3,467 Último mensaje 12 Diciembre 2008, 01:48 am
por Axus
preguntas y respuestas c++ « 1 2 »
Programación C/C++
peterfly 13 17,856 Último mensaje 2 Agosto 2011, 18:42 pm
por peterfly
Preguntas y respuestas. Yo pregunto, tú respondes!
Foro Libre
free-articles 0 1,620 Último mensaje 10 Septiembre 2012, 21:07 pm
por free-articles
[RESUELTO] Un programa de preguntas y respuestas formuladas por ti, ayuda
Programación C/C++
zayzed 1 1,798 Último mensaje 30 Abril 2017, 22:38 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines