Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Programación de Archivos, Apuntes de Análisis Musical

aprender sobre archivos y programación de acceso aleatorio

Tipo: Apuntes

2020/2021

Subido el 13/06/2021

celso-cerquin
celso-cerquin 🇵🇪

5

(1)

1 documento

1 / 9

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Programación en C++ para Ingeniería
_______________________________________________________________
11.5 Archivos Binarios
Los datos de estos archivos se guardan en binario. Cuando queramos almacenar
valores enteros, o en coma flotante, o imágenes, etc, deberemos usar este tipo de
archivos.
Función para escribir datos en un archivo binario
La función write() guarda datos en formato binario.
ofstream identificador_de_archivo(ruta)
Identificador_de_archivo.write((char *) buf, num)
Donde:
buf: Dirección de memoria al buffer que contiene los datos que se envían al flujo de
salida.
num: El número de bytes que se envían al flujo.
Crear un archivo llamado números.dat que guarde los números desde el 1 hasta el
20
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int x;
ofstream archi("numeros.dat");
if(!archi){
cout<<"No se puede abrir el archivo"<<endl;
return 1;
}
for(x=1;x<=20;x++)
archi.write((char *) &x,sizeof (x));
archi.close();
return 0;
}
Funcion para leer datos de un archivo binario
La función read() lee datos de un archivo binario.
ifstream identificador_de_archivo(ruta)
Identificador_de_archivo.read((char *) buf, num)
Donde:
buf: Dirección de memoria al buffer que recibe los datos del flujo de entrada.
num: El número de bytes a leer desde el flujo.
Crear un programa que lea el archivo números.dat
#include<iostream>
#include<fstream>
using namespace std;
-----------------------------------------------------------------------------------------------------
Docente: Marcelino Torres Villanueva 1
pf3
pf4
pf5
pf8
pf9

Vista previa parcial del texto

¡Descarga Programación de Archivos y más Apuntes en PDF de Análisis Musical solo en Docsity!

_______________________________________________________________

11.5 Archivos Binarios Los datos de estos archivos se guardan en binario. Cuando queramos almacenar valores enteros, o en coma flotante, o imágenes, etc, deberemos usar este tipo de archivos. Función para escribir datos en un archivo binario La función write() guarda datos en formato binario. ofstream identificador_de_archivo(ruta) … Identificador_de_archivo.write((char *) buf, num) Donde: buf: Dirección de memoria al buffer que contiene los datos que se envían al flujo de salida. num: El número de bytes que se envían al flujo. Crear un archivo llamado números.dat que guarde los números desde el 1 hasta el 20 #include #include using namespace std; int main() { int x; ofstream archi("numeros.dat"); if(!archi){ cout<<"No se puede abrir el archivo"<<endl; return 1; } for(x=1;x<=20;x++) archi.write((char *) &x,sizeof (x)); archi.close(); return 0; } Funcion para leer datos de un archivo binario La función read() lee datos de un archivo binario. ifstream identificador_de_archivo(ruta) … Identificador_de_archivo.read((char *) buf, num) Donde: buf: Dirección de memoria al buffer que recibe los datos del flujo de entrada. num: El número de bytes a leer desde el flujo. Crear un programa que lea el archivo números.dat #include #include using namespace std;

_______________________________________________________________

int main() { int x; ifstream archi("numeros.dat"); if(!archi){ cout<<"No se puede abrir el archivo"<<endl; return 1; } archi.read((char *) &x,sizeof (x)); while(archi) { cout<<x<<" "; archi.read((char *) &x,sizeof (x)); } archi.close(); return 0; } Crear un archivo llamado empleados.dat. Se deben ingresar los datos de n empleados y luego leer el archivo mostrando los datos guardados. #include #include using namespace std; struct Empleado{ char codigo[10]; char nombre[40]; char apellidos[60]; int edad; float sueldo; }; int main() { int i,n; ofstream escri("empleados.dat"); Empleado x; if(!escri){ cout<<"No se puede abrir el archivo"<<endl; return 1; } cout<<"Numero de empleados : "; cin>>n; for(i=1;i<=n;i++) { cout<<"Empleado "<<i<<":"<<endl; cin.get(); cout<<"codigo : "; cin.getline(x.codigo,10); cout<<"nombre : ";

_______________________________________________________________

if(!lectu){ cout<<"No se puede abrir el archivo"<<endl; return 1; } bool enc=false; cout<<"Codigo del empleado a buscar : "; cin.getline(codigo,10); lectu.read((char *) &x,sizeof (x)); while(lectu && !enc) { if(strcmp(x.codigo,codigo)==0) { cout<<"Datos del empleado"<<endl; cout<<"Codigo : "<<x.codigo<<endl; cout<<"Nombre : "<<x.nombre<<endl; cout<<"Apellidos : "<<x.apellidos<<endl; cout<<"Edad : "<<x.edad<<endl; cout<<"Sueldo : "<<x.sueldo<<endl; enc=true; } else lectu.read((char *) &x,sizeof (x)); } if(!enc) cout<<"El codigo del empleado no existe"<<endl; lectu.close(); return 0; } 11.6 Funcion seekg() La función seekg se puede usar de dos maneras: identificadorseekg(pos): Posiciona el puntero del archivo en pos bytes desde el inicio del archivo. Seekg(pos, ios::seed_dir origen): Posiciona el puntero especificando los bytes como un desplazamiento desde una posición del archivo especificada por el segundo argumento. Posicion inicial relativa de seekg ios::beg Desde el principio del archivo ios::car Desde la posición actual del archivo ios::end Desde el final del archivo Crear un programa que ingrese el código de un empleado y se lea el archivo empleados.dat y se pueda modificar los datos de un empleado si existe en caso contrario mostrar el mensaje el código no existe. #include #include #include<string.h>

_______________________________________________________________

using namespace std; struct Empleado{ char codigo[10]; char nombre[40]; char apellidos[60]; int edad; float sueldo; }; int main() { int i,n,pos; Empleado x; char codigo[10]; fstream archi("empleados.dat",ios::in | ios::out); if(!archi){ cout<<"No se puede abrir el archivo"<<endl; return 1; } bool enc=false; cout<<"Codigo del empleado a buscar : "; cin.getline(codigo,10); archi.read((char *) &x,sizeof (x)); while(archi && !enc) { if(strcmp(x.codigo,codigo)==0) { cout<<"Datos del empleado"<<endl; cout<<"Codigo : "<<x.codigo<<endl; cout<<"Nombre : "<<x.nombre<<endl; cout<<"Apellidos : "<<x.apellidos<<endl; cout<<"Edad : "<<x.edad<<endl; cout<<"Sueldo : "<<x.sueldo<<endl; enc=true; cout<<"Nuevo nombre : "; cin.getline(x.nombre,40); cout<<"Nuevos apellidos : "; cin.getline(x.apellidos,60); cout<<"Nueva edad : "; cin>>x.edad; cout<<"Nuevo sueldo : "; cin>>x.sueldo; int posActual,tamReg,r; posActual=archi.tellg(); tamReg=sizeof(x); r=posActual-tamReg; archi.seekg(r); archi.write((char *) &x,sizeof (x)); } else archi.read((char *) &x,sizeof (x)); }

_______________________________________________________________

lectu.read((char *) &x,sizeof (x)); } if(!enc) cout<<"El codigo del empleado no existe"<<endl; lectu.close(); escri.close(); remove("empleados.dat"); rename("auxiliar.dat","empleados.dat"); return 0; } 11.7 Ejercicios Propuestos 11

  1. Ingresar apellidos, nombres, edad y peso en un archivo llamado datos.mtv.. Obtener dos archivos uno que tenga los mayores de edad y otro que tenga los menores de edad.
  2. Ingresar código apellidos, nombres, Carrera de los alumnos de la facultad de Ingeniería. Ingresar una carrera y obtener el Archivo solo de los alumnos de esa escuela. El archivo se llamara el nombre de la Escuela seguido de .ing
  3. Ingresar nombres y notas en un Archivo llamado alumnos.dat. Reportar el promedio general de los alumnos. Obtener 2 archivos uno de los aprobados y otro de los desaprobados.
  4. El departamento de personal de la UNT tiene registros del nombre, sexo y edad de cada uno de los profesores adscritos a la Universidad. Escriba un programa que calcule e imprima los siguientes datos (primero debe llenar el Archivo de información): Edad promedio del grupo de profesores i. Nombre del profesor más joven del grupo ii. Nombre del profesor de más edad iii. Número de profesores con edad mayor al promedio iv. Número de profesores con edad menor al promedio Nota: cada una de las opciones del programa, debe ser manejada por medio de un Menú. Además de la opción para ingresar por primera vez los datos de los profesores.
  5. Al momento de su ingreso al hospital, a un paciente se le solicitan los siguientes datos: Nombre, Edad, Sexo, Domicilio (calle, número, ciudad), Teléfono, Isapre (este campo tendrá el valor verdadero si el paciente tiene Isapre y Falso si no la posee).

Escriba un programa que pueda llevar a cabo las siguiente operaciones (primero debe llenar el Aarchivo de información):

  • Listar los nombres de todos los pacientes hospitalizados.
  • Obtener el porcentaje de pacientes hospitalizados en las siguientes categorías: i. Niños: hasta 13 años. ii. Jóvenes: mayores de 13 años y menores de 30 años. iii. Adultos: mayores de 30 años.
  • Obtener el porcentaje de hombres y mujeres hospitalizados.
  • Dado el nombre de un paciente, listar todos los datos relacionados a dicho paciente.
  • Calcular el porcentaje de pacientes que poseen Isapre.

_______________________________________________________________

Nota: cada una de las opciones del programa, debe ser manejada por medio de un Menú. Además de la opción para ingresar por primera vez los datos de los pacientes.

  1. Una inmobiliaria tiene información sobre departamentos en arriendo. De cada departamento se conoce:
  • Clave: es un entero que identifica al departamento.
  • Extensión: superficie del departamento, en metros cuadrados.
  • Estado: (excelente, bueno, regular, malo).
  • Precio de arriendo: es un valor real.
  • Disponible: verdadero si está disponible para el arriendo y falso si ya está arrendado. Diariamente acuden muchos clientes a la inmobiliaria solicitando información. Escriba un programa que sea capaz de realizar las siguientes operaciones sobre la información disponible (primero debe llenar el archivo con la información de los departamentos):
  • Liste los datos de los departamentos disponibles que tengan un precio inferior o igual a un cierto valor P (que debe ser leido).
  • Liste los datos de los departamentos disponibles que tengan una superficie mayor o igual a un cierto valor dado E (que debe ser leido) y una ubicación excelente.
  • Liste el monto de la renta de todos los departamentos arrendados.
  • Llega un cliente solicitando arrendar un departamento. Si existe un departamento con una superficie mayor o igual a la deseada, con un precio y un estado que se ajustan a las necesidades del cliente (estos parámetros deben ser leidos), el departamento se arrienda. Además, se deben actualizar los datos que correspondan (disponible de verdadero a falso).
  • Se vence un contrato de arriendo, si no se renueva, actualizar los datos que corresponda (disponible de falso a verdadero).
  • Se ha decidido aumentar los valores de arriendo en un X%. Actualizar los precios de los arriendos de los departamentos no arrendados. Nota: cada una de las opciones del programa, debe ser manejada por medio de un Menú. Además de la opción para ingresar por primera vez los datos de los departamentos.
  1. Una compañia distribuye N productos a distintos comercios de la ciudad. Para ello almacena en un arreglo toda la información relacionada a su mercadería:
  • Clave: permite identificar a cada producto.
  • Descripción del producto
  • Stock: cantidad que se mantiene del producto.
  • Stock mínimo: cantidad mínima del productos a mantener en bodega.
  • Precio unitario. Escriba un programa que pueda llevar a cabo las siguientes operaciones:
  • Venta de un producto: se deben actualziar los campos que correspondan y verificar que el nuevo stock no esté por debajo del mínimo.
  • Reabastecimiento de un producto: se deben actualizar los campos que correspondan.
  • Actualizar el precio de un producto.
  • Informar sobre un producto: se deben proporcionar todos los datos relacionados a un producto. Nota: cada una de las opciones del programa, debe ser manejada por medio de un Menú. Además de la opción para ingresar por primera vez los datos de los productos.
  1. El supermercado “El carrito mágico” necesita de su ayuda para la creación de un programa que automatice el proceso de ventas de éste. El dueño del supermercado necesita que cada uno de sus productos este codificado (para