Está en la página 1de 16

TRABAJO FINAL ALGORITMIA

PRESENTADO POR: A
SANTIAGO JOSÉ RODRIGUEZ PEREZ
JUAN MANUEL GANTIVA CAMELO
MANUEL PISSO FIERRO

PRESENTADO A: A
NELLY CLAVIJO BUSTOS

UNIVERSIDAD COOPERATIVA DE COLOMBIA


IBAGUÉ / TOLIMA
ALGORITMIA
INGENIERIA EN SISTEMAS
17/11/2023
INTRODUCCIÓN:
El propósito de este trabajo final es poner a prueba nuestra
comprensión de la algoritmia, aplicando los conocimientos
adquiridos a un contexto real. A lo largo de estas páginas,
presentaremos una serie de problemas concretos que requerirán la
formulación de algoritmos específicos mediante pseudocódigos y la
representación visual a través de diagramas de flujo. Cada problema
planteado reflejará situaciones prácticas en las cuales la aplicación
de algoritmos se convierte en una herramienta valiosa para la
resolución de problemas cotidianos y complejos.

Además, este trabajo nos brindará la oportunidad de demostrar


nuestra habilidad para analizar, diseñar y optimizar algoritmos, así
como para comunicar de manera clara y precisa nuestras
soluciones. A medida que avancemos en la resolución de cada
problema, se evidenciará cómo los conceptos teóricos de la
algoritmia se traducen en soluciones tangibles y aplicables en
diversos escenarios.

Con este enfoque, buscamos consolidar y aplicar los conocimientos


obtenidos a lo largo del curso, al tiempo que exploramos la
versatilidad y el impacto de la algoritmia en la resolución de
problemas del mundo real. Este trabajo final representa, por lo tanto,
una oportunidad única para integrar la teoría y la práctica,
demostrando la capacidad para abordar desafíos algorítmicos con
ingenio y eficiencia.
JUSTIFICACIÓN:
Este trabajo final se fundamenta en la necesidad de aplicar los
conocimientos adquiridos en algoritmia a situaciones prácticas. La
creación de algoritmos eficientes es esencial en el desarrollo de
software, la optimización de procesos y la resolución de problemas
del mundo real. Este proyecto brinda la oportunidad de demostrar
nuestra capacidad para diseñar soluciones algorítmicas claras y
efectivas mediante pseudocódigos y diagramas de flujo.

La relevancia de este trabajo radica en la aplicabilidad directa de la


algoritmia en diversos sectores, desde la programación hasta la
toma de decisiones estratégicas. Además, destaca la importancia de
desarrollar habilidades analíticas y de resolución de problemas,
competencias esenciales en el ámbito profesional. En resumen, este
trabajo final ofrece una plataforma para evidenciar la traducción de
conceptos teóricos en soluciones prácticas, preparándonos para
enfrentar desafíos reales con enfoques lógicos y estructurados.
DESARROLLO:

1. Calculadora de Gastos Personales

Vamos a desarrollar una aplicación simple para ayudar a las personas a realizar
un seguimiento de sus gastos personales. Necesitamos crear un algoritmo que
permita a los usuarios ingresar sus gastos diarios y calcular el total de gastos
acumulados en una semana.

Registro de Gastos Diarios:


El programa debe permitir al usuario ingresar los gastos diarios durante una
semana (7 días).
Para cada día, el usuario ingresará la cantidad de dinero gastada.

Cálculo del Total de Gastos:


Al final de la semana, el programa debe calcular y mostrar el total de gastos
realizados por el usuario.

Promedio de Gastos Diarios:


Además, el programa debe calcular y mostrar el promedio de gastos diarios del
usuario durante la semana.

Gasto Máximo y Mínimo:


Se debe mostrar el día en que el usuario gastó la mayor cantidad de dinero y el
día en que gastó la menor cantidad.
SOLUCION AL PROBLEMA EN PSEINT (PSEUDOCODIGO):

Algoritmo CalculadoraGastosPersonales

// Declaración de variables
Definir gastosDiarios Como Real
Definir totalGastos, promedioGastos Como Real
Definir gastoMaximo, gastoMinimo Como Real
Definir diaMaximo, diaMinimo Como Entero

// Inicialización de variables
totalGastos <- 0
gastoMaximo <- 0
gastoMinimo <- 9999999

// Registro de gastos diarios

Escribir "Calculadora de gastos diarios de la semana"

Para i <- 1 Hasta 7 Con Paso 1 Hacer


Escribir "Ingrese los gastos del día ", i, ": $"
Leer gastosDiarios

// Cálculo del total de gastos


totalGastos <- totalGastos + gastosDiarios

// Actualización del gasto máximo y mínimo


Si gastosDiarios > gastoMaximo Entonces
gastoMaximo <- gastosDiarios
diaMaximo <- i
FinSi

Si gastosDiarios < gastoMinimo Entonces


gastoMinimo <- gastosDiarios
diaMinimo <- i
FinSi
FinPara

// Cálculo del promedio de gastos diarios


promedioGastos <- totalGastos / 7

// Mostrar resultados
Escribir ""
Escribir "Total de gastos semanales: $", totalGastos
Escribir "Promedio de gastos diarios: $", promedioGastos
Escribir "Día con mayor gasto: Día ", diaMaximo, " ($", gastoMaximo, ")"
Escribir "Día con menor gasto: Día ", diaMinimo, " ($", gastoMinimo, ")"
FinAlgoritmo
SOLUCION AL PROBLEMA EN C:

#include <stdio.h>

int main() {
// Declaración de variables
float gastosDiarios[7];
float totalGastos = 0;
float promedioGastos;
float gastoMaximo = 0, gastoMinimo = 9999999;
int diaMaximo, diaMinimo;

// Registro de gastos diarios


for (int i = 0; i < 7; ++i) {
printf("Ingrese los gastos del día %d: $", i + 1);
scanf("%f", &gastosDiarios[i]);

// Cálculo del total de gastos


totalGastos += gastosDiarios[i];

// Actualización del gasto máximo y mínimo


if (gastosDiarios[i] > gastoMaximo) {
gastoMaximo = gastosDiarios[i];
diaMaximo = i + 1;
}
if (gastosDiarios[i] < gastoMinimo) {
gastoMinimo = gastosDiarios[i];
diaMinimo = i + 1;
}
}

// Cálculo del promedio de gastos diarios


promedioGastos = totalGastos / 7;

// Mostrar resultados
printf("\nTotal de gastos semanales: $%.2f\n", totalGastos);
printf("Promedio de gastos diarios: $%.2f\n", promedioGastos);
printf("Día con mayor gasto: Día %d ($%.2f)\n", diaMaximo, gastoMaximo);
printf("Día con menor gasto: Día %d ($%.2f)\n", diaMinimo, gastoMinimo);

return 0;
}

DIAGRAMA DE FLUJO:
2. Problema: Llamadas

Vamos a realizar un algoritmo para determinar cuánto debe pagar por cada
concepto una persona que realiza una llamada.

Parametros de el cobro de una llamada:

Cuando se realiza una llamada, el cobro está determinado por el tiempo que dura
la llamada, de tal forma que los primeros cinco minutos cuestan $1.00 c/u, los
siguientes tres, $80 c/u, los siguientes dos minutos, 470 c/u, y a partir del décimo
minuto, $50 c/u. Además, se carga un impuesto de 3 % cuando es domingo, y si
es día hábil, en turno matutino, 15 %, y en turno vespertino, 10 %. Realice un
algoritmo

SOLUCION AL PROBLEMA EN PSEINT (PSEUDOCODIGO):

Algoritmo CobroLlamadas
Definir duracionLlamada, diaSemana, turno Como Entero
Definir costoLlamada, impuesto, costoTotal Como Real
// Solicitar al usuario la duración de la llamada en minutos
Escribir "Ingrese la duración de la llamada en minutos: "
Leer duracionLlamada

// Solicitar al usuario el día de la semana (1: Domingo, 2-6: Lunes a Viernes, 7:


Sábado)
Escribir "Ingrese el día de la semana (1-7): "
Leer diaSemana

// Solicitar al usuario el turno de la llamada (1: Matutino, 2: Vespertino)


Escribir "Ingrese el turno de la llamada (1: Matutino, 2: Vespertino): "
Leer turno

// Determinar el costo de la llamada según la duración


Si duracionLlamada <= 5 Entonces
costoLlamada <- duracionLlamada * 1.00
Sino Si duracionLlamada <= 8 Entonces
costoLlamada <- 5.00 + (duracionLlamada - 5) * 0.80
Sino Si duracionLlamada <= 10 Entonces
costoLlamada <- 8.40 + (duracionLlamada - 8) * 4.70
Sino
costoLlamada <- 19.90 + (duracionLlamada - 10) * 5.00
FinSi

// Determinar el impuesto según el día de la semana y el turno


Si diaSemana = 1 Entonces
impuesto <- costoLlamada * 0.03
Sino Si diaSemana >= 2 Y diaSemana <= 6 Entonces
Si turno = 1 Entonces
impuesto <- costoLlamada * 0.15
Sino Si turno = 2 Entonces
impuesto <- costoLlamada * 0.10
Sino
Escribir("Turno no válido.")
FinSi
Finsi
FinSi
FinSi
FinSi
FinSi
Si diaSemana = 7 Entonces
impuesto <- 0.0 // No hay impuesto los sábados
Finsi

Si diaSemana > 7 Entonces


Escribir "Día de la semana no válido."
SiNo
// Calcular el costo total de la llamada
costoTotal <- costoLlamada + impuesto

// Mostrar los resultados al usuario


Escribir"Costo de la llamada: $", costoLlamada
Escribir"Impuesto: $", impuesto
Escribir"Costo total: $", costoTotal
FinSi
FinAlgoritmo
SOLUCION AL PROBLEMA EN C:

#include <stdio.h>

int main() {
int duracionLlamada, diaSemana, turno;
float costoLlamada, impuesto, costoTotal;

// Solicitar al usuario la duración de la llamada en minutos


printf("Ingrese la duración de la llamada en minutos: ");
scanf("%d", &duracionLlamada);

// Solicitar al usuario el día de la semana (1: Domingo, 2-6: Lunes a Viernes, 7:


Sábado)
printf("Ingrese el día de la semana (1-7): ");
scanf("%d", &diaSemana);

// Solicitar al usuario el turno de la llamada (1: Matutino, 2: Vespertino)


printf("Ingrese el turno de la llamada (1: Matutino, 2: Vespertino): ");
scanf("%d", &turno);

// Determinar el costo de la llamada según la duración


if (duracionLlamada <= 5) {
costoLlamada = duracionLlamada * 1.00;
} else if (duracionLlamada <= 8) {
costoLlamada = 5.00 + (duracionLlamada - 5) * 0.80;
} else if (duracionLlamada <= 10) {
costoLlamada = 8.40 + (duracionLlamada - 8) * 4.70;
} else {
costoLlamada = 19.90 + (duracionLlamada - 10) * 5.00;
}

// Determinar el impuesto según el día de la semana y el turno


if (diaSemana == 1) {
impuesto = costoLlamada * 0.03;
} else if (diaSemana >= 2 && diaSemana <= 6) {
if (turno == 1) {
impuesto = costoLlamada * 0.15;
} else if (turno == 2) {
impuesto = costoLlamada * 0.10;
} else {
printf("Turno no válido.\n");
return 1; // Código de error
}
} else if (diaSemana == 7) {
impuesto = 0.0; // No hay impuesto los sábados
} else {
printf("Día de la semana no válido.\n");
return 1; // Código de error
}

// Calcular el costo total de la llamada


costoTotal = costoLlamada + impuesto;

// Mostrar los resultados al usuario


printf("Costo de la llamada: $%.2f\n", costoLlamada);
printf("Impuesto: $%.2f\n", impuesto);
printf("Costo total: $%.2f\n", costoTotal);

return 0;
}

DIAGRAMA DE FLUJO:
CONCLUSION:

En este trabajo, aplicamos los principios de la algoritmia a situaciones prácticas,


diseñando soluciones mediante pseudocódigos y diagramas de flujo. Destacamos
la relevancia de la algoritmia en el desarrollo de software y la resolución de
problemas reales.

La experiencia reveló la utilidad directa de los algoritmos en diversos contextos,


desde la programación hasta decisiones estratégicas. Este enfoque no solo
fortaleció nuestras habilidades técnicas, sino también resaltó la importancia de
habilidades analíticas en el ámbito profesional.
En resumen, la algoritmia no solo es teoría; es una herramienta poderosa para
abordar desafíos con precisión. Este conocimiento se convierte en un activo clave
en nuestra preparación para enfrentar problemas en el campo de la informática y
más allá.

También podría gustarte