Ir ao conteúdo
  • Cadastre-se

Matheus Morais tome

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Reputação

2
  1. Boa tarde, meu nome é Matheus, sou estudante de Ciências da Computação, eu estou fazendo um trabalho em c++, cujo o objetivo é ordenar os números aleatórios salvos no arquivo "aleatório.txt "utilizando insertion solution e calcular o tempo de compilação, porém estou tendo problemas em ordenação, o tempo o compilador calcula e manda o arquivo pro arquivo grado "saidera.txt", porém os numeros nao estão ordenados em ordem crescente, ficaram ordenados de maneira bem aleatória como podem ver no arquivo saideira.txt, gostaria de ajuda pra saber onde errei . Código e arquivos abaixo.aleatorio.txt #include <stdio.h> #include <stdlib.h> #include <time.h> void InsertionSort (int vet[], int n){ int a, b, minimum; for(int b = 1; b < 100000; b++) { minimum = vet[b]; a = b-1; while(a >= 0 && vet[a] > minimum) { vet[a+1] = vet[a]; a--; } } vet[a+1] = minimum; } void imprimirVet(int vet[], int tamanho) { FILE *fp2; fp2 = fopen("Saideira.txt", "w"); int i; for (i=1; i < tamanho ; i++) fprintf(fp2, "%d", vet[i]); fclose(fp2); printf("\n"); } int main() { FILE *fp; int vet[100000]; int ReadValue; int i=0; fp=fopen("Aleatorio.txt", "r"); if(fp == NULL) printf("Nenhum arquivo encontrado!\n"); else{ while((getc(fp)) != EOF){ fscanf(fp, "%i", &ReadValue); vet[i] = ReadValue; i++; } clock_t StartTime, FinalTime; StartTime = clock(); InsertionSort(vet, i); FinalTime = clock(); printf("Vetor ordenado: \n"); imprimirVet(vet, i); printf("\n\nTempo:%f", ((FinalTime - StartTime) / (double) CLOCKS_PER_SEC)); } fclose(fp); return 0; } Saideira.txt
  2. @AnsiC Funcionou,muito obrigado pela ajuda. adicionado 0 minutos depois @AnsiC Funcionou,muito obrigado pela ajuda.
  3. @AnsiC obrigado,fiz o teste,realmente era um erro nessa como tambem nas outras alterei os & pros corretos,funcionou,porém veio outro erro,o programa ainda esta fechando depois que tento cadastrar um cliente só,ele nao armazena na lista.(imagem do erro e a parte do codigo refeito ). printf("Informe o Nome do Cliente:"); fflush(stdin); scanf("%s[^\n]",novo->nome_cliente); printf("Informe o Numero da Conta:"); scanf("%d",novo->numero_conta); printf("Informe o Saldo do Cliente:"); scanf("%f",novo->saldo);
  4. Boa noite,meu nome é Matheus,sou estudante do curso de Ciencia da Computação do 5°semestre,estou fazendo um trabalho em c junto com meu colega e estamos tendo dificuldade em solucionar esse erro da imagem,tentei alterar o switch tambem mas nao deu certo,solicito assistencia no erro por favor(Imagem em sequencia do erro abaixo)(Algoritmo embaixo do codigo). //Aluno: Bruno Garcia Dos Santos Louveiro RA:202717013098 //Aluno: Matheus Tomi RA:203501813098 #include<stdio.h> #include<stdlib.h> struct Banco{ int numero_conta; char nome_cliente[30]; float saldo; struct Banco *prox; struct Banco *ant; };typedef struct Banco node; void inicia(node *inicio); void InsereInicio(node *inicio); void InsereFinal(node *inicio); void exibe(node *inicio); void remover(node *inicio); void liberar(node * libera); int main(){ node *inicio = (node*) malloc(sizeof(node)); inicia(inicio); int opcao=1; while(opcao!=0){ system("cls"); printf("1-Exibir Lista \n"); printf("2-Adicionar Novo Cliente \n"); printf("3-Remover Cliente \n"); printf("4-Zerar Lista \n"); printf("Digite uma Opcao: "); scanf("%i",&opcao); system("cls"); switch(opcao){ case 1: exibe(inicio); break; int op; case 2: printf("\n"); printf("1-Adicionar no Inicio \n"); printf("2-Adicionar no Final \n\n"); printf("Escolha Uma Das opções:\n"); scanf("%i",&op); switch(op){ case 1: InsereInicio(inicio); break; case 2: InsereFinal(inicio); break; default: printf("Opcao Invalida\n"); system("PAUSE"); break; } case 3: remover(inicio); break; case 4: inicio->prox=NULL; free(inicio); break; case 0: printf("Fim Da Execução!!!\n"); break; default: system("cls"); printf("Codigo Nao Encontrado\n"); system("PAUSE"); break; } } free(inicio); return 0; } void inicia(node* inicio){ inicio->prox=NULL; inicio->ant =NULL; } //FUNÇÃO INSERE INICIO - PARA INSERIR NO INICIO DA LISTA void InsereInicio(node* inicio){ system("cls"); node* novo =(node*) malloc(sizeof(node)); if (!novo){ printf("Nao foi possivel alocar a memoria!\n"); exit(1); } printf("Informe o Nome do Cliente:"); fflush(stdin); scanf("%c[^\n]",novo->nome_cliente); printf("Informe o Numero da Conta:"); scanf("%i",novo->numero_conta); printf("Informe o Saldo do Cliente:"); scanf("%d",novo->saldo); if(inicio->prox==NULL){ inicio->prox=novo; novo->prox=NULL; novo->ant=NULL; }else{ node* aux = (node*) malloc(sizeof(node)); aux=inicio->prox; novo->prox=inicio->prox; novo->ant=NULL; aux->ant=novo; inicio->prox = novo; } } //FUNÇÃO INSEREFINAL - PARA INSERIR NO FINAL DA LISTA void InsereFinal(node* inicio){ system("cls"); node* novo = (node*) malloc(sizeof(node)); if (!novo){ printf("Nao foi possivel alocar a memoria!\n"); exit(1); } printf("Informe o Nome do Cliente:"); fflush(stdin); scanf("%c[^\n]",novo->nome_cliente); printf("Informe o Numero da Conta:"); scanf("%i",novo->numero_conta); printf("Informe o Saldo do Cliente:"); scanf("%d",novo->saldo); if(inicio->prox==NULL){ novo->prox=NULL; novo->ant=NULL; inicio->prox=novo; }else{ node* aux = (node*) malloc(sizeof(node)); aux=inicio->prox; while(aux->prox!=NULL){ aux=aux->prox; } novo->prox=NULL; novo->ant = aux; aux->prox=novo; } } //FUNÇÃO EXIBE - PARA EXIBIR TODAS AS CONTAS void exibe(node* inicio){ system("cls"); node* aux =(node*)malloc(sizeof(node)); aux=inicio; if(inicio->prox==NULL){ printf("\nLista Vazia!\n"); system("PAUSE"); }else{ while(aux->prox!=NULL){ aux=aux->prox; printf("Cliente:%c\n Conta:%i\n Saldo:%f",aux->nome_cliente); printf("Conta: %i\n",aux->numero_conta); printf("Saldo: %f\n",aux->saldo); } system("pause"); } } //-------------------------------------------------------------------------------------------------------------------------------------------------------------- void remover(node* inicio){ node* aux =(node*) malloc(sizeof(node)); aux=inicio; int conta; if(inicio->prox==NULL){ printf("Nao ha Clientes a Serem Removidos!"); exit(1); } printf("\nConta a Ser Removida: \n"); scanf("%i",&conta); //procura o elemento na lista while(aux->numero_conta!=conta){ aux=aux->prox; } //ponteiro para liberarar a memoria depois da operação node* libera =(node*) malloc(sizeof(node)); //verifica se e o primeiro elemento da lista if(inicio->prox==aux){ //verifica se é o unico elemento da lista. tive que que fazer isso por causa de um bug, nao sei se é necessario if(aux->prox==NULL){ libera=aux; inicio->prox = NULL; liberar(libera); }else{ libera = aux; aux=aux->prox; aux->ant =NULL; inicio->prox = aux; liberar(libera); } }//verifica se o elemento e o ultimo da lista else if(aux->prox==NULL){ libera = aux; aux=aux->ant; aux->prox = NULL; liberar(libera); }//se nao o elemento esta no meio else{ node* temp = (node*) malloc(sizeof(node)); libera = aux; temp = aux->ant; aux = aux->prox; temp->prox = aux; aux->ant=temp; liberar(libera); } printf("\nCliente Removido Com Sucesso!\n"); system("pause"); } void liberar(node* libera){ free(libera); }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!