void inserirArvore(Arvore **pRaiz, Cliente **cliente){ if(*pRaiz == NULL){ *pRaiz = criarNo(); (*pRaiz)->cliente = *cliente; }else{ if((*cliente)->matricula < (*pRaiz)->cliente->matricula) inserirArvore( &((*pRaiz)-> esq), cliente); if((*cliente)->matricula > (*pRaiz)->cliente->matricula) inserirArvore( &((*pRaiz)-> dir), cliente); *pRaiz = balancearArvoreAVL(pRaiz); } }
void carregaArquivo(tipoArvore* arvore, FILE *arquivo) { //passo por parametro a raiz e url FILE *arquivo2; //auxiliar para trocar o ; pelo espaço char txt, nome[50]; float nt1, nt2, nt3; int matricula; NO *novo_aluno; // arquivo apenas ler o arquivo que quer carregar arquivo2= fopen ("auxiliar.dat","w"); //Cria um arquivo para ser temporário, onde vou trocar as ',' pelo '.' para os numeros while ((txt=fgetc(arquivo))!= EOF) { //caracter por caracter até encontrar o fim do arquivo. if (txt == ',') //faço a troca da virgula por ponto, pois o computador so entende float com ponto txt = '.'; fprintf(arquivo2,"%c", txt); } fclose(arquivo2);//fechando para abrir em modo leitura arquivo2 = fopen("auxiliar.dat", "r"); while (!feof(arquivo2)) { //enquanto nao encontrar o fim do arquivo fscanf(arquivo2, "%d; %[^;]s", &matricula, nome); // o [^;] é para ler toda a string ate encontrar ';' fscanf(arquivo2, ";%f ;%f ;%f;", &nt1, &nt2, &nt3); //Enviando para ARVORE: if (!feof(arquivo2)) { //pra que na ultima vez ele nao faça de novo novo_aluno = noNovo(nt1, nt2, nt3, nome,matricula); //aloca os valores no novo aluno. inserirArvore(novo_aluno, arvore); } } fclose(arquivo2); remove("auxiliar.dat");//Apago o arquivo temporário! }
void lerArquivo(tipoArvore *arvore, char *nomeArquivo){ FILE *arquivo; int valor; arquivo = fopen(nomeArquivo, "r"); if(arquivo == 0){ printf("\nNao existe o arquivo na pasta do programa.\n\n"); } else { while((fscanf(arquivo,"%d",&valor) != EOF)){ inserirArvore(valor, arvore); } printf("\nOs elementos do arquivo foram inseridos na arvore com sucesso.\n\n"); } //fclose(arquivo); }