/*****************************
Taller extracurricular de programación C
UNAM-FCA
Programa:5
Objetivo:
Escriba un programa en C para calcular la depreciación anual de un activo fijo usando el método de línea recta y:
Una constante para los años de vida útil.
Variables para el nombre del bien, costo del activo, valor de rescate y depreciación anual.
Comente cada parte del programa: definición de constante, definición de variables, entrada de datos, cálculos y salida (mensaje: "Cálculo de depreciación en línea recta", nombre del bien, vida útil del activo, depreciación anual).
Fórmula: Depreciación anual = (Costo inicial del activo - Valor residual) / Vida útil (en años)
Fecha: 12 de Octubre de 2026
Programador: Paul Genaro Rodriguez Perez
*****************************/

#include <stdio.h>
#include <locale.h>

/* ===== Definición de constante ===== */
const int VIDA_UTIL = 5;     // años de vida útil del activo

int main(){
    /* ===== Definición de variables ===== */
    char nombre[50];               // nombre del bien
    float costo;                   // costo inicial del activo
    float valor_rescate;           // valor de rescate o residual
    int vida_util_uso;                 // años que se ha usado el activo
    float depreciacion_anual;      // depreciación anual
    float depreciacion_acumulada;  // depreciación de los años de uso
    float valor_libros;            // valor del activo después de los años de uso
    char texto[40];                // monto con formato de moneda para imprimir

    setlocale(LC_NUMERIC, "en_US.UTF-8"); // permite separar miles con comas usando %'

    /* ===== Entrada de datos ===== */
    printf("Ingrese el nombre del bien: ");
    scanf(" %49[^\n]", nombre);           // lee el nombre completo, con espacios (máximo 49 caracteres)
    printf("Ingrese el costo del activo: ");
    scanf("%f", &costo);                  // lee el costo del activo
    printf("Ingrese el valor de rescate: ");
    scanf("%f", &valor_rescate);          // lee el valor de rescate
    printf("Ingrese los años de uso del activo: ");
    scanf("%d", &vida_util_uso);              // lee los años que se ha usado

    /* ===== Cálculos ===== */
    depreciacion_anual = (costo - valor_rescate) / VIDA_UTIL;  // método de línea recta
    depreciacion_acumulada = depreciacion_anual * vida_util_uso;   // depreciación de los años de uso
    valor_libros = costo - depreciacion_acumulada;             // valor actual del activo

    /* ===== Salida ===== */
    // cada monto se arma primero en "texto" como "$4,000.00 MXN" y luego se imprime alineado
    printf("\n+============================================+\n");
    printf("|   Cálculo de depreciación en línea recta   |\n");
    printf("+============================================+\n");
    printf("| Nombre del bien:     %21.21s |\n", nombre);
    printf("|--------------------------------------------|\n");
    printf("| DATOS                                      |\n");
    sprintf(texto, "$%'.2f MXN", costo);
    printf("|   Costo del activo:  %21s |\n", texto);
    sprintf(texto, "$%'.2f MXN", valor_rescate);
    printf("|   Valor de rescate:  %21s |\n", texto);
    printf("|   Vida útil:         %16d años |\n", VIDA_UTIL);
    printf("|   Años de uso:       %16d años |\n", vida_util_uso);
    printf("|--------------------------------------------|\n");
    printf("| RESULTADOS                                 |\n");
    sprintf(texto, "$%'.2f MXN", depreciacion_anual);
    printf("|   Depreciación anual:     %16s |\n", texto);
    sprintf(texto, "$%'.2f MXN", depreciacion_acumulada);
    printf("|   Depreciación acumulada: %16s |\n", texto);
    sprintf(texto, "$%'.2f MXN", valor_libros);
    printf("|   Valor en libros:        %16s |\n", texto);
    printf("+============================================+\n");

    return 0;
}
