Universidad nacional de ingeniería
2 evaluación de programación
Integrantes:
Adriana cordonero.
Jimena Méndez.
Diseñe un algoritmo para cada caso, use Visual Studio o Visual Studio Code
para modelar el diagrama los algoritmos, recuerde la estructura básica de un
programa. los algoritmos con Visual Studio o Visual Studio Code
void calcular_total() {
char nombre_cliente[50];
int cantidad;
float precio;
char tipo_cliente;
float subtotal, descuento, impuesto, total;
printf("Ingrese el nombre del cliente: ");
scanf("%s", nombre_cliente);
printf("Ingrese la cantidad del producto: ");
scanf("%d", &cantidad);
printf("Ingrese el precio del producto: ");
scanf("%f", &precio);
printf("Ingrese el tipo de cliente (A/B): ");
scanf(" %c", &tipo_cliente);
subtotal = cantidad * precio;
if (tipo_cliente == 'A' || cantidad > 100) {
descuento = subtotal * 0.10;
} else {
descuento = subtotal * 0.05;
impuesto = (subtotal - descuento) * 0.15; // Suponiendo un impuesto del 15%
total = subtotal - descuento + impuesto;
printf("Cliente: %s\n", nombre_cliente);
printf("Subtotal: %.2f\n", subtotal);
printf("Descuento: %.2f\n", descuento);
printf("Impuesto: %.2f\n", impuesto);
printf("Total a pagar: %.2f\n", total);
void calcular_notas() {
char nombre_alumno[50];
float nota_examen, nota_acumulada, nota_final;
int aprobados = 0, reprobados = 0;
char continuar;
do {
printf("Ingrese el nombre del alumno: ");
scanf("%s", nombre_alumno);
printf("Ingrese la nota del examen: ");
scanf("%f", ¬a_examen);
printf("Ingrese la nota acumulada: ");
scanf("%f", ¬a_acumulada);
nota_final = (nota_examen + nota_acumulada) / 2;
if (nota_final >= 60) {
printf("Alumno: %s\n", nombre_alumno);
printf("Nota final: %.2f\n", nota_final);
printf("Observación: Aprobado\n");
aprobados++;
} else {
printf("Alumno: %s\n", nombre_alumno);
printf("Nota final: %.2f\n", nota_final);
printf("Observación: Reprobado\n");
reprobados++;
printf("¿Desea continuar? (s/n): ");
scanf(" %c", &continuar);
} while (continuar == 's');
printf("Número de aprobados: %d\n", aprobados);
printf("Número de reprobados: %d\n", reprobados);
void sumar_consecutivos() {
int inicio, suma = 0;
printf("Ingrese el número inicial: ");
scanf("%d", &inicio);
for (int i = inicio; i < inicio + 100; i++) {
suma += i;
printf("La suma de 100 números consecutivos a partir de %d es: %d\n", inicio, suma);
void sumar_pares() {
int n, suma = 0;
printf("Ingrese el número de términos pares a sumar: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
suma += 2 * i;
printf("La suma de los primeros %d números pares es: %d\n", n, suma);
void verificar_clave() {
char clave_correcta[] = "eureka";
char clave[50];
int intentos = 3;
while (intentos > 0) {
printf("Ingrese la clave: ");
scanf("%s", clave);
if (strcmp(clave, clave_correcta) == 0) {
printf("¡Clave correcta!\n");
return;
} else {
intentos--;
printf("Clave incorrecta. Te quedan %d intentos.\n", intentos);
printf("Has agotado los 3 intentos.\n");
void contar_multiplos() {
int contador = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0 || i % 3 == 0) {
contador++;
printf("El número de múltiplos de 2 o 3 entre 1 y 100 es: %d\n", contador);
int main() {
int opcion;
do {
printf("\nSeleccione una opción:\n");
printf("1. Calcular total a pagar\n");
printf("2. Calcular nota final\n");
printf("3. Sumar 100 números consecutivos\n");
printf("4. Sumar N primeros números pares\n");
printf("5. Verificar clave\n");
printf("6. Contar múltiplos de 2 o 3 entre 1 y 100\n");
printf("7. Salir\n");
printf("Ingrese su opción: ");
scanf("%d", &opcion);
switch (opcion) {
case 1:
calcular_total();
break;
case 2:
calcular_notas();
break;
case 3:
sumar_consecutivos();
break;
case 4:
sumar_pares();
break;
case 5:
verificar_clave();
break;
case 6:
contar_multiplos();
break;
case 7:
printf("Saliendo...\n");
break;
default:
printf("Opción no válida. Intente de nuevo.\n");
} while (opcion != 7);
return 0;
[1:33 p.m., 23/9/2024] Esther: #include <stdio.h>
#include <math.h>
#include <stdbool.h>
#include <string.h>
// Funciones para el problema geométrico
typedef struct {
float x;
float y;
} Vector;
float distancia(Vector a, Vector b) {
return sqrt(pow(b.x - a.x, 2) + pow(b.y - a.y, 2));
bool es_triangulo(float a, float b, float c) {
return (a + b > c) && (a + c > b) && (b + c > a);
void tipo_triangulo(float a, float b, float c) {
if (a == b && b == c) {
printf("El triángulo es EQUILÁTERO\n");
} else if (a == b || a == c || b == c) {
printf("El triángulo es ISÓSCELES\n");
} else {
printf("El triángulo es ESCALENO\n");
void calcular_triangulo() {
Vector A, B, C;
printf("Ingrese las coordenadas del vector A (x y): ");
scanf("%f %f", &A.x, &A.y);
printf("Ingrese las coordenadas del vector B (x y): ");
scanf("%f %f", &B.x, &B.y);
printf("Ingrese las coordenadas del vector C (x y): ");
scanf("%f %f", &C.x, &C.y);
float AB = distancia(A, B);
float BC = distancia(B, C);
float CA = distancia(C, A);
if (es_triangulo(AB, BC, CA)) {
float perimetro = AB + BC + CA;
printf("Los vectores forman un triángulo.\n");
printf("Perímetro: %.2f\n", perimetro);
tipo_triangulo(AB, BC, CA);
} else {
printf("Los Vectores no forman un Triángulo.\n");
}
}
// Función para la tabla de valores
void calcular_tabla() {
printf("N\tN^2\tN^3\tN^4\n");
for (int i = 1; i <= 10; i++) {
printf("%d\t%d\t%d\t%d\n", i, i*i, i*i*i, i*i*i*i);
// Clases y funciones anteriores con getters y setters
typedef struct {
char nombre[50];
int cantidad;
float precio;
char tipo;
} Cliente;
float get_subtotal(Cliente *cliente) {
return cliente->cantidad * cliente->precio;
float get_descuento(Cliente *cliente) {
if (cliente->tipo == 'A' || cliente->cantidad > 100) {
return get_subtotal(cliente) * 0.10;
} else {
return get_subtotal(cliente) * 0.05;
}
float get_impuesto(Cliente *cliente) {
return (get_subtotal(cliente) - get_descuento(cliente)) * 0.15;
float get_total(Cliente *cliente) {
return get_subtotal(cliente) - get_descuento(cliente) + get_impuesto(cliente);
void calcular_total() {
Cliente cliente;
printf("Ingrese el nombre del cliente: ");
scanf("%s", cliente.nombre);
printf("Ingrese la cantidad del producto: ");
scanf("%d", &cliente.cantidad);
printf("Ingrese el precio del producto: ");
scanf("%f", &cliente.precio);
printf("Ingrese el tipo de cliente (A/B): ");
scanf(" %c", &cliente.tipo);
printf("Cliente: %s\n", cliente.nombre);
printf("Subtotal: %.2f\n", get_subtotal(&cliente));
printf("Descuento: %.2f\n", get_descuento(&cliente));
printf("Impuesto: %.2f\n", get_impuesto(&cliente));
printf("Total a pagar: %.2f\n", get_total(&cliente));
typedef struct {
char nombre[50];
float nota_examen;
float nota_acumulada;
} Alumno;
float get_nota_final(Alumno *alumno) {
return (alumno->nota_examen + alumno->nota_acumulada) / 2;
const char* get_observacion(Alumno *alumno) {
return get_nota_final(alumno) >= 60 ? "Aprobado" : "Reprobado";
void calcular_notas() {
Alumno alumno;
int aprobados = 0, reprobados = 0;
char continuar;
do {
printf("Ingrese el nombre del alumno: ");
scanf("%s", alumno.nombre);
printf("Ingrese la nota del examen: ");
scanf("%f", &alumno.nota_examen);
printf("Ingrese la nota acumulada: ");
scanf("%f", &alumno.nota_acumulada);
printf("Alumno: %s\n", alumno.nombre);
printf("Nota final: %.2f\n", get_nota_final(&alumno));
printf("Observación: %s\n", get_observacion(&alumno));
if (strcmp(get_observacion(&alumno), "Aprobado") == 0) {
aprobados++;
} else {
reprobados++;
printf("¿Desea continuar? (s/n): ");
scanf(" %c", &continuar);
} while (continuar == 's');
printf("Número de aprobados: %d\n", aprobados);
printf("Número de reprobados: %d\n", reprobados);
void sumar_consecutivos() {
int inicio, suma = 0;
printf("Ingrese el número inicial: ");
scanf("%d", &inicio);
for (int i = inicio; i < inicio + 100; i++) {
suma += i;
printf("La suma de 100 números consecutivos a partir de %d es: %d\n", inicio, suma);
void sumar_pares() {
int n, suma = 0;
printf("Ingrese el número de términos pares a sumar: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
suma += 2 * i;
printf("La suma de los primeros %d números pares es: %d\n", n, suma);
void verificar_clave() {
char clave_correcta[] = "eureka";
char clave[50];
int intentos = 3;
while (intentos > 0) {
printf("Ingrese la clave: ");
scanf("%s", clave);
if (strcmp(clave, clave_correcta) == 0) {
printf("¡Clave correcta!\n");
return;
} else {
intentos--;
printf("Clave incorrecta. Te quedan %d intentos.\n", intentos);
printf("Has agotado los 3 intentos.\n");
}
void contar_multiplos() {
int contador = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0 || i % 3 == 0) {
contador++;
printf("El número de múltiplos de 2 o 3 entre 1 y 100 es: %d\n", contador);
int main() {
int opcion;
do {
printf("\nSeleccione una opción:\n");
printf("1. Calcular total a pagar\n");
printf("2. Calcular nota final\n");
printf("3. Sumar 100 números consecutivos\n");
printf("4. Sumar N primeros números pares\n");
printf("5. Verificar clave\n");
printf("6. Contar múltiplos de 2 o 3 entre 1 y 100\n");
printf("7. Calcular si tres vectores forman un triángulo\n");
printf("8. Calcular tabla de valores\n");
printf("9. Salir\n");
printf("Ingrese su opción: ");
scanf("%d", &opcion);
switch (opcion) {
case 1:
calcular_total();
break;
case 2:
calcular_notas();
break;
case 3:
sumar_consecutivos();
break;
case 4:
sumar_pares();
break;
case 5:
verificar_clave();
break;
case 6:
contar_multiplos();
break;
case 7:
calcular_triangulo();
break;
case 8:
calcular_tabla();
break;
case 9:
printf("Saliendo...\n");
break;
default:
printf("Opción no válida. Intente de nuevo.\n");
} while (opcion != 9);
return 0;
}c