Ir ao conteúdo

Posts recomendados

Postado

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.");
    }    
}

 

Postado

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
Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!