]> git.llucax.com Git - z.facultad/75.29/dale.git/commitdiff
Arregla fines de linea (saca \r) y otros detalles menores.
authorLeandro Lucarella <luca@llucax.hn.org>
Tue, 4 Oct 2005 04:09:18 +0000 (04:09 +0000)
committerLeandro Lucarella <luca@llucax.hn.org>
Tue, 4 Oct 2005 04:09:18 +0000 (04:09 +0000)
src/number.h
tests/number.cpp

index d4593bcb543730b351e4c3f46c5ddaa7429f98ff..1e857ac18333d67132928d1c9b5b958bf8be8ce7 100644 (file)
@@ -7,13 +7,13 @@
 #include <deque>
 #include <utility>
 #include <algorithm>
-#include <iomanip>\r
-\r
-#ifdef _WIN32\r
+#include <iomanip>
+
+#ifdef _WIN32
 // VC++ no tiene la stdint.h, se agrega a mano
-#include "stdint.h"\r
-#else\r
-#include <stdint.h>\r
+#include "stdint.h"
+#else
+#include <stdint.h>
 #endif
 
 enum sign_type { positive, negative };
@@ -61,7 +61,7 @@ struct number
        number(native_type n, sign_type sign = positive):
                chunk(1, n), sign(sign) {}
 
-       // TODO constructor a partir de string.
+       number(const std::string& str);
 
        // Operadores
        number& operator++ ()
@@ -72,8 +72,8 @@ struct number
 
        number& operator+= (const number& n);
        number& operator*= (const number& n);
-       number& operator<<= (const size_type n);\r
-       number& operator-= (const number& n);\r
+       number& operator<<= (const size_type n);
+       number& operator-= (const number& n);
        bool    operator< (const number& n);
 
        // Devuelve referencia a 'átomo' i del chunk (no debería ser necesario
@@ -126,33 +126,33 @@ struct number
                        chunk.push_back(1);
        }
 
-};\r
-\r
-template < typename N, typename E >\r
-number< N, E >::number(const std::string& str)\r
-{\r
-       const N MAX_N = (~( (N)0 ) );\r
-       E increment = 0;\r
-       E acum = 0;\r
-\r
-       unsigned length = origen.length();\r
-       unsigned number_offset = 0;\r
-\r
-       while (number_offset<length)\r
-       {\r
-               // si encuentro un signo + ó - corto\r
-               if (!isdigit(origen[length-number_offset-1]))\r
-                       break;\r
-\r
-               increment = (10*number_offset)*(origen[length-number_offset-1]-'0');\r
-               if ((acum + increment) > MAX_N)\r
-               {\r
-                       chunk.push_back(acum);\r
-               }\r
-\r
-       }\r
-\r
-\r
+};
+
+template < typename N, typename E >
+number< N, E >::number(const std::string& origen)
+{
+       const N MAX_N = (~( (N)0 ) );
+       E increment = 0;
+       E acum = 0;
+
+       unsigned length = origen.length();
+       unsigned number_offset = 0;
+
+       while (number_offset<length)
+       {
+               // si encuentro un signo + ó - corto
+               if (!isdigit(origen[length-number_offset-1]))
+                       break;
+
+               increment = (10*number_offset)*(origen[length-number_offset-1]-'0');
+               if ((acum + increment) > MAX_N)
+               {
+                       chunk.push_back(acum);
+               }
+
+       }
+
+
 }
 
 template < typename N, typename E >
@@ -228,54 +228,54 @@ number< N, E > operator+ (const number< N, E >& n1, const number< N, E >& n2)
        number< N, E > tmp = n1;
        tmp += n2;
        return tmp;
-}\r
-\r
-template < typename N, typename E >\r
-number< N, E >& number< N, E >::operator-= (const number< N, E >& n)\r
-{\r
-       //TODO IMPLEMENTAR\r
+}
+
+template < typename N, typename E >
+number< N, E >& number< N, E >::operator-= (const number< N, E >& n)
+{
+       //TODO IMPLEMENTAR
        return *this;
-}\r
-\r
-template < typename N, typename E >\r
-number< N, E > operator- (const number< N, E >& n1, const number< N, E >& n2)\r
-{\r
-       number< N, E > tmp = n1;\r
-       tmp -= n2;\r
-       return tmp;\r
-}\r
-\r
-\r
-template < typename N, typename E >\r
-bool number< N, E >::operator< (const number< N, E >& n)\r
-{\r
-       number< N, E > n1 = *this;\r
-       number< N, E > n2 = n;\r
-\r
-       // igualo los largos\r
-       n1.normalize_length(n2);\r
-       n2.normalize_length(n1);\r
-\r
-       // obtengo el largo \r
-       size_type length = n1.chunk.size();\r
-       size_type i = length - 1;\r
-\r
-       // me voy fijando desde "la cifra" más significativa si alguno es menor que el otro\r
-       // sigo iterando si son iguales hasta recorrer todo el número hasta la parte menos significativa\r
-       while (i > 0)\r
-       {\r
-               if (n1[i]<n2[i])\r
-                       return true;\r
-               if (n1[i]>n2[i])\r
-                       return false;\r
-\r
-               i--;\r
-       }\r
-\r
-       // si llegué hasta acá es porque son iguales, por lo tanto no es menor estricto\r
-       return false;\r
-\r
-}\r
+}
+
+template < typename N, typename E >
+number< N, E > operator- (const number< N, E >& n1, const number< N, E >& n2)
+{
+       number< N, E > tmp = n1;
+       tmp -= n2;
+       return tmp;
+}
+
+
+template < typename N, typename E >
+bool number< N, E >::operator< (const number< N, E >& n)
+{
+       number< N, E > n1 = *this;
+       number< N, E > n2 = n;
+
+       // igualo los largos
+       n1.normalize_length(n2);
+       n2.normalize_length(n1);
+
+       // obtengo el largo 
+       size_type length = n1.chunk.size();
+       size_type i = length - 1;
+
+       // me voy fijando desde "la cifra" más significativa si alguno es menor que el otro
+       // sigo iterando si son iguales hasta recorrer todo el número hasta la parte menos significativa
+       while (i > 0)
+       {
+               if (n1[i]<n2[i])
+                       return true;
+               if (n1[i]>n2[i])
+                       return false;
+
+               i--;
+       }
+
+       // si llegué hasta acá es porque son iguales, por lo tanto no es menor estricto
+       return false;
+
+}
 
 // efectúa un shifteo a izquierda del chunk, agregando 0s en los casilleros menos significativos
 template < typename N, typename E >
@@ -332,10 +332,10 @@ number< N, E >& number< N, E >::normalize_length(const number< N, E >& n)
        while (chunk.size() < n.chunk.size())
        {
                chunk.push_back(0);
-       }\r
-\r
-       return *this;\r
-\r
+       }
+
+       return *this;
+
 }
 
 template < typename N, typename E >
index c0d7bd11e4393ce1cb9794318b4288f866d33fad..490767ef39c5d69463917bdbb4d18b9ec84aa209 100644 (file)
@@ -21,25 +21,26 @@ int main()
 
        nu << 5;
        std::cout << "nu = " << nu << "\n\n";
-#endif\r
-\r
-       number<> n1 = 0xffff00f0;\r
-       number<> n2 = 0xffff00f0;\r
-\r
-       n1 += 1;\r
-\r
-       n1 <<= 4;\r
-       n2 <<= 4;\r
-\r
-       if (n1 < n2)\r
-               std::cout << "n1 es menor que n2\n";\r
-       else if (n2 < n1)\r
-               std::cout << "n1 es mayor que n2\n";\r
-       else \r
-               std::cout << "n1 es igual que n2\n";\r
-               \r
+#endif
+
+       number<> n1 = 0xffff00f0;
+       number<> n2 = 0xffff00f0;
+
+       n1 += 1;
+
+       n1 <<= 4;
+       n2 <<= 4;
+
+       if (n1 < n2)
+               std::cout << "n1 es menor que n2\n";
+       else if (n2 < n1)
+               std::cout << "n1 es mayor que n2\n";
+       else 
+               std::cout << "n1 es igual que n2\n";
+               
        number<> n3 = n1 - n2;
 
        return 0;
 
 }
+