Código de la clase práctica anterior, preguntas para la siguiente

13 views
Skip to first unread message

Juan Pablo Capurro

unread,
Sep 11, 2018, 10:18:02 PM9/11/18
to algoritmos7540-mm

Hola!

Si me informaron bien, hoy vimos pasaje de parámetros por referencia en la clase teórica ✨.
Por lo que vale la pena revisar el código de la clase práctica pasada, para el ejercicio de jugar al siete y medio:

#include <stdio.h>
#include <stdbool.h>

const char OPCION_SEGUIR = 's';
int main(){
  bool sigue_manuel = true;
  bool sigue_andres = true;
  float puntos_manuel = 0;
  float puntos_andres = 0;
  char opcion;
  int carta;
  printf("Manuel: \n");
  printf("Queres una carta? %c/n \n", OPCION_SEGUIR);
  scanf(" %c", &opcion);
  if (opcion == OPCION_SEGUIR){
    printf("psst! necesito un numero aleatorio 1-10");
    scanf("%i", &carta);
    if(carta > 7){
      puntos_manuel += 0.5;
    } else {
      puntos_manuel += carta;
    }
  }
  printf("manuel tiene %f puntos\n", puntos_manuel);

  return 0;
}

Y el que llevé como resolución tentativa, con dos jugadores y modularizado hasta donde podríamos haber llegado esa clase:

#include<stdio.h>
#include<stdbool.h>
const double LIMITE_PUNTOS_JUEGO = 7.5;
const char OPCION_SEGUIR='y';

bool seguir_jugando(){
    char opcion;
    puts("Queres una carta?");
    scanf(" %c",&opcion);
    return opcion == OPCION_SEGUIR;
}

double obtener_valor_a_sumar(){
  int numero_aleatorio;
  puts("psst! necesito un numero aleatorio 1-10");
  scanf(" %i", &numero_aleatorio);
  if(numero_aleatorio>7){
    return 0.5;
  } else{
    return numero_aleatorio;
  }
}

int main(){
  double puntos_jugador_1=0, puntos_jugador_2=0;
  bool sigue_jugador_1 = true, sigue_jugador_2 = true;

  while (sigue_jugador_1 || sigue_jugador_2){
    puts("Jugador 1");
    if(seguir_jugando()){
      puntos_jugador_1 += obtener_valor_a_sumar();
      printf("Tenes %lf puntos\n", puntos_jugador_1);
      if (puntos_jugador_1 > LIMITE_PUNTOS_JUEGO) {
        puts("Te pasaste! Perdiste!");
        sigue_jugador_1 = false;
      }
    } else {
      sigue_jugador_1 = false;
    }
    puts("Jugador 2");
    if(seguir_jugando()){
      puntos_jugador_2 += obtener_valor_a_sumar();
      printf("Tenes %lf puntos\n", puntos_jugador_2);
      if (puntos_jugador_2 > LIMITE_PUNTOS_JUEGO) {
        puts("Te pasaste! Perdiste!");
        sigue_jugador_2 = false;
      }
    } else {
      sigue_jugador_2 = false;
    }
  }
  printf("El juego termino. \nEl jugador 1 tiene %lf, y el 2 %lf", puntos_jugador_1, puntos_jugador_2);
  return 0;

}

En la siguiente clase, 13/11/2018, vamos a, durante la primer mitad de la misma, seguir con la modularización de ese mismo ejercicio, pero ahora pudiendo hacer uso de pasaje de variables por referencia.

Puntos a pensar:

  • Dónde hay repetición de código?
  • Cómo podríamos evitarla?
    • Por qué no hubiéramos podido hacer ^ con sólamente parámetros por valor?
  • Qué firmas tendrían las funciones a usar?

Nos vemos el jueves!


Saludos, Juan Pablo >^.^<.

Reply all
Reply to author
Forward
0 new messages