From 27b57ea735937768d3f7ee2700c64802de52e9f9 Mon Sep 17 00:00:00 2001 From: Juan Pablo Bottaro Date: Mon, 30 Jun 2008 17:14:56 -0300 Subject: [PATCH] Commit inicial para entero.c --- entero.c | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 entero.c diff --git a/entero.c b/entero.c new file mode 100644 index 0000000..292c025 --- /dev/null +++ b/entero.c @@ -0,0 +1,172 @@ +#include +#include + +typedef struct{ + signed char losDigitos[ BUFSIZ ]; + size_t laCantidadDeDigitos; +} Entero; + +Entero Entero_CrearDesdeCadena(char *unaCadenaConUnNumero); +Entero Entero_Sumar(Entero unEntero, Entero otroEntero); +Entero Entero_Read(FILE *in); +int Entero_Write(const Entero unEntero, FILE *out); +int Entero_Scan(FILE *in, Entero *unEntero); +void Entero_Print(Entero unEntero, FILE *out); +int Entero_Comparar(Entero unEntero, Entero otroEntero); + +static void strEspejo(char *s, int len); +static int EsEntero(const char *unaCadena); +static int ColumnaAutomata(const char c); + + +Entero Entero_CrearDesdeCadena(char *unaCadenaConUnNumero) +{ + Entero temp; + char *s = unaCadenaConUnNumero; + int CantDig = strlen(unaCadenaConUnNumero); + + /* + * Le saco el signo más y los puntos, si es que los tiene. + */ + if (*s == '+') s++; + if ( s[CantDig - 4] == '.' ) { + int i,k = 0; + char t[ BUFSIZ ]; + for(i = 0; s[i] != '\0' ; i++) + if (s[i] != '.'){ + CantDig--; + t[k++] = s[i]; + } + t[k] = '\0'; + s = t; + } + + strcpy(temp.losDigitos, s); + temp.laCantidadDeDigitos = CantDig; + return temp; +} + + +Entero Entero_Sumar(Entero unEntero, Entero otroEntero) +{ + //To Do. +} + + +static void strEspejo(char *s, int len) +{ + int i, temp; + len--; + + for(i=0; i='1') && (c<='9') ) + return 1; + else if ( (c=='+') || (c=='-') ) + return 2; + else if ( c=='.' ) + return 3; + else + return 4; //Con esta opcion, la matriz siempre devuelve -1, NO ACEPTADA. +} -- 2.11.4.GIT