Sei sulla pagina 1di 6

UNIVERSIDAD NACIONAL EXPERIMENTAL FRANCISCO DE MIRANDA REA CIENCIAS DE LA EDUCACIN DEPARTAMENTO DE INFORMTICA Y TECNOLOGIA EDUCATIVA

ESTRUCTURA
DE DATOS

UNIDAD I. ARCHIVOS EN C ++

Santa Ana de Coro, Mayo de 2012 |Lcda. Ins Andara

Unidad I. Archivos en C ++

Uno de los problemas que se presenta a la hora de ejecutar un programa en C++, es que los datos se pierden al culminar la ejecucin, la solucin para hacer que los datos no se pierdan es almacenarlos en un fichero o archivo. Los archivos son medios para almacenar los datos en forma permanente, normalmente en los dispositivos de almacenamiento estndar. Desde el punto de vista informtico, un fichero es una coleccin de informacin que almacenamos en un soporte magntico para poder manipularla en cualquier momento. Se pueden acceder de forma: Archivos de acceso secuencial: los datos se almacenan de forma consecutiva y no es posible leer un registro directamente, es decir para leer el registro n hay que leer los n-1 registros anteriores. Archivos de acceso aleatorio: se puede acceder a un registro concreto sin necesidad de leer todos los anteriores. Para poder manipular archivos, C++ dispone de la biblioteca estndar fstream (file stream) donde se encuentran todas las funciones necesarias para abrir y cerrar archivos, as como para realizar las operaciones de lectura y escritura de datos en archivos. Operaciones asociadas a archivos Abrir Para lectura (entrada) Para escritura (salida) Cerrar Lectura Escritura Funciones de control Para abrir un archivo de lectura: Se debe crear un objeto para la clase ifstream, de la siguiente manera: ifstream objeto1; Luego, se invoca la funcin open:

objeto1.open(nombrearchivo);

Pgina 1

Unidad I. Archivos en C ++

Es de aclarar, que el nombre del archivo debe contener su respectiva extensin (por ejemplo: prueba.txt), si se encuentra en una ubicacin distinta a la del cdigo fuente, debe especificarse su direccin. Para abrir un archivo de escritura: Se debe crear un objeto para la clase ofstream, de la siguiente manera: ofstream objeto2; Luego, se invoca la funcin open: objeto2.open(nombrearchivo); Existen dos posibilidades: Si se abre un archivo en modo salida y dicho archivo ya existe, todos los datos almacenados sern sobrescritos. Si el archivo no existe, se crear. Pero si existe y si se desea aadir informacin al final del archivo, se debe abrir el archivo de la siguiente forma: objeto2.open(nombrearchivo, ios:: app); Antes de seguir adelante, es aconsejable comprobar si el fichero se ha abierto correctamente, tanto si es para lectura o escritura, as: if(objeto2) cout << Apertura con xito"; else cout << No se ha podido abrir el fichero"; Una vez definidos los flujos con los que va a trabajar en el programa, se pueden utilizar los operadores de insercin (<<) y extraccin (>>) y los mtodos ya conocidos de lectura de datos usados para los flujos cin y cout. Cuando el programa ha terminado de manipular el fichero, ste debe cerrarse. Para cerrar un archivo, basta con ejecutar la funcin close sobre el flujo asociado al fichero. objeto2.close( ); Si un fichero no se cierra, es cerrado automticamente cuando termina el programa.
Pgina 2

Unidad I. Archivos en C ++

La lectura de un archivo de texto se puede realizar con el operador de extraccin (>>) y la escritura de un archivo de texto se puede realizar con el operador de insercin (<<). Adems, se usa la funcin eof, que devuelve un valor distinto de cero si el flujo de entrada ha alcanzado el final del archivo. Ejemplo 1. Programa que lee desde un archivo 5 calificaciones, cuenta los aprobados y reprobados, calcula el promedio y se muestran los resultados en otro archivo. #include <fstream> using namespace std; int main() { float nota,promedio=0; int apro=0, repro=0,i; Apertura del fichero ifstream f_in; f_in.open("seccion.txt"); ofstream f_out; f_out.open("resultados.txt"); Funcin de control i=1; while (!f_in.eof() && i<=5) { f_in>>nota; Lectura de fichero promedio+=nota; if (nota >9.5) apro++; else repro++; i++; } promedio/=5; Escritura de fichero f_out<<"Promedio: "<<promedio<<"\n"; f_out<<"Aprobados: "<<apro<<"\n"; f_out<<"Reprobados: "<<repro<<"\n"; f_in.close(); f_out.close(); Cierre return(0); }

Pgina 3

Unidad I. Archivos en C ++

Es de hacer notar, que el archivo seccin.txt debe estar creado y con los valores guardados previamente, de no ser as, los valores sern nulos. Ejemplo 2. Leer de un archivo 5 valores enteros y almacenarlos en u vector, luego calcule el promedio y cantidad de elementos positivos, guardar en otro archivo el arreglo y los resultados obtenidos. #include<iostream> #include<fstream> using namespace std; int main(){ int v[5], i=0, c=0; ofstream f_out; ifstream f_in; f_out.open("vector1.txt"); f_in.open("vector2.txt"); float p=0; while(!f_in.eof() && i<5){ f_in>>v[i]; p+=v[i]; if(v[i]>0) c++; f_out<<v[i]<<"\n"; i++; } f_out<<"Cantidad de positivos "<<c<<endl; f_out<<"Promedio "<<(p=p/5.0)<<endl; f_in.close(); f_out.close(); return 0; }

Pgina 4

Unidad I. Archivos en C ++

Ejercicios propuestos:

1) Con un archivo externo que contenga almacenado: CI, nombre, apellido y promedio de calificaciones de 5 estudiantes, verifique cuantos estn aprobados, y cul es el mayor promedio. 2) Hacer un programa que lea 25 valores enteros de un archivo y guarde en una tabla de 5 por 5, despus muestre la tabla y las sumas de cada fila y de cada columna en otro archivo. 3) En un arreglo B de elementos enteros (obtenido de un archivo), identifique si un nmero N dado, se encuentra en dicho arreglo y cuantas veces. 4) Leer dos arreglos de 20 elementos que contienen, A: los cdigos de los alumnos que reprobaron Matemticas y B los cdigos de los alumnos que reprobaron Computacin II. Se pide crear otro arreglo formado por los cdigos de los estudiantes que reprobaron Matemticas y Computacin II. Imprimir el arreglo resultante. La lectura y escritura de los datos debe hacerse usando archivos. 5) Determinar y visualizar el nmero ms grande de tres nmeros dados, mediante una funcin, suponiendo que los 3 son distintos. La lectura y escritura de los datos debe hacerse usando archivos. 6) Un nmero entero n se dice que es perfecto si la suma de sus divisores incluyendo 1 y excluyndose l coincide consigo mismo. Realizar un programa con una funcin que determine los nmeros perfectos que hay entre 2 y 500. Por ejemplo 6 es un nmero perfecto 1 + 2 + 3 = 6. 7) Realice un programa que lea dos nmeros complejos (a,b) y (c,d) y emplee una funcin para calcular e imprimir el producto de los mismos. (a,b)*(c,d)=(ac-bd,ad+bc). La lectura y escritura a travs de archivos.

Pgina 5

Potrebbero piacerti anche