TRABAJO PRACTICO Nro 1

mándole como parte decimal la mitad de su valor dividido en 1000. Por ejemplo si se generó: N=628, éste se transformará en 628+314/1000 ó sea 628.314.
114KB Größe 5 Downloads 134 vistas
Taller de Lenguajes I – 2015 PROGR. UNIVERSITARIO / LICENCIATURA EN INFORMATICA Dictado: Ing. Juan Manuel Conti

TRABAJO PRACTICO Nro 1 Problema 01: Direcciones y cast's. En el siguiente esquema: Buff [ ]

pBuff

void *

DirEnt [ ]

DirDob [ ]

Buff es un arreglo de char que debe tener capacidad para almacenar consecutivamente 30 elementos que pueden ser int ó double. Estas magnitudes se obtendrán de la siguiente manera:   

Generar un entero aleatorio en el rango 100, 999. Si el número es menor o igual a 500 éste será un entero (int) que será guardado en Buff, y su dirección de almacenamiento se registrará en DirEnt[ ]. Si el número es mayor de 500, ese número será convertido en un double sumándole como parte decimal la mitad de su valor dividido en 1000. Por ejemplo si se generó: N=628, éste se transformará en 628+314/1000 ó sea 628.314

Esta cantidad también será almacenada a la par de lo último que se guardó en Buff, y su dirección obviamente se registrará en DirDob[ ]. Para todo este trabaja se utilizará el apuntador pBuff que es un puntero void *. Buff será dimensionado de acuerdo a lo que debe almacenar y teniendo en cuenta el peor caso: que todos los números sean mayores de 500. Finalmente, y utilizando las direcciones almacenadas, mostrar por pantalla en forma encolumnadas, las magnitudes enteras y dobles que se hayan generado (las doubles se visualizarán con 3 decimales). NOTA: Recuerde que las direcciones son enteros sin signo.

Trabajo Práctico Nro 1

Pág 1/2

Taller de Lenguajes I – 2015 PROGR. UNIVERSITARIO / LICENCIATURA EN INFORMATICA Dictado: Ing. Juan Manuel Conti

Problema 02: Direcciones y cast's y notación implícita de apuntadores.

Considere la siguiente estructura de datos: 180 domicilios char Buff [ ]

Almacenará en forma consecutiva, 20 juegos de valores que consistirán en : un int, o un double, o un char. Sin embargo, a diferencia del problema anterior que guardábamos la dirección de cada valor para luego identificarlo, ahora agregaremos una pequeñísima cabecera a cada magnitud: un caracter: 'A' --> Para los enteros. 'B' --> Para los dobles. 'C' --> Para los char. La mecánica de llenado será la siguiente:     

Genere aleatoriamente un caracter entre 'A' y 'C'. Almacene dicho caracter en Buff. Si salió 'A', genere un entero entre 100 y 999 y almacénelo en Buff a la par de su correspondiente caracter identificatorio. Si salió 'B', genere un entero entre 100 y 999 agregándole una parte decimal obtenida como random(1000)/1000. Si salió 'C' genere un caracter aleatorio char entre 'A' y 'Z'.

Finalmente y utilizando notación implícita de apuntadores, recorra Buff mostrando por pantalla (en una sola columna a 20 espacio del margen izquierdo) los valores que salieron. NOTA: Las magnitudes double se mostrarán con 3 decimales.

Trabajo Práctico Nro 1

Pág 2/2