Laboratorio 14 - Aritmética de enteros con cadenas

Asignatura: Fundamentos de Informática
Especialidad: Electrónica - UPV/EHU
Curso académico: 2013-2014
Profesor: Ismael Etxeberria Agiriano

Objetivos

Ejercicios resueltos

Fuentes de proyectos ejemplo

Moodle

Enunciados

  1. 14-001:
    Escribe una función SumaStrs que reciba dos números enteros expresados como cadenas de caracteres de tamaño arbitrario limitadas por un valor TOPE y calcule la suma en otra cadena de caracteres cuyo número máximo de dígitos será también TOPE.
    Habrá que prever un carácter adicional para el terminador de la cadena.
    La función devolverá un booleano que indique si ha habido sobrepasamiento en el resultado.
    Escribe un programa que demuestre su utilización. Por ejemplo:
    ...
    char res[TOPE+1]; /* TOPE + Terminador */
    int sob; /* Sobrepasamiento */
    ...
    sob = SumaStrs(res, "908234823", "35210382"); /* res = 908234823 + 35210382; */
    
    Análisis y resolución
  2. 14-002:
    Escribir una función SubsStrs que reciba dos números enteros expresados como cadenas de caracteres de tamaño arbitrario limitadas por un valor TOPE y calcule la resta en otra cadena de caracteres cuyo número máximo de dígitos será también TOPE.
    Se considera que ambos operandos son positivos, es decir, no se considera la posibilidad de que se utilice signo.
    La función devolverá un booleano que indique si el resultado es negativo.
    Escribe un programa que demuestre su utilización. Por ejemplo:
    ...
    char res[TOPE+1]; /* TOPE + Terminador */
    int sig; /* Signo */
    ...
    sig = SubsStrs(res, "234823", "95210382"); /* res = 234823 - 95210382; */
    
    Análisis y resolución
  3. 14-003:
    Escribe una función SumaConSigno que reciba dos números enteros expresados como cadenas de caracteres de tamaño arbitrario limitadas por un valor TOPE y calcule la resta en otra cadena de caracteres cuyo número máximo de dígitos será también TOPE.
    Se considera la utilización de un signo (carácter '-') para el que habrá que reservar espacio, junto al terminador.
    La función devolverá un booleano que indique ha habido sobrepasamiento. Si el resultado es negativo la cadena resultante empezará por el signo.
    Similarmente escribir una función SubsConSigno que realice la resta con signo.
    Escribe un programa que demuestre la utilización de ambas. Por ejemplo:
    ...
    char res[TOPE+2]; /* TOPE + Signo + Terminador */
    ...
    SumaConSigno(res, "234823", "-95210382"); /* res = 234823 + -95210382; */
    ...
    SubsConSigno(res, "234823", "-95210382"); /* res = 234823 - -95210382; */
    
    Análisis y resolución
  4. 14-004:
    Escribe una función MultConSigno que reciba dos números enteros con signo expresados como cadenas de caracteres de tamaño arbitrario limitadas por un valor TOPE y calcule la multiplicación en otra cadena de caracteres cuyo número máximo de dígitos será también TOPE.
    Escribe un programa que demuestre su utilización. Por ejemplo:
    ...
    char res[TOPE+TOPE+2]; /* TOPE + TOPE + Signo + Terminador */
    ...
    MultConSigno(res, "234823", "-95210382"); /* res = 234823 * -95210382; */
    

  5. 14-005:
    Escribe una función DiviConSigno que reciba dos números enteros con signo expresados como cadenas de caracteres de tamaño arbitrario limitadas por un valor TOPE y calcule la división entera en otra cadena de caracteres cuyo número máximo de dígitos será también TOPE.
    Escribe un programa que demuestre su utilización. Por ejemplo:
    ...
    char res[TOPE+2]; /* TOPE + Signo + Terminador */
    ...
    DiviConSigno(res, "-48234823", "210382"); /* res = -48234823 / -210382; */
    

  6. 14-006:
    Escribe una función RestConSigno que reciba dos números enteros con signo expresados como cadenas de caracteres de tamaño arbitrario limitadas por un valor TOPE y calcule el resto de la división entera en otra cadena de caracteres cuyo número máximo de dígitos será también TOPE.
    Escribe un programa que demuestre su utilización. Por ejemplo:
    ...
    char res[TOPE+2]; /* TOPE + Signo + Terminador */
    ...
    RestConSigno(res, "23234823", "-210382"); /* res = 234823 % -95210382; */