Los programas de ordenador se utilizan a menudo para realizar algún trabajo significativo en los datos que se hayan presentado como entrada. Por ejemplo, un programa puede ser escrito para llevar a cabo los cálculos del área de dimensiones de altura y anchura. Dado que cualquier número puede ser presentado al programa, existe la posibilidad de que una entrada es demasiado grande para ser procesada. Esto da lugar a un desbordamiento, que causa la corrupción de datos. Usted puede utilizar un lenguaje de programación como C + + para rechazar los datos que podrían causar undesbordamiento de condiciones.
RECHAZAR OVERFLOW
Lo que necesita
C + + entorno de desarrollo integrado (IDE), como Eclipse CDT
C + + Compiler, tal GCC
Cargue el IDE C + +, haga clic en el icono del programa. Cuando se abre, seleccione "Archivo / Nuevo / Proyecto" y selecciona "C + + proyecto" para crear un nuevo proyecto de C + +. Un archivo de código fuente aparece en la parte de editor de texto del IDE. Este fichero contiene una función generada automáticamente "principal", que sirve como punto de entrada para el programa. Va a colocar todo el código dentro de los corchetes que aparecen justo debajo de la función "main".
Escriba las siguientes declaraciones de variables entre las llaves de la función "main". Las dos primeras variables se utilizan para capturar la entrada desde el teclado. "Longitud" Las variables "y" ancho "tienen dimensionesde un tipo de datos llamado "corto", que sólo pueden almacenar valores de hasta 32.767 antes de desbordarse. La última variable se utiliza para almacenar la zona de las dimensiones, y es de tipo "largo". Este tipo de datos puede almacenar valores de hasta 2,147,483,647, que es dos veces el valor máximo posible cuando se multiplican dos "cortos" en conjunto.
char * InputString;
carbón buffer [256];
corta longitud = 0;
Ancho short = 5;
larga area = 0;
Escriba una declaración que imprima las instrucciones para que el usuario introduzca la dimensión de longitud, así:
printf ("Introduzca la dimensión de longitud: \ n");
Escriba una declaración que captura la entrada del usuario desde el teclado usando las variables "InputString" y "amortiguador", así:
InputString = fgets (buffer, 256, stdin);
Escribe una sentencia "if" que las pruebas para ver si el valor de la entrada del usuario es mayor de lo poco es capaz de manejar. El valor máximo de un "corto" se almacena en la constante "SHRT_MAX." Compruebe si el valor es positivo, ya que un valor desbordado puede convertirse en negativo y las dimensiones son típicamente sólo valores positivos. El siguiente "if" comprueba los estados de desbordamiento e imprime un mensaje si se produce un desbordamiento:
if (atoi (InputString) SHRT_MAX utString) 0)
{Printf ("datos rechazados por la inmensa dimensión \ n");}
Escribe una sentencia "else", que sólo se ejecuta si el anterior "if" se evalúa como falsa. Esto ocurre cuando el valor de entrada está dentro del rango correcto de valores para los tipos de datos "cortas".
más
{}
Escribe dos declaraciones que asigna la "InputString" a la variable "duración" y lo multiplica por la variable anchura. Coloque las dos declaraciones siguientes en-entre las llaves que inmediatamente siguen a la declaración "más":
longitud = atoi (InputString);
área = largo * ancho;
Escriba una declaración final que imprime el área. Coloque esta por debajo de las declaraciones escritas en el último paso y en medio de las llaves de la declaración "más":
printf ("Area:% d", área);
Pulse el botón verde "Play" para ejecutar el programa. Un símbolo del sistema aparece con una línea de texto pidiéndole que introduzca un número. Introduzca en 32768, que es uno más de "SHRT_MAX", y el texto que sigue es la salida:
Datos rechazados por la inmensa dimensión
Consejos y advertencias
SHRT_MAX suele 32767, pero no está garantizada. Es posible que "cortocircuitos" son capaces de mantener un mayor número en algunos sistemas. Este programa seguirá funcionando según lo previsto, pero es posible que necesite introducir un número más grande para obtener los "Datos Rechazado" mensaje si su sistema tiene más grandes "cortos" que los estándar.
No hay comentarios:
Publicar un comentario