SlideShare une entreprise Scribd logo
1  sur  2
Télécharger pour lire hors ligne
Universidad Francisco Marroquín
F.I.S.I.C.C.
Programación III
1er semestre 1992
Prof. : Egdares Futch H.


                                       Proyecto #4
                 BigNum - paquete de manejo de enteros de precisión infinita

Motivación
         El lenguaje C++ permite crear fácilmente nuevos tipos de datos, que el usuario de éstos
puede manipular naturalmente como si fueran parte del lenguaje. Uno de los problemas que se
tienen en sistemas de computación es la precisión finita de los números que se manejan; por
ejemplo, si se tiene una variable de tipo int, se limita al rango -32,768..32,767, y si se tiene una
variable de tipo long, se limita al rango -4,294,967,296..4,294,967,295. En algunos casos, esto no
es suficiente, por lo que se plantea como problema el diseño de números enteros de precisión
infinita, y su manejo. Cuando se dice precisión infinita no quiere decir que sean números
infinitos, sino que el usuario puede definir la precisión que se desea, la que usualmente será
mayor que un long.

Descripción
        Este proyecto está orientado a poner en práctica el lenguaje C++ en la construcción de
clases que definen sus propias operaciones.

        BigNum, entonces, es un módulo de manejo de enteros de precisión infinita, el cual
permitirá expresar operaciones como 123456789823642384234 + 2346891790891235, las
cuales ningún lenguaje soporta hasta ahora. Aunque se especifica que es infinito, el límite
máximo deberá ser de 1024 dígitos. El nombre BigNum fue tomado del New Hacker's Dictionary
(MIT Press, 1991) el cual provee una nota histórica del nombre.

      El proyecto consiste entonces en diseñar una clase de C++ que permita el manejo de estos
números, y permita hacer operaciones con ellos. Como existe el límite de 1024 dígitos como
máximo, la clase BigNum deberá tener chequeo de overflow.

        Las operaciones disponibles deben ser :
               - suma (+,+=)
               - resta (-,-=)
               - multiplicación (*,*=)
               - división (/,/=)
               - incremento/decremento (++,--)
               - complemento (- unario)
               - output (salida a cout sobrecargada)

Requerimientos
        El programa a entregar debe cumplir con los siguientes requerimientos :
                - Escrito en lenguaje C++
                - No debe desperdiciar espacio y debe destruir su almacenamiento interno
                - Modular, capaz de ser utilizado en varios programas (hacer .h y .cpp)
                - Chequeo de errores (overflow, mal formato, etc.)
                - Programas de prueba, según lo descrito posteriormente.
Programas de prueba
        Para la entrega de este proyecto, se deberán entregar los siguientes programas de prueba:
        a) powerof2.cpp          calcula el valor de 2^128
        b) trek.cpp              calcula la distancia recorrida, en metros, por el Enterprise
                                  a warp 9 (warp 9 = 1516c ) durante una temporada de Star Trek
                                 normal (20 episodios de 4 "días" de duración c/u)
        c) fib.cpp               calcula el valor de fib(30)

Fecha de entrega y documentación a entregar
        La fecha de entrega será el día jueves 9 de abril. NO habrán prórrogas de tiempo puesto
que éstas atrasan el curso. La documentación a entregar consistirá en (no folders, no clips) :

                - Diskette con el proyecto (.CPP,.H, .OBJ y .EXE, 5.25" o 3.5" sin virus)
                - Carátula con nombre, carnet y nombre de proyecto
                - Descripción del proyecto (1 hoja máx.)
                - Funcionamiento del proyecto (1 hoja máx.)
                - Manual de uso del proyecto (lo necesario)
                - Descripción de rutinas y procedimientos usados
                - Comentarios de implementación (opcional, puede mejorar nota)
                - Listados de programa

Hints
        Como un ejemplo de uso, podría tomarse el siguiente :

        main()
        {
              BigNum a("1231242342124124124124124"),b;

              b = a;      // asignamos
              b++;        // incremento en 1
              b += a;     // b = b + a
              cout << b; // imprimimos el contenido de b
              a *= 4567; // ojo
              a+=BigNum("29038401275230927345072309455273458923
        cout << a; // este si es un BigNum
              return 0;   // salimos
        }

Contenu connexe

Tendances

Compa de lengu pas c javi
Compa de lengu pas c javiCompa de lengu pas c javi
Compa de lengu pas c javi
Javier Torres
 

Tendances (12)

Caract
CaractCaract
Caract
 
Tema 2 - Programación básica en C (I)
Tema 2  - Programación básica en C (I)Tema 2  - Programación básica en C (I)
Tema 2 - Programación básica en C (I)
 
Tema 2 - Programación básica en C (II)
Tema 2  - Programación básica en C (II)Tema 2  - Programación básica en C (II)
Tema 2 - Programación básica en C (II)
 
Optimización global
Optimización globalOptimización global
Optimización global
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Funciones con retorno en lengaje c utp ejemplos
Funciones con retorno en lengaje c utp ejemplosFunciones con retorno en lengaje c utp ejemplos
Funciones con retorno en lengaje c utp ejemplos
 
Programas 11 20
Programas 11 20Programas 11 20
Programas 11 20
 
Leccion06 rsa crypt4you
Leccion06 rsa crypt4youLeccion06 rsa crypt4you
Leccion06 rsa crypt4you
 
Programación matématica (optimización) con Python - Ingeniería Química - PyConES
Programación matématica (optimización) con Python - Ingeniería Química - PyConESProgramación matématica (optimización) con Python - Ingeniería Química - PyConES
Programación matématica (optimización) con Python - Ingeniería Química - PyConES
 
programación
programaciónprogramación
programación
 
Compa de lengu pas c javi
Compa de lengu pas c javiCompa de lengu pas c javi
Compa de lengu pas c javi
 
Eficiencia en uso de recursos memoria 1a parte
Eficiencia en uso de recursos memoria 1a parteEficiencia en uso de recursos memoria 1a parte
Eficiencia en uso de recursos memoria 1a parte
 

Similaire à BigNum - Programación 3 - UFM - FISICC

Sesion 02 c++
Sesion 02   c++Sesion 02   c++
Sesion 02 c++
imagincor
 
Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++
Ronal Palomino
 
Instituto tecnológico particular
Instituto tecnológico particularInstituto tecnológico particular
Instituto tecnológico particular
Carlota Guzman
 

Similaire à BigNum - Programación 3 - UFM - FISICC (20)

Portable ARchiver - Programación 3 - UFM - FISICC
Portable ARchiver - Programación 3 - UFM - FISICCPortable ARchiver - Programación 3 - UFM - FISICC
Portable ARchiver - Programación 3 - UFM - FISICC
 
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionIng. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
 
Informatica
InformaticaInformatica
Informatica
 
Fundamentos de Programación - Unidad II: Introducción a la Programación
Fundamentos de Programación - Unidad II: Introducción a la ProgramaciónFundamentos de Programación - Unidad II: Introducción a la Programación
Fundamentos de Programación - Unidad II: Introducción a la Programación
 
Fundamentos de Programacion - Unidad 3 Introduccion a la programacion
Fundamentos de Programacion - Unidad 3 Introduccion a la programacionFundamentos de Programacion - Unidad 3 Introduccion a la programacion
Fundamentos de Programacion - Unidad 3 Introduccion a la programacion
 
Lenguaje c 2_neo
Lenguaje c 2_neoLenguaje c 2_neo
Lenguaje c 2_neo
 
Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
 
Sesion 02 c++
Sesion 02   c++Sesion 02   c++
Sesion 02 c++
 
Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++
 
Guia 5 dev c++
Guia 5 dev c++Guia 5 dev c++
Guia 5 dev c++
 
C
C C
C
 
Fundamentos de programacion ss14
Fundamentos de programacion ss14Fundamentos de programacion ss14
Fundamentos de programacion ss14
 
mprogintc++.pdf
mprogintc++.pdfmprogintc++.pdf
mprogintc++.pdf
 
CURSO C ++ (1).pdf
CURSO C ++ (1).pdfCURSO C ++ (1).pdf
CURSO C ++ (1).pdf
 
CURSO C ++ (1).pdf
CURSO C ++ (1).pdfCURSO C ++ (1).pdf
CURSO C ++ (1).pdf
 
Instituto tecnológico particular
Instituto tecnológico particularInstituto tecnológico particular
Instituto tecnológico particular
 
Programación c++forcsma
Programación c++forcsmaProgramación c++forcsma
Programación c++forcsma
 
C(++) programacion en c y c++
C(++)   programacion en c y c++C(++)   programacion en c y c++
C(++) programacion en c y c++
 
Mprogintc++ regular
Mprogintc++ regularMprogintc++ regular
Mprogintc++ regular
 
Mprogintc++
Mprogintc++Mprogintc++
Mprogintc++
 

Plus de Egdares Futch H.

Plus de Egdares Futch H. (20)

FIT 2018 - Malware Avanzado y Respuesta a Incidentes
FIT 2018 - Malware Avanzado y Respuesta a IncidentesFIT 2018 - Malware Avanzado y Respuesta a Incidentes
FIT 2018 - Malware Avanzado y Respuesta a Incidentes
 
FIT 2020 - Artificial Life
FIT 2020 - Artificial LifeFIT 2020 - Artificial Life
FIT 2020 - Artificial Life
 
Blockchain - Una mirada técnica y aplicaciones
Blockchain - Una mirada técnica y aplicacionesBlockchain - Una mirada técnica y aplicaciones
Blockchain - Una mirada técnica y aplicaciones
 
Digital forensics SIFT como herramienta
Digital forensics  SIFT como herramientaDigital forensics  SIFT como herramienta
Digital forensics SIFT como herramienta
 
Machine Learning: ¿Caminos? A donde vamos, no necesitamos caminos
Machine Learning: ¿Caminos? A donde vamos, no necesitamos caminosMachine Learning: ¿Caminos? A donde vamos, no necesitamos caminos
Machine Learning: ¿Caminos? A donde vamos, no necesitamos caminos
 
Herramientas de Pen Testing de redes y aplicaciones web
Herramientas de Pen Testing de redes y aplicaciones webHerramientas de Pen Testing de redes y aplicaciones web
Herramientas de Pen Testing de redes y aplicaciones web
 
El "Internet de Todo" (IoT)
El "Internet de Todo" (IoT)El "Internet de Todo" (IoT)
El "Internet de Todo" (IoT)
 
BPMS vs. workflow
BPMS vs. workflowBPMS vs. workflow
BPMS vs. workflow
 
El “Internet de Todo” (IoT) y lo que lo hace posible
El “Internet de Todo” (IoT) y lo que lo hace posible El “Internet de Todo” (IoT) y lo que lo hace posible
El “Internet de Todo” (IoT) y lo que lo hace posible
 
MGTI: Tendencias de Tecnología 2015 - Campus Tegucigalpa
MGTI: Tendencias de Tecnología 2015 - Campus TegucigalpaMGTI: Tendencias de Tecnología 2015 - Campus Tegucigalpa
MGTI: Tendencias de Tecnología 2015 - Campus Tegucigalpa
 
MGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La Ceiba
MGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La CeibaMGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La Ceiba
MGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La Ceiba
 
Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...
Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...
Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...
 
The Hour of Code - Presentación Diciembre 2014
The Hour of Code - Presentación Diciembre 2014The Hour of Code - Presentación Diciembre 2014
The Hour of Code - Presentación Diciembre 2014
 
Unitec virtualización
Unitec   virtualizaciónUnitec   virtualización
Unitec virtualización
 
Criptografía para las masas
Criptografía para las masasCriptografía para las masas
Criptografía para las masas
 
Más sobre el Algoritmo de Peterson
Más sobre el Algoritmo de PetersonMás sobre el Algoritmo de Peterson
Más sobre el Algoritmo de Peterson
 
Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...
Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...
Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...
 
Apuntes de clase Sistemas Operativos: Administración de Memoria
Apuntes de clase Sistemas Operativos: Administración de MemoriaApuntes de clase Sistemas Operativos: Administración de Memoria
Apuntes de clase Sistemas Operativos: Administración de Memoria
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Deadlocks
DeadlocksDeadlocks
Deadlocks
 

Dernier

PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
EduardoJosVargasCama1
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 

Dernier (20)

prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdfFICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 

BigNum - Programación 3 - UFM - FISICC

  • 1. Universidad Francisco Marroquín F.I.S.I.C.C. Programación III 1er semestre 1992 Prof. : Egdares Futch H. Proyecto #4 BigNum - paquete de manejo de enteros de precisión infinita Motivación El lenguaje C++ permite crear fácilmente nuevos tipos de datos, que el usuario de éstos puede manipular naturalmente como si fueran parte del lenguaje. Uno de los problemas que se tienen en sistemas de computación es la precisión finita de los números que se manejan; por ejemplo, si se tiene una variable de tipo int, se limita al rango -32,768..32,767, y si se tiene una variable de tipo long, se limita al rango -4,294,967,296..4,294,967,295. En algunos casos, esto no es suficiente, por lo que se plantea como problema el diseño de números enteros de precisión infinita, y su manejo. Cuando se dice precisión infinita no quiere decir que sean números infinitos, sino que el usuario puede definir la precisión que se desea, la que usualmente será mayor que un long. Descripción Este proyecto está orientado a poner en práctica el lenguaje C++ en la construcción de clases que definen sus propias operaciones. BigNum, entonces, es un módulo de manejo de enteros de precisión infinita, el cual permitirá expresar operaciones como 123456789823642384234 + 2346891790891235, las cuales ningún lenguaje soporta hasta ahora. Aunque se especifica que es infinito, el límite máximo deberá ser de 1024 dígitos. El nombre BigNum fue tomado del New Hacker's Dictionary (MIT Press, 1991) el cual provee una nota histórica del nombre. El proyecto consiste entonces en diseñar una clase de C++ que permita el manejo de estos números, y permita hacer operaciones con ellos. Como existe el límite de 1024 dígitos como máximo, la clase BigNum deberá tener chequeo de overflow. Las operaciones disponibles deben ser : - suma (+,+=) - resta (-,-=) - multiplicación (*,*=) - división (/,/=) - incremento/decremento (++,--) - complemento (- unario) - output (salida a cout sobrecargada) Requerimientos El programa a entregar debe cumplir con los siguientes requerimientos : - Escrito en lenguaje C++ - No debe desperdiciar espacio y debe destruir su almacenamiento interno - Modular, capaz de ser utilizado en varios programas (hacer .h y .cpp) - Chequeo de errores (overflow, mal formato, etc.) - Programas de prueba, según lo descrito posteriormente.
  • 2. Programas de prueba Para la entrega de este proyecto, se deberán entregar los siguientes programas de prueba: a) powerof2.cpp calcula el valor de 2^128 b) trek.cpp calcula la distancia recorrida, en metros, por el Enterprise a warp 9 (warp 9 = 1516c ) durante una temporada de Star Trek normal (20 episodios de 4 "días" de duración c/u) c) fib.cpp calcula el valor de fib(30) Fecha de entrega y documentación a entregar La fecha de entrega será el día jueves 9 de abril. NO habrán prórrogas de tiempo puesto que éstas atrasan el curso. La documentación a entregar consistirá en (no folders, no clips) : - Diskette con el proyecto (.CPP,.H, .OBJ y .EXE, 5.25" o 3.5" sin virus) - Carátula con nombre, carnet y nombre de proyecto - Descripción del proyecto (1 hoja máx.) - Funcionamiento del proyecto (1 hoja máx.) - Manual de uso del proyecto (lo necesario) - Descripción de rutinas y procedimientos usados - Comentarios de implementación (opcional, puede mejorar nota) - Listados de programa Hints Como un ejemplo de uso, podría tomarse el siguiente : main() { BigNum a("1231242342124124124124124"),b; b = a; // asignamos b++; // incremento en 1 b += a; // b = b + a cout << b; // imprimimos el contenido de b a *= 4567; // ojo a+=BigNum("29038401275230927345072309455273458923 cout << a; // este si es un BigNum return 0; // salimos }