UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS
COMPUTACIONALES
DEPARTAMENTO DE PROGRAMACION DE
COMPUTADORA
Proyecto Final Manejo de Arreglos
FACILITADORA: Miriam Fernandez ASIGNATURA: Programación
CAPÍTULOS: todos FECHA DE ASIGNACIÓN: 12/10/2023
OBJETIVOS:
Que el estudiante sea capaz debe:
Manejar los elementos y sentencia básicas, sentencias de control y
arreglos, atendiendo a las especificaciones de los algoritmos y el
paradigma estructurado.
Resolver el problema aplicando sentencias de control y arreglos,
atendiendo a las especificaciones del algoritmo y el paradigma
estructurado.
Introducción
En este proyecto podremos ver y explorar mas sobre los programas en c, la función de los
arreglos y nuestra capacidad de desarrollar un programa que corra de forma fácil y correcta.
También ha desarrollar nuestra capacidad de solución de problemas ya que la necesitaremos
para crear el programa y resuelva lo que nos piden.
ENUNCIADOS.
1. Un maestro de primaria está interesado en motivar a sus estudiantes a la práctica de cálculos
mentales, para esto, elabore un programa que funcione en forma de juego bajo las siguientes
condiciones.
• Establezca 3 oportunidades para cada jugador. Y 5 operaciones random para cada
jugador. El juego finaliza cuando terminen las oportunidades para cualquiera de los
jugadores o cuando finalice la ronda de 5 operaciones.
• La cantidad de jugadores serán de 2 estudiantes.
• Se debe registrar el nombre y grado de los jugadores.
• Lleve el registro de cada operación por jugador, las correctas y las incorrectas. Las
operaciones son suma, resta y multiplicación. En las operaciones de suma y resta deberán
ser con números menores a 99. Y en las multiplicaciones menores a 12.
• Cuando el estudiante no acierte, el programa deberá descontarle de la cantidad de
oportunidades.
• El programa debe imprimir los puntajes de cada jugador por tipo de operación y un
promedio general.
Programa
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Función para generar un número aleatorio en el rango especificado
int generarNumeroAleatorio(int min, int max) {
return rand() % (max - min + 1) + min;
}
// Función para realizar una operación y verificar la respuesta del jugador
int realizarOperacion(char operador, int num1, int num2) {
int resultado;
printf("\n%d %c %d = ", num1, operador, num2);
scanf("%d", &resultado);
return resultado == (operador == '+' ? num1 + num2 : (operador == '-' ? num1 - num2 : num1 *
num2));
}
int main() {
srand(time(NULL));
// Definir variables
char nombreJugador1[50], nombreJugador2[50];
int gradoJugador1, gradoJugador2;
int oportunidades = 3;
int puntajeJugador1Suma = 0, puntajeJugador1Resta = 0, puntajeJugador1Multiplicacion = 0;
int puntajeJugador2Suma = 0, puntajeJugador2Resta = 0, puntajeJugador2Multiplicacion = 0;
// Obtener nombres y grados de los jugadores
printf("Ingrese el nombre del Jugador 1: ");
scanf("%s", nombreJugador1);
printf("Ingrese el grado del Jugador 1: ");
scanf("%d", &gradoJugador1);
printf("Ingrese el nombre del Jugador 2: ");
scanf("%s", nombreJugador2);
printf("Ingrese el grado del Jugador 2: ");
scanf("%d", &gradoJugador2);
// Iniciar el juego
for (int ronda = 1; ronda <= 5; ronda++) {
printf("\nRonda %d\n", ronda);
// Jugador 1
printf("\n%s, grado %d:\n", nombreJugador1, gradoJugador1);
if (realizarOperacion('+', generarNumeroAleatorio(1, 99), generarNumeroAleatorio(1, 99)))
{
puntajeJugador1Suma++;
} else {
oportunidades--;
}
if (realizarOperacion('-', generarNumeroAleatorio(1, 99), generarNumeroAleatorio(1, 99)))
{
puntajeJugador1Resta++;
} else {
oportunidades--;
}
if (realizarOperacion('*', generarNumeroAleatorio(1, 12), generarNumeroAleatorio(1, 12)))
{
puntajeJugador1Multiplicacion++;
} else {
oportunidades--;
}
// Jugador 2
printf("\n%s, grado %d:\n", nombreJugador2, gradoJugador2);
if (realizarOperacion('+', generarNumeroAleatorio(1, 99), generarNumeroAleatorio(1, 99)))
{
puntajeJugador2Suma++;
} else {
oportunidades--;
}
if (realizarOperacion('-', generarNumeroAleatorio(1, 99), generarNumeroAleatorio(1, 99)))
{
puntajeJugador2Resta++;
} else {
oportunidades--;
}
if (realizarOperacion('*', generarNumeroAleatorio(1, 12), generarNumeroAleatorio(1, 12)))
{
puntajeJugador2Multiplicacion++;
} else {
oportunidades--;
}
// Mostrar puntajes parciales
printf("\nPuntajes parciales:\n");
printf("%s: Suma(%d) Resta(%d) Multiplicación(%d)\n", nombreJugador1,
puntajeJugador1Suma, puntajeJugador1Resta, puntajeJugador1Multiplicacion);
printf("%s: Suma(%d) Resta(%d) Multiplicación(%d)\n", nombreJugador2,
puntajeJugador2Suma, puntajeJugador2Resta, puntajeJugador2Multiplicacion);
// Reiniciar oportunidades para la siguiente ronda
oportunidades = 3;
}
// Calcular promedio general
float promedioGeneral = ((float)(puntajeJugador1Suma + puntajeJugador1Resta +
puntajeJugador1Multiplicacion +
puntajeJugador2Suma + puntajeJugador2Resta +
puntajeJugador2Multiplicacion)) / 6;
// Mostrar puntajes finales y promedio general
printf("\n\nPuntajes finales:\n");
printf("%s: Suma(%d) Resta(%d) Multiplicación(%d)\n", nombreJugador1,
puntajeJugador1Suma, puntajeJugador1Resta, puntajeJugador1Multiplicacion);
printf("%s: Suma(%d) Resta(%d) Multiplicación(%d)\n", nombreJugador2,
puntajeJugador2Suma, puntajeJugador2Resta, puntajeJugador2Multiplicacion);
printf("Promedio General: %.2f\n", promedioGeneral);
return 0;
}
Conclusión
En resumen, los arreglos son herramientas poderosas y eficientes para organizar datos en programas,
proporcionando acceso rápido y secuencial a elementos del mismo tipo. Sin embargo, su tamaño fijo
y la necesidad de contener elementos del mismo tipo son consideraciones importantes al utilizar
arreglos en el desarrollo de software.
RUBRICA
ASPECTOS PARA EVALUAR/ CRITERIO DE EVALUACIÓN PUNTAJE PUNTAJE
MAXIMO OBTENIDO
[Link].
1. Entrega en la fecha y hora señalada 5
2. El trabajo posee introducción, portada, enunciado del problema, 10
referencias del juego y conclusiones
3. Creatividad
NOV.9
[Link]
Análisis y diseño 15
NOV.9
[Link]
1. Libre de errores, corre sin dificultad 10
2. Indenta las instrucciones 10
3. Utiliza documentación o comentarios 10
4. Manejo de los ciclos de repetición apropiados 10
5. Validaciones requeridas (entrada de datos) 10
6. Se aplican arreglos. 5
PRUEBA DE ESCRITORIO 15
TOTAL, DE PUNTOS 100
OBSERVACIONES