Operaciones sobre archivos en C++
Keylor JesúsPráctica o problema11 de Noviembre de 2015
1.014 Palabras (5 Páginas)241 Visitas
Administración de archivos
Operaciones sobre archivos en C++
#include
#include "fstream"
//declarar una variable de archivo
fstream fp1("archivoAB2.dat", ios::in | ios::out |ios::binary );//|ios::trunc );
//escribir en el archivo una Estructura
fp1.seekg(index*sizeof(reg));
fp1.write(reinterpret_cast
//Leer del archivo una Estructura
fp2.seekg(index*sizeof(reg2),ios::beg);
fp2.read(reinterpret_cast
//cerrar el archivo
fp1.close();
//validar que el archivo este asignado
if(!fp1){
cout <<"error en la apertura del archivo";
}
//conocer la longitud del archivo
long fin_archivo(){
long n;
fp1.seekg(0, ios::end);
n = fp1.tellg();
n= (n/sizeof(reg))-1;
return n;
}
Arboles binarios
Práctica manual.
Ejemplo Inserción 18, 5, 12, 32, 10, 2, 25, 81, 6, 16, 3, 47, 38.
#reg | izq | info | der |
0 | |||
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 |
Práctica:
Inserción 10, 25, 6, 13, 8, 18, 12, 32, 16, 3, 7, 9, 22, 11.
#reg | izq | info | der |
0 | |||
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 | |||
13 | |||
14 |
Práctica de borrado. Borrar el # 8.
#reg | izq | info | der |
0 | |||
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 | |||
13 | |||
14 |
Como práctica de laboratorio realizar el siguiente programa
- Defina una estructura o clase de árbol binario para almacenar en archivo.
La estructura de un árbol binario para archivo sería
struct arb_bin{
public:
int info;//del tipo de datos que desee, puede ser estudiante, curso…
long izq, der;
arb_bin(){
info= 0;
izq=0;
der=0;
}
}reg;
- Codifique del método de insertar en árbol binario ordenado en archivo.
Recuerde las instrucciones para escribir en archivo y para posicionarse aleatoriamente en el archivo.
fstream fp1("archivoAB.dat", ios::in | ios::out |ios::binary| ios::trunc );
if(!fp1){
cout <<"error en la apertura del archivo";
}
Empieze leyendo la raiz del arbol, esta siempre la encontrará en el registro cero de archivo.
fp1.seekg(0);
fp1.read(reinterpret_cast<char *> (®), sizeof(reg));
Y para posicionarse al final del archivo:
fp1.seekg(0, ios::end);//siempre escriba el nuevo registro al final del archivo.
fp1.write(reinterpret_cast<char *> (®), sizeof(reg));
- Codifique del método de imprimir ordenado en árbol binario ordenado en archivo.
- Codifique del método de buscar una llave X en árbol binario ordenado en archivo.
- Codifique del método de borrar una llave X en árbol binario ordenado en archivo.
Arboles M vías:
La estructura de un árbol binario para archivo sería
struct arb_M{
public:
int llave[M-1];
long rama[M];
arb_M(){
}
}
Este árbol crece por las ramas, no es balanceado.
Ejemplo de Inserción:
10, 25, 6, 13, 8, 18, 12, 32, 16, 3, 7, 9, 22, 11.
M = 3.
#reg | Rama 0 | Llave 0 | Rama 1 | Llave 1 | Rama 2 |
0 | |||||
1 | |||||
2 | |||||
3 | |||||
4 | |||||
5 | |||||
6 | |||||
7 | |||||
8 | |||||
9 | |||||
10 | |||||
11 | |||||
12 | |||||
13 | |||||
14 |
Árbol B
Árbol balanceado por su altura. Todas las hojas están en el mismo nivel. Los tiempos de búsqueda en el peor de los casos se debe llegar a un registro hoja, por tanto la cantidad de accesos es la altura máxima del árbol.
M = 5.
Ejemplo de Inserción:
10, 25, 6, 13,42,37, 8, 18, 12, 32, 16, 3, 7, 9, 22, 11.
#reg | Rama 0 | Llave 0 | Rama 1 | Llave 1 | Rama 2 | Llave 2 | Rama 3 | Llave 3 | Rama 4 | cuenta |
0 | 6 | 10 | 13 | 25 | 4 | |||||
1 |
Se inserta el 42, 37, 8, 18, 12, 32, 16, 3, 7, 9, 22, 11.
Siempre se inserta en los registro HOJA
#reg | Rama 0 | Llave 0 | Rama 1 | Llave 1 | Rama 2 | Llave 2 | Rama 3 | Llave 3 | Rama 4 | cuenta |
0 | 2 | 13 | 1 | 1 | ||||||
1 | 18 | 25 | 37 | 42 | 4 | |||||
2 | 6 | 8 | 10 | 12 | 4 | |||||
3 |
Se inserta el 32, 16, 3, 7, 9, 22, 11.
Siempre se inserta en los registro HOJA
#reg | Rama 0 | Llave 0 | Rama 1 | Llave 1 | Rama 2 | Llave 2 | Rama 3 | Llave 3 | Rama 4 | cuenta |
0 | 2 | 8 | 4 | 13 | 1 | 32 | 3 | 3 | ||
1 | 16 | 18 | 22 | 25 | 4 | |||||
2 | 3 | 6 | 7 | 3 | ||||||
3 | 37 | 42 | 2 | |||||||
4 | 9 | 10 | 11 | 12 | 4 | |||||
5 |
Se inserta el 24.
Siempre se inserta en los registro HOJA
#reg | Rama 0 | Llave 0 | Rama 1 | Llave 1 | Rama 2 | Llave 2 | Rama 3 | Llave 3 | Rama 4 | cuenta |
0 | 2 | 8 | 4 | 13 | 1 | 22 | 5 | 32 | 3 | 4 |
1 | 16 | 18 | 2 | |||||||
2 | 3 | 6 | 7 | 3 | ||||||
3 | 37 | 42 | 2 | |||||||
4 | 9 | 10 | 11 | 12 | 4 | |||||
5 | 24 | 25 | 2 |
...