CONTENIDO DE LA LECCIÓN 8
CONTENIDO DE LA LECCIÓN 8 CONTENIDO DE LA LECCIÓN 8
MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo 7.26 Considere el siguiente planteamiento de un problema: Cree un programa de procesamiento de crédito que sea capaz de almacenar hasta 100 registros de longitud fija para una compañía que puede tener hasta 100 clientes. Cada registro deberá consistir de un número de cuenta que se utilizará como clave del registro, un apellido, un nombre y un saldo. El programa deberá ser capaz de actualizar una cuenta, agregar una nueva cuenta, borrar una cuenta y listar todos los registros de cuenta en un archivo de texto formateado para impresión. Las siguientes secciones presentan las técnicas necesarias para crear este programa de procesamiento de crédito. Llamemos al programa ALEATORIO.CPP. /* Este es un archivo de cabecera llamado clntdata.h utilizados por los programas. Se define la estructura datoCliente que se utiliza en los programas ALEATORIO.CPP, ESCRIALEA.CPP, LECSEC.CPP. */ #ifndef CLNDATA_H #define CLNDATA_H struct datoCliente { int numeroCuenta; char apellido[15]; char nombre[10]; float balance; }; #endif /* El siguiente programa: ALEATORIO.CPP, crea secuencialmente un archivo accesado aleatoriamente. El archivo de cabecer clntdata.h se encuentra definido en otro archivo. */ #include //Para cout y cin #include //Para crear el objeto creditoSalida #include //Para exit() #include "c:\apuntes1 c++\programas fuentes\leccion 07\clntdata.h" int main(void) { ofstream creditoSalida("credito.dat", ios::out); if(!creditoSalida) { cerr
MIGUEL Á. TOLEDO MARTÍNEZ El programa ALEATORIO.CPP, ilustra la apertura de un archivo de acceso aleatorio, la definición del formato del registro utilizando una struct (definida en el archivo de encabezado clntdata.h) y la escritura de datos en el disco. Este programa inicializa los 100 registros del archivo credito.dat con struct vacías mediante la función write. Cada struct vacía contiene 0 en el número de cuenta, la cadena nula (representada por comillas vacías) para el apellido, la cadena nula para el nombre y 0.0 para el saldo. El archivo se inicializa con la cantidad adecuada de espacio vacío en donde se almacenarán los datos de las cuentas y para determinar en programas subsecuentes si cada registro está vacío o contiene datos. En dicho programa, las instrucciones: creditoSalida.write(reinterpret_cast(&clienteBlanco), sizeof(datoCliente)); causan que la estructura clienteBlanco de tamaño sizeof(datoCliente) se escriba en el archivo credito.dat que está asociado con el objeto creditoSalida de ofstream. Recuerde que el operador sizeof devuelve el tamaño en byte del objeto que está contenido entre paréntesis. Observe que el primer argumento de la función write debe ser de tipo const char *. Sin embargo, el tipo de dato de &clienteBlanco es datoCliente *. Para convertir &clienteBlanco al tipo de apuntador adecuado, la expresión: reinterpret_cast(&clienteBlanco) utiliza el operador de conversión mediante cast reinterpret_cast para convertir la dirección de clienteBlanco a const char *, de modo que la llamada write compile sin emitir un error de sintaxis. ESCRITURA ALEATORIA DE DATOS A UN ARCHIVO DE ACCESO ALEATORIO Ejemplo 7.27 for(int i = 0; i < 100; i++) creditoSalida.write(reinterpret_cast(&clienteBlanco), sizeof(datoCliente)); return 0; }//Fin de main() El siguiente programa: ESCRIALEA.CPP, escribe datos hacia el archivo credito.dat. Utiliza la combinación de las funciones seekp y write de ostream para almacenar datos en localidades exactas del archivo. La función seekp establece el apuntador de posición de archivo colocar a una localidad específica del archivo y luego write envía los datos a la salida. Observe que el programa incluye el archivo de encabezado clntdata.h. /* El siguiente programa: ESCRIALEA.CPP, ilustra la escritura a un archivo de acceso aleatorio.*/ #include //Para cout y cin #include //Para crear el objeto creditoSalida #include //Para exit() #include "c:\apuntes1 c++\programas fuentes\leccion 07\clntdata.h" FUNDAMENTOS – LECCIÓN 7 7-47
- Page 1 and 2: MIGUEL Á. TOLEDO MARTÍNEZ CONTENI
- Page 3 and 4: MIGUEL Á. TOLEDO MARTÍNEZ LECCIÓ
- Page 5 and 6: MIGUEL Á. TOLEDO MARTÍNEZ introdu
- Page 7 and 8: MIGUEL Á. TOLEDO MARTÍNEZ /* El s
- Page 9 and 10: MIGUEL Á. TOLEDO MARTÍNEZ 2, las
- Page 11 and 12: MIGUEL Á. TOLEDO MARTÍNEZ El prog
- Page 13 and 14: MIGUEL Á. TOLEDO MARTÍNEZ caso co
- Page 15 and 16: MIGUEL Á. TOLEDO MARTÍNEZ una fun
- Page 17 and 18: MIGUEL Á. TOLEDO MARTÍNEZ . [30]
- Page 19 and 20: MIGUEL Á. TOLEDO MARTÍNEZ [5] ‘
- Page 21 and 22: MIGUEL Á. TOLEDO MARTÍNEZ Cuándo
- Page 23 and 24: MIGUEL Á. TOLEDO MARTÍNEZ USO DE
- Page 25 and 26: MIGUEL Á. TOLEDO MARTÍNEZ LAS FUN
- Page 27 and 28: MIGUEL Á. TOLEDO MARTÍNEZ Miguel
- Page 29 and 30: MIGUEL Á. TOLEDO MARTÍNEZ CLASES:
- Page 31 and 32: MIGUEL Á. TOLEDO MARTÍNEZ Una vez
- Page 33 and 34: MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo
- Page 35 and 36: MIGUEL Á. TOLEDO MARTÍNEZ // Copi
- Page 37 and 38: MIGUEL Á. TOLEDO MARTÍNEZ ofstrea
- Page 39 and 40: MIGUEL Á. TOLEDO MARTÍNEZ LECTURA
- Page 41 and 42: MIGUEL Á. TOLEDO MARTÍNEZ como de
- Page 43 and 44: MIGUEL Á. TOLEDO MARTÍNEZ { int r
- Page 45: MIGUEL Á. TOLEDO MARTÍNEZ Desplaz
- Page 49 and 50: MIGUEL Á. TOLEDO MARTÍNEZ /* El s
- Page 51 and 52: MIGUEL Á. TOLEDO MARTÍNEZ El prog
- Page 53 and 54: MIGUEL Á. TOLEDO MARTÍNEZ int sel
- Page 55 and 56: MIGUEL Á. TOLEDO MARTÍNEZ //Enví
- Page 57 and 58: MIGUEL Á. TOLEDO MARTÍNEZ PRIMER
- Page 59 and 60: MIGUEL Á. TOLEDO MARTÍNEZ LO QUE
- Page 61 and 62: MIGUEL Á. TOLEDO MARTÍNEZ apertur
- Page 63 and 64: MIGUEL Á. TOLEDO MARTÍNEZ b. Asig
- Page 65 and 66: MIGUEL Á. TOLEDO MARTÍNEZ 30. Ind
- Page 67 and 68: MIGUEL Á. TOLEDO MARTÍNEZ Utilice
- Page 69 and 70: MIGUEL Á. TOLEDO MARTÍNEZ double
- Page 71: MIGUEL Á. TOLEDO MARTÍNEZ } 8. #i
MIGUEL Á. TOLEDO MARTÍNEZ<br />
Ejemplo 7.26<br />
Considere el siguiente planteamiento de un problema:<br />
Cree un programa de procesamiento de crédito que sea capaz de almacenar hasta 100 registros<br />
de longitud fija para una compañía que puede tener hasta 100 clientes. Cada registro deberá<br />
consistir de un número de cuenta que se utilizará como clave del registro, un apellido, un nombre<br />
y un saldo. El programa deberá ser capaz de actualizar una cuenta, agregar una nueva cuenta,<br />
borrar una cuenta y listar todos los registros de cuenta en un archivo de texto formateado para<br />
impresión.<br />
Las siguientes secciones presentan las técnicas necesarias para crear este programa de<br />
procesamiento de crédito. Llamemos al programa ALEATORIO.CPP.<br />
/* Este es un archivo de cabecera llamado clntdata.h utilizados por los programas.<br />
Se define la estructura datoCliente que se utiliza en los programas ALEATORIO.CPP,<br />
ESCRIALEA.CPP, LECSEC.CPP.<br />
*/<br />
#ifndef CLNDATA_H<br />
#define CLNDATA_H<br />
struct datoCliente<br />
{<br />
int numeroCuenta;<br />
char apellido[15];<br />
char nombre[10];<br />
float balance;<br />
};<br />
#endif<br />
/* El siguiente programa: ALEATORIO.CPP, crea secuencialmente un archivo accesado<br />
aleatoriamente.<br />
El archivo de cabecer clntdata.h se encuentra definido en otro archivo.<br />
*/<br />
#include //Para cout y cin<br />
#include //Para crear el objeto creditoSalida<br />
#include //Para exit()<br />
#include "c:\apuntes1 c++\programas fuentes\leccion 07\clntdata.h"<br />
int main(void)<br />
{<br />
ofstream creditoSalida("credito.dat", ios::out);<br />
if(!creditoSalida)<br />
{<br />
cerr