Ir para conteúdo
Fórum Script Brasil

Rafablum

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

Sobre Rafablum

  • Data de Nascimento 30/11/1979

Perfil

  • Gender
    Male
  • Location
    Porto Alegre

Rafablum's Achievements

0

Reputação

  1. Ola, Pessoal. Minha duvida é a seguinte, Me foi passado um trabalho onde teremos uma lista encadeada simples pronta e o que temos a fazer é criar uma arvore binaria e apresentar os elementos da lista de forma ordenada por código, ou nome, ou CNPJ, conforme a escolha do usuário, além de oferecer uma busca por elementos da lista com melhor desempenho. As buscas e ordenações devem ser realizadas, exclusivamente, sobre árvores. Sei arvores binarias e listas encadeadas, mas a questão de criar uma arvore binaria para acessar os dados de uma lista ta difícil. Teriam como me ajudar??? Estou pesquisando alguns exemplos de códigos como minha dúvida, mas é bem difícil achar isso... Quem puder me ajudar, obrigado!! #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct loja{ int codigo; char nome[120]; char cnpj[20]; char uf[4]; struct loja * proximo; }elemento_loja; void monta_tabela(){ int i=0; for(i=0; i<59; i++){ printf("%c", 205); } } elemento_loja * cria_elemento_lista(int codigo, char nome[], char cnpj[],char uf[]){ elemento_loja * novo = malloc(sizeof(elemento_loja)); novo->codigo = codigo; strcpy(novo->nome, nome); strcpy(novo->cnpj, cnpj); strcpy(novo->uf, uf); novo->proximo = NULL; return novo; } elemento_loja * inserir_loja_na_lista(elemento_loja * lista, elemento_loja * novo){ elemento_loja * inicio_lista = lista; if (lista == NULL){ return novo; }else{ while(lista->proximo != NULL){ lista = lista->proximo; } lista->proximo = novo; return inicio_lista; } } void exibe_lista_lojas(elemento_loja * lista){ int cont = 0; system("cls"); printf("==============================================================================\n"); printf("%-10s %-48s %-15s %-2s\n", "CODIGO","NOME","CNPJ","UF"); printf("==============================================================================\n"); while(lista != NULL){ printf( "%-10d %-48s %-15s %-2s\n", lista->codigo, lista->nome, lista->cnpj, lista->uf); lista = lista->proximo; //cont++; //if (cont == 40){ //system("pause"); //cont = 0; //printf("==============================================================================\n"); // printf("%-10s %-48s %-15s %-2s\n", "CODIGO","NOME","CNPJ","UF"); // printf("==============================================================================\n"); } getch(); //} } elemento_loja * carregar_arquivo(char path[]){ FILE * arq; elemento_loja * lista_de_lojas = NULL; elemento_loja * novo = NULL; int codigo; char nome[100]; char cnpj[20]; char uf[3]; if((arq = fopen(path, "r")) == NULL){ printf("Erro ao abrir arquivo: %s \n", path); return NULL; } while (fscanf(arq, "%d,%[^,],%[^,],%2s,", &codigo, nome, cnpj, uf) != EOF ){ novo = cria_elemento_lista(codigo, nome, cnpj, uf); lista_de_lojas = inserir_loja_na_lista(lista_de_lojas, novo); } if(fclose(arq)){ printf("Erro ao fechar arquivo: %s \n", path); return NULL; } return lista_de_lojas; } carregamento(){ int x; char tecla[50]; gotoxy(27, 9);printf("Carregando programa"); for(x=0; x<101; x++){ sleep(30); gotoxy(35, 10); printf("%d%%", x); } for(x=0; x<10; x++){ gotoxy(27, 9);printf("Carregando programa"); sleep(50); gotoxy(27, 9);printf(" "); sleep(50); } } int main(){ int op; do{ char path[] = "dados_trabalho.txt"; elemento_loja * lista_de_lojas = carregar_arquivo(path); carregamento(); // Simulando carregamento de programa "LOAD". clrscr(); textcolor(12); monta_tabela(); printf("\n |<<<<<<< MENU ARVORE C >>>>>>|\n"); printf(" | 1 - Apresenta loja por codigo |\n"); printf(" | 2 - Apresenta loja por nome |\n"); printf(" | 3 - Apresenta loja por CNPJ |\n"); printf(" | 4 - Buscar por loja |\n"); printf(" | 5 - Todas lojas |\n"); printf(" | 0 - Sair |\n"); monta_tabela(); printf("\nInforme a opcao desejada: "); scanf("%d", &op); switch(op) { case 1: break; case 2: break; case 3: break; case 4: break; case 5: exibe_lista_lojas(lista_de_lojas); break; default: if(op <0 || op>5){ printf("Escolha errada... tente novamente! \n"); } getch(); } }while(op !=0); }
  2. Funcionou mesmo, só que agora as outras operações de soma, subt e multipli, deram zero. Coloquei float no lugar de int e %f como ficaria? As outras operações você pode deixar como int e %d. E na atribuição da divisao, use um cast para forçar a divisão do tipo float no primeiro numero, divisao = (float)numero1 / numero2; Hum... Mas Vega, me desculpa minha falta de pratica em C, estou no inicio do aprendizado e não sei o que seria cast e como deixar em int / %d, se troquei para float? Poderia arrumar para mim, ver como ficaria? #include<stdlib.h> #include<stdio.h> int main(){ float numero1, numero2, soma, subtracao, multiplicacao, divisao; printf("informe o primeiro numero: \n"); scanf("%d", &numero1); printf("informe o segundo numero: \n"); scanf("%d", &numero2); soma = numero1+numero2; subtracao = numero1-numero2; multiplicacao = numero1*numero2; divisao = (float)numero1/numero2; printf ("valor da soma é: %d \n", soma); printf ("valor da subtracao é: %d \n", subtracao); printf ("valor da multiplicacao é: %lf \n", multiplicacao); printf ("valor da divisao é: %.2f \n", divisao); system("pause"); } Ola, Vega! Consegui! Agora sim intendi o que estava falando! Fica assim né: int numero1, numero2, soma, subtracacao, multiplicacao; float divisao; E depois força lá em: divisao = (float) numero1/numero2; Muito obrigado e ai fica a dica para o pessoa que esta começando como eu. :rolleyes:
  3. Funcionou mesmo, só que agora as outras operações de soma, subt e multipli, deram zero. Coloquei float no lugar de int e %f como ficaria? As outras operações você pode deixar como int e %d. E na atribuição da divisao, use um cast para forçar a divisão do tipo float no primeiro numero, divisao = (float)numero1 / numero2; Hum... Mas Vega, me desculpa minha falta de pratica em C, estou no inicio do aprendizado e não sei o que seria cast e como deixar em int / %d, se troquei para float? Poderia arrumar para mim, ver como ficaria? #include<stdlib.h> #include<stdio.h> int main(){ float numero1, numero2, soma, subtracao, multiplicacao, divisao; printf("informe o primeiro numero: \n"); scanf("%d", &numero1); printf("informe o segundo numero: \n"); scanf("%d", &numero2); soma = numero1+numero2; subtracao = numero1-numero2; multiplicacao = numero1*numero2; divisao = (float)numero1/numero2; printf ("valor da soma é: %d \n", soma); printf ("valor da subtracao é: %d \n", subtracao); printf ("valor da multiplicacao é: %lf \n", multiplicacao); printf ("valor da divisao é: %.2f \n", divisao); system("pause"); }
  4. Funcionou mesmo, só que agora as outras operações de soma, subt e multipli, deram zero. Coloquei float no lugar de int e %f como ficaria?
  5. Ola, Pessoal, Desculpa se estou me expressando errado nos comando, é que sou novo em C, e queria a ajuda de vocês. Tenho um trabalho que tenho que colocar 2 numero e mostrar o resultado deles nas quatro operações, mas na divisão não esta saindo certo. Tipo: 7/2 o resultado seria 3.5, mas esta dando 3 Me ajudem e obrigado! #include<stdlib.h> #include<stdio.h> int main(){ int numero1, numero2, soma, subtracao, multiplicacao, divisao; printf("informe o primeiro numero: \n"); scanf("%d", &numero1); printf("informe o segundo numero: \n"); scanf("%d", &numero2); soma = numero1+numero2; subtracao = numero1-numero2; multiplicacao = numero1*numero2; divisao = numero1/numero2; printf ("valor da soma é: %d \n", soma); printf ("valor da subtracao é: %d \n", subtracao); printf ("valor da multiplicacao é: %d \n", multiplicacao); printf ("valor da divisao é: %d \n", divisao); system("pause"); }
×
×
  • Criar Novo...