[SOLUCIONADO] Ayuda C++ codigo con do-while y if para insertar PIN

  • 7 Respuestas
  • 1224 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Este post tiene marcado una respuesta como solución Presiona acá para verlo

Desconectado ian007lol

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
Este es mi primer año estudiando programación y he querido hacer un pequeño programa para que al ingresar un PIN concreto me de información del tema al cual está
relacionado. He intentado hacerlo de manera que al ingresar un PIN que no esté definido, simplemente salga de nuevo "Inserta el Pin:", el problema es que al hacerlo como lo he hecho, me repite "Inserta el Pin:" sin importar el PIN que ingrese.
Me sería de gran ayuda si me dicen que es lo que he hecho mal y como lo puedo solucionar.

Código: C++
  1. #include "stdafx.h"
  2.  
  3.  
  4.  
  5. int main()
  6. {
  7.         const int Nina = 2403;
  8.         const int Escuela = 1234;
  9.         const int Adam = 131199;
  10.         const int Antonio = 201066;
  11.         const int Ian = 240702;
  12.         const int Cristina = 221167;
  13.  
  14.         int Pin;
  15.  
  16.        
  17.         do
  18.         {
  19.                 printf("Inserta el Pin:");
  20.                 scanf_s("%i", &Pin);
  21.         } while (Pin!=Ian || Pin!=Adam || Pin!=Antonio || Pin!=Cristina || Pin!=Escuela || Pin!=Nina);
  22.  
  23.         if (Pin==Ian)
  24.         {
  25.                 printf("Joven programador el cual aprecia los videojuegos y la eficiencia ante todo. Su mejor amigo se llama oliver\n");
  26.         }
  27.         if (Pin==Nina)
  28.         {
  29.                 printf("Nina. La gata de la familia. A veces cariñosa, a veces antipatica\n");
  30.         }
  31.         if (Pin==Escuela)
  32.         {
  33.                 printf(" Es un Technisches Gymnasium con varias especializaciones. Ian acude a esta instalacion\n");
  34.         }
  35.         if (Pin==Adam)
  36.         {
  37.                 printf("Joven cocinero el cual aprecia los videojuegos y la cocina ante todo. No tiene amigos ya que se los comio\n");
  38.         }
  39.         if (Pin==Antonio)
  40.         {
  41.                 printf("Conductor de autobuses experimentado el cual aprecia la familia y los amigos. El conocimiento es poder. \n");
  42.         }
  43.         if (Pin==Cristina)
  44.         {
  45.                 printf("Ama de casa la cual ama a su familia y a sus seres queridos. El amor prevalecera\n");
  46.         }
  47.        
  48.     return 0;
  49. }
« Última modificación: Noviembre 23, 2019, 05:31:03 pm por Gabriela »

Desconectado Bartz

  • *
  • Moderador Global
  • Mensajes: 195
  • Actividad:
    40%
  • Reputación 8
  • ~Afaik~
    • Ver Perfil

Re:Ayuda C++ codigo con do-while y if para insertar PIN

  • en: Noviembre 22, 2019, 06:23:58 pm
Hola @ian007lol !

Para este tipo de situaciones podrias utilizar una variable que tenga un 1 o un 0 (nose si en C++ hay booleans asique lo hare con 1 y 0 en C que seguro podes traducir)

Código: C
  1.  
  2. .     const int Nina = 2403;
  3. .     const int Escuela = 1234;
  4. .     const int Adam = 131199;
  5. .     const int Antonio = 201066;
  6. .     const int Ian = 240702;
  7. .     const int Cristina = 221167;
  8. .
  9. .     int Pin;
  10. .     int valido = 0;
  11. .
  12. .     while(valido == 0) {
  13. .         System("cls");
  14. .         printf("\nInserta el Pin..: ");
  15. .         scanf("%d", &Pin);
  16. .         valido = validarPin(Pin);
  17. .     }
  18. .
  19. .     int validarPin(pin) {
  20. .         pinValido = 0;
  21. .         switch (pin):
  22. .               case Nina:
  23. .                     pinValido = 1;
  24. .                     break;
  25. .           case Escuela:
  26. .                     pinValido = 1;
  27. .                     break;
  28. .           case Cristina:
  29. .                     pinValido = 1;
  30. .                     break;
  31. .           case Antonio:
  32. .                     pinValido = 1;
  33. .                     break;
  34. .           case Adam:
  35. .                     pinValido = 1;
  36. .                     break;
  37. . .         case Iam:
  38. .                   pinValido = 1;
  39. .                   break;
  40. .           default:
  41. .               pinValido = 0;
  42. .               break;
  43. .
  44. .     return pinValido;
  45. . }
  46.  


No creo que este codigo compile, pero te da una idea de por donde ir.
Lo que hicimos es llevar toda la concición que estaba dentro del while a una función para que el codigo sea mas legible y al mismo tiempo que puedas reutilizar esa validación cada vez que la necesites sin escribir if... if... if...

Aclaracion, dentro de la función puedes utilizar las variables que fueron definidas arriba porque estan como constantes en un scope global, si no hubiera sido asi, deberias haberlas definido dentro de la misma función.

Espero haberte ayudado, Saludos !


Con la fuerza del mar, con la paz del rio


Desconectado ian007lol

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

Re:Ayuda C++ codigo con do-while y if para insertar PIN

  • en: Noviembre 22, 2019, 07:18:57 pm
gracias por la ayuda, aún así con mi nivel no se que hacen "break" "default" "case" o "switch", todavía no lo estudié. Aún así me puedo imaginar lo que hacen pero de todas formas, aún con la ayuda que me diste, no se hacer que el programa funcione. Muchas gracias de todas formas por tu tiempo.

Marcado como mejor respuesta por: ian007lol en Noviembre 23, 2019, 01:13:09 pm

Conectado DtxdF

  • *
  • Moderator
  • Mensajes: 524
  • Actividad:
    100%
  • Reputación 11
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.

Re:Ayuda C++ codigo con do-while y if para insertar PIN

  • en: Noviembre 22, 2019, 10:15:28 pm
@ian007lol

No sé si esto le sirva; Modifiqué un poco de su código, sin usar "case", "default", "switch", aunque sí usé "break", le digo que sólo es para salir del bucle. Nada paranormal.

Código: C++
  1. #include <stdio.h>
  2. #define True 1
  3.  
  4. int main(void)
  5. {
  6.     const int Nina = 2403;
  7.     const int Escuela = 1234;
  8.     const int Adam = 131199;
  9.     const int Antonio = 201066;
  10.     const int Ian = 240702;
  11.     const int Cristina = 221167;
  12.  
  13.     int Pin;
  14.  
  15.     while (True) {
  16.    
  17.             printf("Ingresé el susodicho Pin:\n");
  18.             scanf("%i", &Pin);
  19.  
  20.             if (Pin == Ian) {
  21.            
  22.                     printf("Joven programador el cual aprecia los videojuegos y la eficiencia ante todo. Su mejor amigo se llama oliver\n");
  23.            
  24.             } else if (Pin == Nina) {
  25.            
  26.                     printf("Nina. La gata de la familia. A veces cariñosa, a veces antipatica\n");
  27.            
  28.             } else if (Pin == Escuela) {
  29.            
  30.                     printf("Es un Technisches Gymnasium con varias especializaciones. Ian acude a esta instalacion\n");
  31.            
  32.             } else if (Pin == Adam) {
  33.            
  34.                     printf("Joven cocinero el cual aprecia los videojuegos y la cocina ante todo. No tiene amigos ya que se los comio\n");
  35.            
  36.             } else if (Pin == Antonio) {
  37.            
  38.                     printf("Conductor de autobuses experimentado el cual aprecia la familia y los amigos. El conocimiento es poder. \n");
  39.            
  40.             } else if (Pin == Cristina) {
  41.            
  42.                     printf("Ama de casa la cual ama a su familia y a sus seres queridos. El amor prevalecera\n");
  43.            
  44.             } else {
  45.  
  46.                     printf("¡Debe ingresar un valor válido para poder continuar!\n");
  47.                     continue;
  48.  
  49.             }
  50.  
  51.             break;
  52.  
  53.     }
  54.    
  55.     return 0;
  56.  
  57. }
  58.  

- DtxdF
« Última modificación: Noviembre 22, 2019, 10:18:28 pm por DtxdF »
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 135
  • Actividad:
    33.33%
  • Reputación 6
  • (:{
    • Ver Perfil

Re:Ayuda C++ codigo con do-while y if para insertar PIN

  • en: Noviembre 23, 2019, 05:19:38 am
Pues es buena la idea de bartz. Solo agregar que si existe el bool true or false.

Que los case si hacen lo mismo puedes agruparlos así:

Case Opcion1:
Case Opcion2:
Case Pepito:
  Variable=true;
Break;

Y si anda en C seguramente no tenga problemas en C++. C++ es una extension de C. No así como C# que ya es otra cosa distinta.

Bartz usa el while en lugar de do while pues en este caso se puede usar el do while pero ya me parece cuestion de gustos y prolijidad ya que no tenemos performance en requerimientos.




Desconectado ian007lol

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

Re:Ayuda C++ codigo con do-while y if para insertar PIN

  • en: Noviembre 23, 2019, 01:11:43 pm
muchisimas gracias, de verdad me ayudó.

Conectado Kirari

  • *
  • Underc0der
  • Mensajes: 100
  • Actividad:
    36.67%
  • Reputación 6
  • No dejes que el mundo te corrompa
    • Ver Perfil
    • Baúl para el público

Re:Ayuda C++ codigo con do-while y if para insertar PIN

  • en: Noviembre 23, 2019, 02:21:11 pm
Bueno, modificando un poco el código que hizo @DtxdF, acá le dejo la versión sin break, son equivalentes, pero quería aportar  ;D

Código: C++
  1. #include <stdio.h>
  2.  
  3.  
  4. int main(void)
  5. {
  6.  
  7.     const int Nina = 2403;
  8.     const int Escuela = 1234;
  9.     const int Adam = 131199;
  10.     const int Antonio = 201066;
  11.     const int Ian = 240702;
  12.     const int Cristina = 221167;
  13.  
  14.     int Pin;
  15.  
  16.     bool salir = false;
  17.  
  18.     printf("Si desea salir, ingrese 0.\n");
  19.  
  20.     printf("Ingrese Pin: ");
  21.     scanf("%i", &Pin);
  22.  
  23.     while ((Pin!=0) && (salir!=true))  
  24.     {
  25.         while ((Pin!=0) && (Pin!=Nina) && (Pin!=Escuela) && (Pin!=Adam) && (Pin!=Antonio) && (Pin!=Ian) && (Pin!=Cristina))
  26.         {
  27.             printf("¡Debe ingresar un valor válido para poder continuar!\n");
  28.             printf("Si desea salir, ingrese 0.\n");
  29.             printf("Ingrese Pin: ");
  30.             scanf("%i", &Pin);
  31.         }
  32.  
  33.         if ((Pin==0) && (salir==false))
  34.         {
  35.             salir = true;
  36.         }
  37.  
  38.         else
  39.         {
  40.             if (Pin == Ian) {
  41.                    
  42.                 printf("Joven programador el cual aprecia los videojuegos y la eficiencia ante todo. Su mejor amigo se llama oliver\n");
  43.                    
  44.             } else if (Pin == Nina) {
  45.                    
  46.                  printf("Nina. La gata de la familia. A veces cariñosa, a veces antipatica\n");
  47.                    
  48.             } else if (Pin == Escuela) {
  49.                    
  50.                  printf("Es un Technisches Gymnasium con varias especializaciones. Ian acude a esta instalacion\n");
  51.                    
  52.             } else if (Pin == Adam) {
  53.                    
  54.                 printf("Joven cocinero el cual aprecia los videojuegos y la cocina ante todo. No tiene amigos ya que se los comio\n");
  55.                    
  56.             } else if (Pin == Antonio) {
  57.                    
  58.                 printf("Conductor de autobuses experimentado el cual aprecia la familia y los amigos. El conocimiento es poder. \n");
  59.                    
  60.             } else if (Pin == Cristina) {
  61.                    
  62.                 printf("Ama de casa la cual ama a su familia y a sus seres queridos. El amor prevalecera\n");
  63.                    
  64.             }
  65.  
  66.             printf("Si desea salir, ingrese 0.\n");
  67.             printf("Ingrese Pin: ");
  68.             scanf("%i", &Pin);      
  69.         }
  70.      
  71.     }
  72.  
  73.    
  74.     return 0;
  75.  
  76. }
  77.  
  78.  

Saludos!
Kirari-
« Última modificación: Noviembre 23, 2019, 02:29:38 pm por Kirari »
Jamás te contarán la verdadera versión, siempre te dirán la suya... Por eso... Si quieres saber la verdad, debes buscarla tú mismo...

Desconectado Bartz

  • *
  • Moderador Global
  • Mensajes: 195
  • Actividad:
    40%
  • Reputación 8
  • ~Afaik~
    • Ver Perfil
gracias por la ayuda, aún así con mi nivel no se que hacen "break" "default" "case" o "switch", todavía no lo estudié.

Disculpa por no explicarlo, lo que hace el "Switch" es analizar una variable y asignarsela a una de las opciones que tiene en los "case"

"En caso de que (variable) sea igual a:
         case(Fernando):
                 Ejecuta este codigo
         case(Maria):
                 Ejecuta este codigo
         default: (Osea si no coincide con ninguna)
                 Ejecuta este codigo

En la practica se usa mucho para hacer un menu por ejemplo y darle opciones, entonces en el switch pones 1 2 3 4 o en el caso de que tengas que analizar muchas posibilidades de una misma variable.

Te dejo este link para que puedas verlo en detalle
https://www.tutorialspoint.com/cplusplus/cpp_switch_statement.htm

Saludos !


Con la fuerza del mar, con la paz del rio


 

Crear un archivo .vbs para ejecutar un archivo .bat en invisible

Iniciado por NMS

Respuestas: 2
Vistas: 10618
Último mensaje Marzo 13, 2017, 10:37:57 pm
por sadfud
[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 24328
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
Cómo uso la "/" para hacer un select en una tabla

Iniciado por tetano32

Respuestas: 3
Vistas: 3843
Último mensaje Diciembre 20, 2017, 04:41:12 pm
por tetano32
allegro 5,opngl,sdk para fan game modo storyboard game

Iniciado por Mr.Tru

Respuestas: 2
Vistas: 3017
Último mensaje Mayo 23, 2018, 01:19:20 pm
por Mr.Tru
Parámetros para un script que permita saltar a root con "su"

Iniciado por DUDA

Respuestas: 5
Vistas: 3724
Último mensaje Marzo 28, 2017, 08:23:12 pm
por seth