First commit 31/01/1996
This commit is contained in:
190
PDATOS.CPP
Normal file
190
PDATOS.CPP
Normal file
@ -0,0 +1,190 @@
|
||||
#include <stdio.h>
|
||||
int InsReg( long pos, char ab );
|
||||
|
||||
long NRegistros = 9;
|
||||
|
||||
char BTree_code[100] = { '*', 32, 32, 32, 32, 32, 32, 32, 32, '*', '*', '*'};
|
||||
long BTree_pos [100] = { 10, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 11 };
|
||||
long NRegTot = 12;
|
||||
|
||||
#define ARRIBA 1
|
||||
#define ABAJO 0
|
||||
#define OK 0
|
||||
#define ERROR 1
|
||||
#define NO_ENC -1
|
||||
|
||||
int DelReg( long pos );
|
||||
|
||||
void main(void)
|
||||
{
|
||||
int pos, ab;
|
||||
pos = 0;
|
||||
printf("\n");
|
||||
while ( pos < NRegTot )
|
||||
{ printf( " %c%d ", BTree_code[pos], BTree_pos[pos] ); pos++; }
|
||||
|
||||
printf("\nIntroduzca posici<63>n, y metodo ( ARRIBA=1, ABAJO=0 ) --->");
|
||||
scanf( "%d %d", &pos, &ab );
|
||||
if ( ab < 0 || ab > 1 ) return;
|
||||
|
||||
// InsReg( pos, ab );
|
||||
DelReg( pos );
|
||||
pos = 0;
|
||||
printf("\n");
|
||||
while ( pos < NRegTot )
|
||||
{ printf( " %c%d ", BTree_code[pos], BTree_pos[pos] ); pos++; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
int InsReg( long pos, char ab )
|
||||
{
|
||||
NRegistros++;
|
||||
if ( pos >= (NRegistros-1) && NRegistros != 1)
|
||||
{
|
||||
NRegistros--;
|
||||
// ObtenError( 0x04 );
|
||||
printf( "\nError registro no valido" );
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
// char RegTot;
|
||||
long dir_libre;
|
||||
char codigo;
|
||||
|
||||
/*
|
||||
fseek( handle_BTree, 0L, SEEK_END );
|
||||
RegTot = ( ftell( handle_BTree ) - HeaderLen ) / ( sizeof(long) + sizeof(char) );
|
||||
*/
|
||||
|
||||
// Si hay fichas eliminadas, utilizamos sus direcciones intermedias.
|
||||
if ( (NRegTot - ( NRegistros - 1 ) ) > 0 )
|
||||
{
|
||||
dir_libre = BTree_pos[NRegistros-1];
|
||||
codigo = BTree_code[NRegistros-1];
|
||||
/*
|
||||
fseek( handle_BTree, ( ( sizeof(long) + sizeof(char) ) * ( NRegistros ) ) + Header_Len ), SEEK_SET );
|
||||
fread( &dir_libre, sizeof(long), 1, handle_BTree );
|
||||
fread( &codigo, sizeof(char), 1, handle_BTree );
|
||||
*/
|
||||
// si la supuesta ficha eliminada, no lo esta, utilizamos la siguiente
|
||||
if ( codigo != '*' )
|
||||
dir_libre = NRegistros;
|
||||
} else
|
||||
dir_libre = ( NRegistros - 1 );
|
||||
|
||||
// |<---------- RegTot ----------->|
|
||||
// |<----- NRegistros ---->| |
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
||||
// <20> 1 <20> 2 <20> 5 <20> 6 <20> 4 <20> 3 <20> * <20> * <20> <20> <20> <20> <20> <20>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//
|
||||
// 2 up <20>pos+1
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
||||
// <20> 1 <20> 2 <20> * <20> 5 <20> 6 <20> 4 <20> 3 <20> * <20> <20> <20> <20> <20> <20>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 2 down <20>pos
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
||||
// <20> 1 <20> * <20> 2 <20> 5 <20> 6 <20> 4 <20> 3 <20> * <20> <20> <20> <20> <20> <20>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long avance;
|
||||
avance = ( NRegistros - 1 );
|
||||
while ( avance > ( pos + ab ) )
|
||||
{
|
||||
/*
|
||||
fseek( handle_BTree, ((sizeof(long)+sizeof(char))*(avance-1))+HeaderLen, SEEK_SET);
|
||||
fread( &dirch , sizeof(long), 1, handle_BTree );
|
||||
fread( &codch , sizeof(char), 1, handle_BTree );
|
||||
|
||||
fwrite( &dirch , sizeof(long), 1, handle_BTree );
|
||||
fwrite( &codch , sizeof(char), 1, handle_BTree );
|
||||
*/
|
||||
BTree_code[avance] = BTree_code[avance-1];
|
||||
BTree_pos [avance] = BTree_pos [avance-1];
|
||||
avance--;
|
||||
}
|
||||
if ( ( NRegistros - 1 ) == 0 )
|
||||
//fseek( handle_BTree, HeaderLen, SEEK_SET);
|
||||
{BTree_code[0] = ' '; BTree_pos[0] = dir_libre;}
|
||||
else
|
||||
//fseek( handle_BTree, ((sizeof(long)+sizeof(char))*(pos + ab))+HeaderLen, SEEK_SET);
|
||||
{BTree_code[pos+ab] = ' '; BTree_pos[pos+ab] = dir_libre;}
|
||||
/*
|
||||
codch = ' ';
|
||||
fwrite( &dir_libre, sizeof(long), 1, handle_BTree );
|
||||
fwrite( &codch , sizeof(char), 1, handle_BTree );
|
||||
*/
|
||||
/*
|
||||
fseek( handle_BDatos, ( ( SizeReg*dir_libre ) + HeaderLen ), SEEK_SET );
|
||||
fwrite( datos, SizeReg, 1, handle_BDatos );
|
||||
|
||||
fseek( handle_BTree, 14L, SEEK_SET );
|
||||
fwrite( &NRegistro, sizeof(long), 1, handle_BTree );
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
int DelReg( long pos )
|
||||
{
|
||||
long old_dir;
|
||||
char new_cod;
|
||||
/*
|
||||
NRegistros++;
|
||||
if ( pos >= (NRegistros-1) && NRegistros != 1)
|
||||
*/
|
||||
NRegistros--;
|
||||
if ( pos >= (NRegistros+1) )
|
||||
{
|
||||
NRegistros++;
|
||||
printf( "\nError registro no valido\n" );
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
/*
|
||||
fseek( handle_BTree, ( ( sizeof(long) + sizeof(char) ) * pos ) + Header_Len ), SEEK_SET );
|
||||
fread( &old_dir, sizeof(long), 1, handle_BTree );
|
||||
*/
|
||||
old_dir = BTree_pos[pos];
|
||||
|
||||
// |<---------- RegTot ----------->|
|
||||
// |<----- NRegistros ---->| |
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
||||
// <20> 1 <20> 2 <20> 5 <20> 6 <20> 4 <20> 3 <20> * <20> * <20> <20> <20> <20> <20> <20>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//
|
||||
|
||||
unsigned long avance;
|
||||
|
||||
avance = pos;
|
||||
while ( avance < (NRegistros /*+ 1*/) )
|
||||
{
|
||||
/*
|
||||
fseek( handle_BTree, ((sizeof(long)+sizeof(char))*(avance+1))+HeaderLen, SEEK_SET);
|
||||
fread( &dirch , sizeof(long), 1, handle_BTree );
|
||||
fread( &codch , sizeof(char), 1, handle_BTree );
|
||||
fseek( handle_BTree, ((sizeof(long)+sizeof(char))*( avance ))+HeaderLen, SEEK_SET);
|
||||
fwrite( &dirch , sizeof(long), 1, handle_BTree );
|
||||
fwrite( &codch , sizeof(char), 1, handle_BTree );
|
||||
*/
|
||||
BTree_code[avance] = BTree_code[avance+1];
|
||||
BTree_pos [avance] = BTree_pos [avance+1];
|
||||
avance++;
|
||||
}
|
||||
/*
|
||||
fseek( handle_BTree, ((sizeof(long)+sizeof(char))*(NRegistros+1))+HeaderLen, SEEK_SET);
|
||||
|
||||
new_cod = '*';
|
||||
fwrite( &old_dir, sizeof(long), 1, handle_BTree );
|
||||
fwrite( &new_cod, sizeof(char), 1, handle_BTree );
|
||||
*/
|
||||
BTree_code[avance] = '*';
|
||||
BTree_pos [avance] = old_dir;
|
||||
|
||||
/*
|
||||
fseek ( handle_BTree, (sizeof(char)*14), SEEK_SET );
|
||||
fwrite( &NRegistros, sizeof(long), 1, handle_BTree );
|
||||
*/
|
||||
}
|
Reference in New Issue
Block a user