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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  no entiendo como hacerlo en c++ me podrian ayudar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: no entiendo como hacerlo en c++ me podrian ayudar  (Leído 3,016 veces)
ryukay

Desconectado Desconectado

Mensajes: 3


Ver Perfil
no entiendo como hacerlo en c++ me podrian ayudar
« en: 31 Enero 2018, 21:35 pm »

 Elabora un programa que determine como es el puntaje obtenido tras lanzar tres monedas al aire en función de la cantidad de caras obtenidas, de acuerdo
   a lo siguiente:
      • Tres caras, excelente
      • Dos caras, muy bien
      • Una cara, regular
      • Ninguna cara, pésimo


« Última modificación: 31 Enero 2018, 22:07 pm por ryukay » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: no entiendo como hacerlo en c++ me podrian ayudar
« Respuesta #1 en: 1 Febrero 2018, 01:51 am »

Por mal camino vas, si no sabes ni por donde empezar...
Deja por un momento de pensar en que tienes que programar... esencialmente lo primero es pensar, discurrir, buscar una solución incluso mecánica, luego es cuetión de traducirlo a código...

Imagina eso, 3 monedas... las lanzas al aire (al gusto, las 3 ala vez o una tras otra), luego cuentas el resultado y replicas: han salido 3 caras, dos caras, 1 cara, ninguna cara... luego cuando eso  sucede, en vez de decir eso, lo cambias por el adejtivo que te reclaman...

Esto mismo se plasma aquí:
Código:
constante c_MONEDAS = 3, c_FACETAS = 2, c_SOLUCION = 1

funcion Lanzamiento3Monedas
    entero caras
    string respuesta

    Hacer
        caras = LanzarMonedas(c_MONEDAS, c_FACETAS, c_SOLUCION)
        Seleccionar casos para caras
            caso 3; respuesta = "excelente"
            caso 2; respuesta = "muy bien"
            caso 1; respuesta = "regular"
            caso 0; respuesta = "pésima"
        fin seleccion
        MostrarMensaje ("Tu tirada ha sido " + respuesta)
        respuesta = PreguntarAlJugador("Desea jugar otra vez? (S/N).")
    Repetir mientras Respuesta = "s" o respuesta ="S"
fin funcion

Se lanzan 3 monedas. Cada moneda tiene 2 facetas. la que se da por buena es la 1 (cara, la 2 sería cruz) // ó 0 y 1...
Interesa usar el parámetro facetas, porque si nos piden tirar un dado de 6 caras, o de 12, ó de 3, 5, etc... no requiere modificar la función, solo cambiar los valores  asignados a las constantes.
Código:
entero = funcion LanzarMonedas(entero cantidad, entero facetas, entero facetaEsperada)
    entero k, cuenta, valor

    bucle para k desde 1 hasta cantidad
        valor = random(entre 1 y facetas) // ó entre 0 y facetas-1
        si (valor = facetaesperada) luego
            cuenta +=1
        fin si
    fin bucle
    devolver cuenta
fin funcion

Hale, a tu esfuerzo queda entenderlo y pasarlo desde pseudocódigo a código...


« Última modificación: 1 Febrero 2018, 01:53 am por NEBIRE » En línea

ryukay

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: no entiendo como hacerlo en c++ me podrian ayudar
« Respuesta #2 en: 1 Febrero 2018, 02:06 am »

lo que sucde que el profesor que me estaba enseñando programacion en c++ no explicaba nada y mas bien cuando el explicaba los ejercicios se equivocaba a cada rato, nosostros lo teniamos que corregir a el en las clases y lo unico que decia era que lo hacia a drede para que uno buscara el error por eso pedi ayuda del ejercicio de esa forma
En línea

ryukay

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: no entiendo como hacerlo en c++ me podrian ayudar
« Respuesta #3 en: 1 Febrero 2018, 02:07 am »

gracias por explicar ya tengo una idea de como hacerlo
En línea

dijsktra

Desconectado Desconectado

Mensajes: 110


Mr Edsger Dijsktra (Tribute to)


Ver Perfil
Re: no entiendo como hacerlo en c++ me podrian ayudar
« Respuesta #4 en: 1 Febrero 2018, 16:34 pm »

A ver si puede valerte esto...


Código
  1.  
  2. #include <stdio.h>
  3. #include <assert.h>
  4.  
  5. /*
  6.    P : \forall i : 0 <= i < 3 : w[i]='c' or w[i]='+'
  7.    Q : #i : 0 <= i < 3 : w[i]='c'
  8.    O(1)
  9.    I : P[3/n] and 0 <= n <= 3
  10.    C(n) = 3 - n
  11. */
  12. int eval(const char w[])
  13. {
  14.  int n,s;
  15.  for(n=s=0;n<3;n++)
  16.      s+=(w[n]=='c');
  17.  return s;
  18. }
  19.  
  20. /* Mapping int -> const char[]  */
  21. const char *banner[] = {"bad", "medium","very good","excellent"};
  22.  
  23. int main(int argc, char *args[])
  24. {
  25.  char w[512];
  26.  char *c;
  27.  while (scanf("%s",w)!=EOF)
  28.    {
  29.      /* check protocol  O(1) */
  30.      int n,l;
  31.      for(n=l=0,c=w ; (n<3) && *c; n++,c++)
  32.       l+=(*c=='+' ||*c=='c');
  33.      assert((*c==0) && (n==3) && (l==3));
  34.      /* P */
  35.      printf("%s : %s \n",banner[eval(w)], w);
  36.    }
  37.  return 0;
  38. }

Si estás empezando, fíjate solo en la funcion eval()... El resto (comentarios) se entiende en cursos más avanzados.
El programa lee resultados de lanzamientos de 3 monedas. no se exige que estos sean generados por el programa, pero SI que sean resultados de lanzamientos de 3 monedas. En otro caso, se aborta el programa.
Se acaba el programa con Ctr-D sobre un terminal Linux, o Ctr-Z + Intro en Windows. esto es es la salida,

Código:
ccc
excellent : ccc
cc+
very good : cc+
+cc
very good : +cc
++c
medium : ++c
c+c
very good : c+c
c++
medium : c++
+++
bad : +++
+-+
main: main.c:33: main: Assertion `(*c==0) && (n==3) && (l==3)' failed.
Aborted


« Última modificación: 2 Febrero 2018, 12:07 pm por dijsktra » En línea

Si la depuración es el proceso de eliminar fallos en el software, entonces programar debe ser el proceso de ponerlos dentro. (Edsger Dijsktra)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
hola me podeis ayudar entiendo rapido soy informatica pero necesito saber como
Software
zapatorosa2005 1 2,529 Último mensaje 28 Diciembre 2004, 10:40 am
por Songoku
por favor ayuda con este programa no entiendo como hacerlo
Programación C/C++
enrix507 1 2,366 Último mensaje 16 Julio 2014, 06:41 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines