Ir para conteúdo
Fórum Script Brasil

SubDark

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre SubDark

SubDark's Achievements

0

Reputação

  1. Boa Noite pessoal. Estou com um problema muito chato e não sei por onde começar. Para fazer a implementação da Lista por arvore eu preciso criar uma função que adicione os Nos (folhas) da arvores sempre da direita para esquerda não importando o valor da chave de cada folha, para uma arvore com 3 alementos ate sei porem apos isso complica e não tenho nenhuma ideia de como fazer... já ouvi falar em inserção por nivel mais não achei nada falando sobre nem um pseudo codigo para eu ver. alguém teria alguma Ideia de como ir adicionando por nivel e da direita para esquerda não importanto o valor de cada folha (já que apos adicionar caso o valor seja maior que o pai e so trocar os valores). O foco e mais esse como adicionar folha por nivel. desde já agradeço o tempo de voces! So para auxilio struct Tree{ int chave; Tree * esq; Tree * dir; };
  2. Boa Noite Pessoal... Venho recorrer a ajuda de voces pois estou tentando resolver esse problema e não sei exatamente o que ocorre. E o seguinte, estou criando um programa que ao iniciar ele verifica se tem um arquivo, caso não haja ele passa direto, crio minha lista e ao final ele salva a lista num arquivo binario, ate ai tudo bem, mais ao abrir novamente o programa ele da erro e fecha antes mesmo de mecher nele, O que eu acredito ser na hora da leitura do arquivo esse tal erro. O programa esta em C. int main() { FILE *file; //Criar Primeiro elemento da lista (Cabeça) tProd *inicio = (tProd*) malloc(sizeof(tProd)); inicio->cod = 0; inicio->prox = NULL; //abre o arquivo para leitura em modo binário file = fopen("Produtos", "rb"); if (file != NULL){ //Ponteiro de armazenamento temporario tProd *temp2 = (tProd*) malloc(sizeof(tProd)); temp2 = inicio->prox; //Enquanto nao chegar fim de arquivo //Copia de 1 em 1 encadeando while( feof(file) == 0 ) { //Ponteiro de armazenamento novo tProd *temp1 = (tProd*) malloc(sizeof(tProd)); temp1->prox = NULL; //Le a estrutura e armazena no temp1 fread(&temp1, sizeof(tProd), 1, file); //Procura o ultimo elemento para adicionar o proximo if(inicio->prox == NULL){ inicio->prox = temp1; //inicio->cod = temp1->cod + 1 } else { while (temp2->prox != NULL){ temp2 = temp2->prox; } temp2->prox = temp1; //inicio->cod = temp1->cod + 1 } } } else { printf("\n-- O Arquivo Nao foi Aberto ou Nao Existe,\n-- Apos Cadastrar Todos Produtos Sera Salvo Um Novo Arquivo\n\n"); } fclose(file); e aqui esta a função que salva e struct que estou utilizando typedef struct pProd { int cod; //Codigo do produto char nome[30]; //Nome float preco; //Preço do produto int quanti; //Quantidade struct pProd *prox; //Ponteiro para o proximo elemento } tProd; void salvar(FILE *file, int num, tProd *inicio){ int i; tProd *temp = inicio->prox; while(temp != NULL){ fwrite(&temp, sizeof(tProd), 1, file); temp = temp->prox; } } Espero que voces possam me salvar.
×
×
  • Criar Novo...