Pastebin
API
tools
faq
paste
Login
Sign up
Please fix the following errors:
New Paste
Syntax Highlighting
/** * CÓDIGO DESENVOLVIDO PELOS ALUNOS CÉZAR DONIZETE MENDES JUNIOR E LIBÉRIO MARTINS SILVA. * * UFLA 2014, Desenvolvimento do 3º trabalho de AED III. * * Cadastro de voos com índice organizado em Árvore B e passageiros em árvore AVL * * Este trabalho consiste em implementar um sistema para armazenar e buscar informações sobre * voos. O sistema seria utilizado por operadores de aeroportos para controlar voos e que * passageiros estão neles. A busca por passageiros em um voo em diversos momentos, bem como * a busca por voos são operações críticas, e portanto, devem ser realizadas com a maior eficiência. * * @author Cézar Donizete Mendes Júnior * @author Libério Martins Silva */ /** * Variável estática que define a ordem das páginas da árvore B (árvore * de voos). */ #define ORDER 2 /** * Variável estática que define o tamanho máximo das posições das * páginas da ávore B. Este valor é dado pelo dobro da ordem da árvore. */ #define MAX_INDEX ORDER*2 /** * Estrutura de armazenamento das informações de um passageiro. Contém * um passaporte, que será a chave do registro, o nome, poltrona e * código do voo do passageiro. */ struct Passager { char pass[11]; /* Chave. */ char name[101]; char chair[4]; char code_Plane[16]; } Passager; /** * Estrutura de armazenamento das informações de um voo. Contém o código * do mesmo, que será sua chave, o aeroporto de partida e de destino, o * tempo de voo e a empresa aérea. */ struct Plane { char code_Plane[16]; /* chave */ char arrival_Airport[4]; char dest_Airport[4]; char plane_Time[6]; char enterprise[3]; } Plane; /** * Estrutura de armazenamento dos dados de um passageiro na árvore AVL * correspondente (voo na qual a mesma está alocada), juntamente com * ponteiros que indicam seus nós filhos. Nesta estrutura há também uma * variável do tipo inteiro que armazena o fator de balanceamento de * cada nó. */ typedef struct Nodo { struct Nodo* pRight; struct Nodo* pLeft; int factor_Balance; struct Passager info; } Nodo; /** * Estrutura de índices de um voo na árvore B. Possui um campo que * armazena a posição onde o voo está dentro do arquivo de dados e * um vetor de caracteres que armazena a chave do voo. */ struct Index { long RRN_Plane; char key_Plane[16]; }Index; /** * Estrutura que contém os dados de uma página gerada na árvore B. * Contém um campo com o número de voos guardados dentro desta página, * um vetor que armazena os voos contidos nela e um outro vetor que * armazena o RNN das suas páginas filhas. */ struct Page { short num_Plane; struct Index planes[MAX_INDEX]; long RRN_Son[MAX_INDEX + 1]; }Page; /** * Método de carrega a raiz da árvore de índices. * @param FILE *p: Arquivo onde está armazenada a árvore de índices * @return Long contendo o RRN da raiz da árvore de índices. */ long load_RRN_Root(FILE *p); /** * Método que salva os dados de um voo no arquivo de dados. * @param char data[]: String contendo as informações do voo */ void save_Plane (char data[]); /** * Método que separa a string de dados de voo recebida em seus * respectivos campos, chama o método inserir e verifica se há uma * promoção. Se houver, cria uma nova página para o elemtno promovido. * @param char data[]: String contendo as informações do voo */ void insert_Plane_Driver(char data[]); /** * Método de inserção de um novo voo. * @param FILE *p: Arquivo contendo a árvore de índices. * @param long RRN_Atual_Page: Contém a página atual onde o voo será inserido (inicialmente é a página raiz). * @param struct Index key_to_Insert: Chave que será inserida. * @param char data[]: Dados do voo que será inserido. * @param struct Index **promoter: Índice que será promovido (usado apenas em casos de inserção em página cheia). * @param long **right_Son_Page: RRN do filho à direita do índice promovido. * @return Um inteiro que identifica se houve promoção, não promoção ou erro. */ int insert_Plane(FILE *p, long RRN_Atual_Page, struct Index key_to_Insert, char data[], struct Index **promoter, long **right_Son_Page); /** * Método que busca um determinado voo dentro da árvore de índices. * @param FILE *p: Arquivo de índices * @param long RRN_Atual_Page: Página atual (inicialmente a raiz). Chama recursivamente até achar a página onde está contida a chave do voo buscado. * @param char key_Plane[]: Chave do voo buscado * @return Um inteiro indicando se houve sucesso (1) ou erro (0) na busca. */ int search_Plane(FILE *p, long RRN_Atual_Page, char key_Plane[]); /** * Método que chama o método remoção. Caso haja underflow, ele chama * o método agreement (junção de páginas). * @param char key_Plane[]: Chave do voo que será removido. */ void remove_Plane_Driver(char key_Plane[]); /** * Método de remoção de um voo da árvore de índices. * @param FILE *p: Arquivo contendo a árvore de índices. * @param long RRN_Atual_Page: Contém a página atual do voo que será removido (inicialmente é a página raiz). * @param struct Index key_to_Insert: Chave que será removida. * @param int changing: Verifica se haverá troca. * @param struct Index *changer_Plane: Grava os dados do menor da esquerda, que será "promovido" caso haja remoção de um nó pai. * @param int *underflow: Verifica se haverá underflow. * @return Um inteiro que identifica se houve sucesso ou erro. */ int remove_Plane(FILE *p, long RRN_Atual_Page, char key_Plane[], int changing, struct Index *changer_Plane, int *underflow); /** * Método que imprime os dados de um voo, armazenados no arquivo de dados. * @param long RRN: Posição no arquivo de dados do voo que será exibido. */ void print_Index_Plane(long RRN); /** * Função que irá dividir uma página que não cabe * mais indices em duas páginas, criando assim uma nova. * E vai mandar um elemento promovido. * @param struct Page *atual_Page: Página atual que estava cheia passada por referência. * @param struct Page *new_Page: Nova página que será criada passada por referência. * @param struct Index promoter: Indice que será promovido no split. * @param long long right_Son_Page: FIlho a direita do elemento que será promovido. * @return */ void split(struct Page *atual_Page, struct Page *new_Page, struct Index promoter, long right_Son_Page); /** * Função que será utilizada para pegar uma página raiz * e suas filhas e fazer uma única página a fim de evitar * o underflow. * @param struct Index father: Indice que está na página raiz. * @param struct Page right_Son: Página fiha a direita. * @param struct Page left_Son: Página fiha a esquerda. * @param struct Page *newbie_Page: Página passada por referência que será a nova página após a união das 3. * @return */ void agreement(struct Index father, struct Page right_Son, struct Page left_Son, struct Page *newbie_Page); /** * Função que irá salvar uma página da memoria * no disco. * @param FILE *p: Ponteiro do arquivo de indices. * @param long RRN_Page: RRN de onde a página será salva no disco. * @param struct Page *page: Página que terá seus valores salvados do disco. * @return */ void save_Page(FILE *p, long RRN_Page, struct Page *page); /** * Função que irá carregar uma página do disco * e colocar a mesma em uma página da memória * que será passada por referência. * @param FILE *p: Ponteiro do arquivo de indices. * @param long RRN_Page: RRN da página no disco. * @param struct Page *page: Página passada por referência que terá seus valores carregados do disco. * @return */ void load_Page(FILE *p, long RRN_Page, struct Page *page); /** * Função que irá inicializar uma nova página com valores * padrões afim de evitar erros futuros. * @param struct Page *page: Página passada por referência que terá seus valores alterados. * @return */ void createNewPage(struct Page *page); /** * Função que irá imprimir toda a árvore de indices * obdecendo todas as especificações. * @param FILE *p: Ponteiro do arquivo de indices. * @param long RRN: RRN da página atual que será imprimida. * @return */ void print_Index_Tree(FILE *p, long RRN); /** * Função auxiliar para conservar alguns dados que são perdidos * durante algumas operações no programa. * @param FILE *p: Ponteiro do arquivo de indices. * @return */ void pino(FILE *p); /** * Função que desaloca toda a árvore AVL da memória. * @param struct Nodo* pNodo: Nodo atual que deseja ser desalocado. */ void cut_Tree (struct Nodo* pNodo); /** * Função para buscar qual o maior Nodo a esquerda de um Nodo dado * como partida. * @param struct Nodo* pNodo: Nodo atual na busca. * @return */ struct Nodo* search_Biggest_Left(struct Nodo* pNodo); /** * Função que remove um passageiro da árvore AVL através * de uma chave passada. * @param char key_Pas[]: Chave que será removida. * @param struct Nodo** pNodo: Nodo que será usado para a remoção. * @return Retorna o maior Nodo a esquerda da ávore AVL. */ int remove_Pas(char key_Pas[], struct Nodo** pNodo); /** * Função que inseri um passageiro na árvore AVL a partir * de um determinado Nodo. * @param char data[]: Dados da chave a ser inserida. * @param struct Nodo** pNodo: Nodo que será usado para a inserção. * @return Retorna 1 em sucesso e 0 em erro. */ int insert_Pas (char data[], struct Nodo** pNodo); /** * Função que gira a árvoe AVL no sentido ant horário a fim de deixá-la * balanceada, como é a caracteristica de uma árvore AVL. * @param struct Nodo** pNodo: Nodo que será usado como ponto de partida para a rotação. * @return Retorna 1 em sucesso e 0 em erro. */ void balance_AntiHorario(struct Nodo** pNodo); /** * Função que gira a árvoe AVL no sentido horário a fim de deixá-la * balanceada, como é a caracteristica de uma árvore AVL. * @param struct Nodo** pNodo: Nodo que será usado como ponto de partida para a rotação. * @return */ void balance_Horario(struct Nodo** pNodo); /** * Função que busca um passageiro através de uma chave na árvore * AVL que contem todos os passageiros de um determinado voo. * @param char key_Pas[]: String com a chave do passageiro que será buscado. * @param struct Nodo* pNodo: Ponteiro de Nodo do nodo atual na busca. * @return */ struct Nodo* search_Pas(char key_Pas[], struct Nodo* pNodo); /** * Função que salva os dados de um passageiro * no arquivo de passageiros. * @param char data[]: String com os dados do passageiro como passaporte, nome, poltrona e passaporte. * @return Retorna o passageiro encontrado, caso não encontrado retorna vazio. */ void save_Pas(char data[]); /** * Função que imprime todos os dados de * um voo armazenado no arquivo de voos. * @param long RRN: RNN(endereço) que indica em que lugar do arquivo de dados o voo está localizado. * @return */ void print_Plane(long RRN);
Optional Paste Settings
Category:
None
Cryptocurrency
Cybersecurity
Fixit
Food
Gaming
Haiku
Help
History
Housing
Jokes
Legal
Money
Movies
Music
Pets
Photo
Science
Software
Source Code
Spirit
Sports
Travel
TV
Writing
Tags:
Syntax Highlighting:
None
Bash
C
C#
C++
CSS
HTML
JSON
Java
JavaScript
Lua
Markdown (PRO members only)
Objective C
PHP
Perl
Python
Ruby
Swift
4CS
6502 ACME Cross Assembler
6502 Kick Assembler
6502 TASM/64TASS
ABAP
AIMMS
ALGOL 68
APT Sources
ARM
ASM (NASM)
ASP
ActionScript
ActionScript 3
Ada
Apache Log
AppleScript
Arduino
Asymptote
AutoIt
Autohotkey
Avisynth
Awk
BASCOM AVR
BNF
BOO
Bash
Basic4GL
Batch
BibTeX
Blitz Basic
Blitz3D
BlitzMax
BrainFuck
C
C (WinAPI)
C Intermediate Language
C for Macs
C#
C++
C++ (WinAPI)
C++ (with Qt extensions)
C: Loadrunner
CAD DCL
CAD Lisp
CFDG
CMake
COBOL
CSS
Ceylon
ChaiScript
Chapel
Clojure
Clone C
Clone C++
CoffeeScript
ColdFusion
Cuesheet
D
DCL
DCPU-16
DCS
DIV
DOT
Dart
Delphi
Delphi Prism (Oxygene)
Diff
E
ECMAScript
EPC
Easytrieve
Eiffel
Email
Erlang
Euphoria
F#
FO Language
Falcon
Filemaker
Formula One
Fortran
FreeBasic
FreeSWITCH
GAMBAS
GDB
GDScript
Game Maker
Genero
Genie
GetText
Go
Godot GLSL
Groovy
GwBasic
HQ9 Plus
HTML
HTML 5
Haskell
Haxe
HicEst
IDL
INI file
INTERCAL
IO
ISPF Panel Definition
Icon
Inno Script
J
JCL
JSON
Java
Java 5
JavaScript
Julia
KSP (Kontakt Script)
KiXtart
Kotlin
LDIF
LLVM
LOL Code
LScript
Latex
Liberty BASIC
Linden Scripting
Lisp
Loco Basic
Logtalk
Lotus Formulas
Lotus Script
Lua
M68000 Assembler
MIX Assembler
MK-61/52
MPASM
MXML
MagikSF
Make
MapBasic
Markdown (PRO members only)
MatLab
Mercury
MetaPost
Modula 2
Modula 3
Motorola 68000 HiSoft Dev
MySQL
Nagios
NetRexx
Nginx
Nim
NullSoft Installer
OCaml
OCaml Brief
Oberon 2
Objeck Programming Langua
Objective C
Octave
Open Object Rexx
OpenBSD PACKET FILTER
OpenGL Shading
Openoffice BASIC
Oracle 11
Oracle 8
Oz
PARI/GP
PCRE
PHP
PHP Brief
PL/I
PL/SQL
POV-Ray
ParaSail
Pascal
Pawn
Per
Perl
Perl 6
Phix
Pic 16
Pike
Pixel Bender
PostScript
PostgreSQL
PowerBuilder
PowerShell
ProFTPd
Progress
Prolog
Properties
ProvideX
Puppet
PureBasic
PyCon
Python
Python for S60
QBasic
QML
R
RBScript
REBOL
REG
RPM Spec
Racket
Rails
Rexx
Robots
Roff Manpage
Ruby
Ruby Gnuplot
Rust
SAS
SCL
SPARK
SPARQL
SQF
SQL
SSH Config
Scala
Scheme
Scilab
SdlBasic
Smalltalk
Smarty
StandardML
StoneScript
SuperCollider
Swift
SystemVerilog
T-SQL
TCL
TeXgraph
Tera Term
TypeScript
TypoScript
UPC
Unicon
UnrealScript
Urbi
VB.NET
VBScript
VHDL
VIM
Vala
Vedit
VeriLog
Visual Pro Log
VisualBasic
VisualFoxPro
WHOIS
WhiteSpace
Winbatch
XBasic
XML
XPP
Xojo
Xorg Config
YAML
YARA
Z80 Assembler
ZXBasic
autoconf
jQuery
mIRC
newLISP
q/kdb+
thinBasic
Paste Expiration:
Never
Burn after read
10 Minutes
1 Hour
1 Day
1 Week
2 Weeks
1 Month
6 Months
1 Year
Paste Exposure:
Public
Unlisted
Private
Folder:
(members only)
Password
NEW
Enabled
Disabled
Burn after read
NEW
Paste Name / Title:
Create New Paste
Hello
Guest
Sign Up
or
Login
Sign in with Facebook
Sign in with Twitter
Sign in with Google
You are currently not logged in, this means you can not edit or delete anything you paste.
Sign Up
or
Login
Public Pastes
Die 7 wichtigsten Aktionen diese Woche
7 hours ago | 4.17 KB
Untitled
7 hours ago | 13.34 KB
Untitled
9 hours ago | 13.59 KB
VNC SCRIPT 2/2: autoinput.vbs
VBScript | 18 hours ago | 0.23 KB
VNC SCRIPT 1/2: vncauto.bat
Batch | 18 hours ago | 0.72 KB
videoscheomedia
XML | 20 hours ago | 1.00 KB
Untitled
1 day ago | 14.91 KB
autconnectVNC.bat
Batch | 1 day ago | 0.93 KB
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the
Cookies Policy
.
OK, I Understand
Not a member of Pastebin yet?
Sign Up
, it unlocks many cool features!