juegos

Juegos de terminal de Pancho: Catan (TUI, GUI, web, servidor, PicoCalc), ajedrez, calculadora y minijuegos
git clone https://git.lu3dhn.xyz/juegos.git
Log | Files | Refs

fmt.h (1226B)


      1 /* fmt.h - como se muestra un resultado: decimal (Norm/Fix/Sci/Eng) o forma exacta,
      2  * armado como Expr para dibujarlo con el mismo motor que la entrada. */
      3 #ifndef FMT_H
      4 #define FMT_H
      5 #include "num.h"
      6 #include "expr.h"
      7 
      8 enum { FMT_NORM1, FMT_NORM2, FMT_FIX, FMT_SCI, FMT_ENG };
      9 
     10 typedef struct {
     11     uint8_t mode, n;        /* n: decimales (Fix) o cifras (Sci, 0 = 10) */
     12     uint8_t digits;         /* cifras significativas en Norm (10 como la Casio) */
     13     bool mixed;             /* fracciones como entero + fraccion */
     14 } Fmt;
     15 
     16 void fmt_default(Fmt *f);
     17 /* Decimal como texto plano: mantisa y exponente aparte (exp valido si *sci). */
     18 void fmt_dec(Dec v, const Fmt *f, char *mant, int n, int *exp, bool *sci);
     19 /* Texto plano en una linea ("1.5E-7", "2/3", "√2", ...) para la terminal y los tests. */
     20 int  fmt_plain(const Num *v, const Fmt *f, bool want_dec, char *buf, int n);
     21 /* Resultado como expresion natural. Devuelve true si salio en forma exacta. */
     22 bool fmt_result(const Num *v, const Fmt *f, bool want_dec, Expr *out);
     23 /* Hay forma exacta para mostrar (y S⇔D sirve) */
     24 bool fmt_has_exact(const Num *v, const Fmt *f);
     25 /* grados, minutos y segundos: 12°34′56.78″ */
     26 void fmt_dms(Dec v, Expr *out);
     27 
     28 #endif