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! }
tipoNo* inserirElemento(int numero, tipoNo *raiz){ tipoNo* novo = noNovo(numero); if(raiz == NULL){ novo->cor = NEG; return novo; } tipoNo* aux = raiz; while(1){ if(novo->dado == aux->dado){ free (novo); return raiz; } else if(novo->dado < aux->dado){ if(aux->noEsquerdo == NULL){ aux->noEsquerdo = novo; novo->noPai = aux; return balanceamentoCaso1(raiz, novo); } else{ aux = aux->noEsquerdo; } } else { if (aux->noDireito == NULL){ aux->noDireito = novo; novo->noPai = aux; return balanceamentoCaso1(raiz, novo); } else{ aux = aux->noDireito; } } } }
NO* inserirElemento(NO* novo_aluno, NO *raiz) { NO* novo = noNovo(novo_aluno->nota1, novo_aluno->nota2, novo_aluno->nota3,novo_aluno->nome, novo_aluno->matricula); if(raiz == NULL) { novo->cor = NEG; return novo; } NO* aux = raiz; while(1) { if(novo_aluno->matricula == aux->matricula) { aux = novo; /*Substituindo o novo no lugar do antigo*/ return raiz; } else if(novo_aluno->matricula < aux->matricula) { if(aux->esquerda == NULL) { aux->esquerda = novo; novo->pai = aux; return balanceamentoCaso1(raiz, novo); } else { aux = aux->esquerda; } } else { if (aux->direita == NULL) { aux->direita = novo; novo->pai = aux; return balanceamentoCaso1(raiz, novo); } else { aux = aux->direita; } } } }