Ir ao conteúdo
  • Cadastre-se

C++ Não estou tendo resultado usando time.h


Posts recomendados

Peguei vários exemplos na internet, mas todos continuam dando 0. No código tem dois diferentes, um no bubble e outro no selection, se alguém puder me ajudar.

C++.

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

struct cadastro{     
    int cod;
    struct cadastro *prox, *ant;
};

typedef struct cadastro cadastro;
int opcao;

void bubblesort(cadastro *lista);
void selectionsort(cadastro *lista);
void quicksort(cadastro *lista);
void insertionsort(cadastro *lista);


main()
{
    cadastro *lista = (cadastro*) malloc(sizeof(cadastro));
    if(!lista){
        printf("\nErro.\n");
        exit(1);
    }else
    {
        lista->cod = 0;
        lista->prox = NULL;
        lista->ant = NULL;
    }    
    
    do
    {
        printf("\nMenu de Selecao\n");
        printf("\n1 - Insercao.");
        printf("\n2 - Imprimir lista de clientes.");
        printf("\n3 - Bubble Sort.");
        printf("\n4 - Selection Sort.");    
        printf("\n5 - Quick Sort.");
        printf("\n6 - Insertion Sort.");
        printf("\n7 - Sair do programa de cadastro.");
        printf("\nEscolha uma das opções acima (1 a 7): ");                        
        scanf("%i", &opcao);
        system("cls");    
        switch(opcao)
        {
            case 1:
                {
                    cadastro *inser = (cadastro*) malloc(sizeof(cadastro));
                    cadastro *temp;
                    if(!inser)
                    {
                        printf("\nErro.\n");
                        exit(0);
                    }                    
                    inser->prox = NULL;
                    inser->ant = NULL;    
                    printf("Digite um numero: ");
                    scanf("%i", &inser->cod);            
                                    
                    if(lista->prox == NULL)
                    {
                        lista->prox = inser;
                        inser->ant = lista;
                        inser->prox = lista;
                        lista->ant = inser;
                    }
                    else
                    {
                        temp = lista->prox;                        
                        while(temp->prox != lista)
                        {
                            temp = temp->prox;    
                        }
                        temp->prox = inser;
                        inser->ant = temp;
                        inser->prox = lista;
                        lista->ant = inser;
                    }
                    system("cls");                    
                    break;
                }
            case 2:
                {
                    cadastro *temp;
                    temp = lista;
                    if(lista->prox == NULL)
                    {    
                        printf("\nErro. Nao ha registro nos arquivos.\n\n");                    
                    }
                    else
                    {
                        while(temp->prox != lista)
                        {    
                            temp = temp->prox;                                        
                            printf("\nNumero: %i\n", temp->cod);                        
                        }                        
                    }                            
                    break;
                }
            case 3:
                {
                    bubblesort(lista);
                    break;
                }
            case 4:
                {
                    selectionsort(lista);
                    break;
                }
            case 5:
                {
                    break;
                }
            case 6:
                {
                    insertionsort(lista);
                    break;
                }            
        }
    }while(opcao != 7);            
}

void bubblesort(cadastro *lista)
{
    cadastro *temp, *aux, *comp;
    temp = lista;
    aux = lista;
    comp = lista;
    clock_t t;
    if(lista->prox == NULL)
    {
        printf("\nErro. Nao ha registro nos arquivos.\n\n");                    
    }else
    {
        t = clock();    
        while(comp->prox != lista)
        {
            if(temp->prox == lista)
            {
                temp = lista->prox;
                aux = temp->prox;
            }else
            {
                temp = temp->prox;
                aux = temp->prox;                                
            }
            
            if(temp->cod > aux->cod)
            {
                temp->ant->prox = aux;
                aux->ant = temp->ant;                                
                temp->ant = aux;
                aux->prox->ant = temp;                                                                    
                temp->prox = aux->prox;                            
                aux->prox = temp;
                comp = temp->ant;
                temp = lista;
                aux = lista;
                while(comp->ant != lista)
                {
                    comp = comp->ant;
                }                                                                        
            }else
            {
                comp = comp->prox;                
            }
        }
        t = clock() - t;        
    }
    printf("(%.3f)",t,((float)t)/CLOCKS_PER_SEC);    
    printf("\nRegistros ordenados.");            
}

void selectionsort(cadastro *lista)
{
    cadastro *temp, *ref, *menor, *aux;
    ref = lista->prox;
    menor = ref;
    temp = ref->prox;
    clock_t start_time, end_time;
    if(lista->prox == NULL)
    {
        printf("\nErro. Nao ha registro nos arquivos.\n\n");    
    }else
    {
        start_time = clock();
        while(ref->prox != lista)
        {
            while(temp != lista)
            {
                if(menor->cod > temp->cod)
                {
                    menor = temp;
                    temp = temp->prox;
                }else
                {
                    temp = temp->prox;
                }
            }
            
            if(menor == ref)
            {
                ref = ref->prox;
                menor = ref;
                temp = ref->prox;
            }else
            {
                aux = menor->prox;
                if(menor->ant != ref) 
                {
                    temp = menor->ant;
                    ref->ant->prox = menor;
                    menor->ant = ref->ant;                        
                    ref->ant = temp;    
                    ref->prox->ant = menor;
                    menor->prox = ref->prox;
                    temp->prox = ref;
                    ref->prox = aux;
                    aux->ant = ref;        
                }else
                {
                    temp = ref->ant;                                    
                    ref->prox = aux;                                    
                    temp->prox = menor;                                        
                    ref->ant = menor;
                    menor->ant = temp;
                    menor->prox = ref;
                    aux->ant = ref;
                }        
                
                ref = menor->prox;
                menor = ref;
                temp = ref->prox;    
                aux = lista;                                    
            }
        }
        end_time = clock();
        printf("Lista ordenada.");        
    }    
   printf( "Execution time was %.20f ms\n",(end_time - start_time) / CLOCKS_PER_SEC );    
}

void insertionsort(cadastro *lista)
{
    cadastro *temp, *ref, *aux;
    ref = lista->prox;
    temp = ref->prox; 
    if(lista->prox == NULL)
    {
        printf("\nErro. Nao ha registro nos arquivos.\n\n");    
    }else
    {
        while(ref->prox != lista)
        {
            if(ref->cod > temp->cod)
            {
                temp->ant = ref->ant;
                ref->ant->prox = temp;
                ref->ant = temp;
                temp->prox->ant = ref;                                    
                ref->prox = temp->prox;
                temp->prox = ref;
                while(temp->ant != lista)
                {
                    if(temp->cod < temp->ant->cod)
                    {
                        aux = temp->ant;
                        temp->ant = aux->ant;                                            
                        aux->ant->prox = temp;
                        aux->ant = temp;
                        temp->prox->ant = aux;
                        aux->prox = temp->prox;
                        temp->prox = aux;
                    }else
                    {
                        temp = temp->ant;
                    }
                }
                temp = ref->prox;
            }else
            {
                ref = ref->prox;
                temp = temp->prox;
            }
        }
        printf("Lista Ordenada.");
    }    
}

 

Link para o comentário
Compartilhar em outros sites

Escreva seu próprio "exemplo" e teste em separado. Só quer medir um intervalo.

 

Está usando C mas marcou C++ ao abrir o tópico

 

Pode ser algo simples como

int main()
{
	clock_t inicio = clock();
	printf("Cronometro rodando. Tecle ENTER para ver o intervalo: ");
	getc(stdin);
	clock_t final = clock();
	printf("Intervalo: %6.2fs\n", (double)(final - inicio) / CLOCKS_PER_SEC);
	return 0;
}

que mostra algo assim

Cronometro rodando. Tecle ENTER para ver o intervalo:
Intervalo:   7.18s

Acho que falta só o (cast) no seu programa. Teste sempre em separado.

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Esses "ambientes integrados de desenvolvimento" em geral tratam C e C++ ou muitas linguagens mesmo. O gcc no Linux é um kit de compiladores, de FORTRAN a C++, incluindo C e várias outras. Na Microsoft o Visual Studio e o Visual Studio Code aceitam de C a Assembler a javascript e dezenas de linguagens. É o mesmo com vários outros IDE.

 

E aqui no forum essas linguagens C C++ e C# estão juntas mas são muito diferentes. Então na lista as questão tem um ícone pra cada linguagem e você escolhe ao criar um tópico. No Dev-C++ acho que diferencia apenas pela extensão do arquivo, c ou cpp

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...