Вы находитесь на странице: 1из 2

void insere(fstream &arq)

celula aux, cab;


int free;
cout<<endl<<endl<<"Inserindo registros"<<endl;

/*posiciona o ponteiro de leitura no in�cio do arquivo*/


arq.seekg (0,arq.beg);

/*le o cabe�alho*/
arq.read((char*)&cab, sizeof(cab));

/*posiciona o ponteiro de leitura na primeira posi��o livre no arquivo*/


arq.seekg(sizeof(cab)*cab.cabecalho.free,arq.beg);

/*le as informa��es do registro livre*/


arq.read((char*)&aux, sizeof(aux));

/*grava em free o pr�ximo registro livre*/


free=aux.lista.next;

/*lendo os dados para o novo registro*/


cout<<"Digite a chave: ";
cin>>aux.lista.reg.chave;
aux.lista.next=-1;
aux.lista.prev=cab.cabecalho.last;

/*atualizando o next do registro que vai apontar para o novo registro aux*/
if(aux.lista.prev!=-1)
{
celula bob;
/*posiciona o ponteiro de leitura para o registro que vai apontar para o
novo registro aux*/
arq.seekg(sizeof(aux)*aux.lista.prev,arq.beg);
/*lendo o registro*/
arq.read((char*)&bob, sizeof(bob));
/*atualizando o next*/
bob.lista.next=cab.cabecalho.free;

/*posiciona o ponteiro de escrita para o registro que vai apontar para o


novo registro aux*/
arq.seekp (sizeof(aux)*aux.lista.prev,arq.beg);
/*gravando o registro*/
arq.write((char*)&bob, sizeof(bob));
}
/*posiciona o ponteiro de leitura para a posi��o do novo registro aux*/
arq.seekp(sizeof(cab)*cab.cabecalho.free,arq.beg);
/*gravando o registro*/
arq.write((char*)&aux, sizeof(aux));

/*Atualiza��o o cabe�alho*/
if(cab.cabecalho.first==-1)
cab.cabecalho.first=cab.cabecalho.free;

cab.cabecalho.quant++;
cab.cabecalho.last=cab.cabecalho.free;
cab.cabecalho.free=free;
/*posiciona o ponteiro de escrita no in�cio do arquivo*/
arq.seekp (0,arq.beg);
/*gravado o cabe�alho*/
arq.write((char*)&cab, sizeof(cab));
}

Вам также может понравиться

  • Relatório Fenômenos de Transporte - LAB
    Relatório Fenômenos de Transporte - LAB
    Документ3 страницы
    Relatório Fenômenos de Transporte - LAB
    BrayanFreitas
    Оценок пока нет
  • Relatório de Circuitos
    Relatório de Circuitos
    Документ7 страниц
    Relatório de Circuitos
    BrayanFreitas
    Оценок пока нет
  • Fibonacci C++
    Fibonacci C++
    Документ1 страница
    Fibonacci C++
    BrayanFreitas
    Оценок пока нет
  • Casos de Uso
    Casos de Uso
    Документ2 страницы
    Casos de Uso
    BrayanFreitas
    Оценок пока нет
  • Lista Calculo 3
    Lista Calculo 3
    Документ4 страницы
    Lista Calculo 3
    BrayanFreitas
    Оценок пока нет
  • Fibonacci C++
    Fibonacci C++
    Документ1 страница
    Fibonacci C++
    BrayanFreitas
    Оценок пока нет
  • Lista de Exercícios 1a
    Lista de Exercícios 1a
    Документ6 страниц
    Lista de Exercícios 1a
    BrayanFreitas
    Оценок пока нет
  • Resfriamento de Newton
    Resfriamento de Newton
    Документ5 страниц
    Resfriamento de Newton
    BrayanFreitas
    Оценок пока нет
  • Projeto1 Notas
    Projeto1 Notas
    Документ4 страницы
    Projeto1 Notas
    BrayanFreitas
    Оценок пока нет
  • Função Que Multiplica Matriz C++
    Função Que Multiplica Matriz C++
    Документ1 страница
    Função Que Multiplica Matriz C++
    BrayanFreitas
    Оценок пока нет
  • Relatorio - 17
    Relatorio - 17
    Документ6 страниц
    Relatorio - 17
    BrayanFreitas
    Оценок пока нет
  • Somador
    Somador
    Документ1 страница
    Somador
    BrayanFreitas
    Оценок пока нет
  • C Ambiente
    C Ambiente
    Документ9 страниц
    C Ambiente
    BrayanFreitas
    Оценок пока нет
  • Prog
    Prog
    Документ1 страница
    Prog
    BrayanFreitas
    Оценок пока нет
  • Novo Documento de Texto
    Novo Documento de Texto
    Документ1 страница
    Novo Documento de Texto
    BrayanFreitas
    Оценок пока нет
  • Colisoes 2017
    Colisoes 2017
    Документ31 страница
    Colisoes 2017
    BrayanFreitas
    Оценок пока нет