// Laboratorio, sesión 1: prueba diagnóstica. No tiene nota: sirve para que cada uno vea
// qué debe repasar. Trabajen sin mirar sus apuntes hasta donde puedan.
//
// average_of_two(a, b)   devuelve el promedio exacto de a y b, con decimales.
//                        Con 7 y 2 devuelve 4.5.
// clamp(value, low, high)  devuelve low si value es menor que low, high si value es
//                        mayor que high, y value en otro caso. low no pasa de high.
// sum_to(n)              devuelve 1 + 2 + ... + n, y 0 si n no es mayor que 0.
// digit_value(c)         devuelve el valor numérico del carácter de '0' a '9': con '7'
//                        devuelve 7. Con cualquier otro carácter devuelve -1.
// dice_ways(total)       devuelve de cuántas formas dos dados suman total, contando
//                        (1, 6) y (6, 1) como formas distintas. Con 7 devuelve 6, y con
//                        un total imposible, 0.
//
// Los números que reciben average_of_two, clamp y sum_to son pequeños, así que no hay
// riesgo de overflow.
//
// Las versiones de abajo compilan, pero están mal: solo sirven para empezar. Reemplácenlas.
// Las funciones no leen ni escriben nada.
//
// Pruébenlo con make test-diagnostic. Cada función que falla dice qué semana de
// Introducción a la Computación conviene repasar.
#include <stdio.h>

double average_of_two(int a, int b) {
    return a + b;
}

int clamp(int value, int low, int high) {
    return value + low - high;
}

int sum_to(int n) {
    return n;
}

int digit_value(char c) {
    return c;
}

int dice_ways(int total) {
    return total;
}

// Este main es para que hagan sus propios intentos. Las pruebas no lo usan.
int main(void) {
    printf("%.1f\n", average_of_two(7, 2));
    printf("%d\n", clamp(25, 0, 20));
    printf("%d\n", sum_to(4));
    printf("%d\n", digit_value('7'));
    printf("%d\n", dice_ways(7));
    return 0;
}
