Ir ao conteúdo
  • Cadastre-se

C Pessoal Alguém pode me ajudar a Ordenação por Insertion sort & Selection sort


Posts recomendados

Pessoal eu fiz uma Exercicio que a Professora perdiu porém conseguir o metodo burble sort , agora estou com dificuldades em metodos de ordenação em Insertion sort & Selection Sort , gostaria de ordenar em meu Case 7 & Case 8 do modo Insertion sort & Selection sort

 

 

 

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

struct Endereco
{
    char rua[30];
    int numero;
    char comp[30];
    char bairro[30];
    int cep;
    char cidade[30];
    char estado[3];
    char pais[30];
};

struct Telefone
{
    int dd;
    int tel;
};

struct Aniversario
{
    int dd;
    int mes;
    int ano;
};

struct Pessoa
{
    char nome[30];
    char email[30];
    struct Endereco ende;
    struct Telefone fone;
    struct Aniversario data;
    char obs[50];
};

int main()
{
    struct Pessoa contatos[100];
    int opcao;/// VARIAVEL NA ESCOLHA DO MENU
    int indice=0;///VARIAVEL QUE CONTEM O VALOR DO INDICE DO VETOR
    int i,j,encontrou=0;///INDICA A QDE DE REGISTRO
    char pesq[30];///GUARDAR O NOME DA PESQUISA
    int cod;
    int d,m;

    do
    {
        system("cls");
        printf("---###--AGENDA DE CONTATOS--###---\n");
        printf("\n 1 - Pesquisar por NOME");//será mostrado NOME, TELEFONE, EMAIL
        printf("\n 2 - Pesquisar por MES ANIVERSARIO");
        printf("\n 3 - Pesquisar por DIA e MES ANIVERSARIO");
        printf("\n 4 - Cadastrar CONTATO");
        printf("\n 5 - Excluir CONTATO");
        printf("\n 6 - LISTAR todos os contatos");
        printf("\n 7 - ORDENAR POR NOME");//
        printf("\n 8 - ORGANIZAR POR NUMERO ");
        printf("\n 9 - FINALIZAR PROGRAMA\n");
        printf("\n ESCOLHA UMA OPCAO:");
        scanf("%d",&opcao);
        fflush(stdin);
        switch(opcao)
        {
        case 1:
            system("cls");
            printf("\n--**** PESQUISAR POR NOME ****--");
            printf("\nPESQUISAR:");
            gets(pesq);
            for(i=0; i<indice; i++)
            {
                if(strcmp(pesq,contatos.nome)==0)
                {
                    printf("\n CODIGO:%i",i);
                    printf("\n NOME:%s",contatos.nome);
                    printf("\n EMAIL:%s",contatos.email);
                    printf("\n TEL:%d %d",contatos.fone.dd,contatos.fone.tel);
                    printf("\n ANIVERSARIO DD/MM/ANO : %i/%i/%i", contatos.data.dd, contatos.data.mes, contatos.data.ano);

                    encontrou = 1;
                }
            }
            if (encontrou==0)
            {
                printf("\n NENHUM REGISTRO ENCONTRADO!\n\n");
            }
            printf("\n");


            system("pause");
            break;
        case 2:
           printf("\nPesquisar por MES ANIVERSARIO\n");

            printf("\nPESQUISAR: ");
            scanf("%d",&m);
            encontrou=0;
            for(i=0; i<indice; i++)
            {
                if(m == contatos.data.mes)
                {
                    printf("\n CODIGO:%i",i);
                    printf("\n NOME:%s",contatos.nome);
                    printf("\n EMAIL:%s",contatos.email);
                    printf("\n TEL:%d %d",contatos.fone.dd,contatos.fone.tel);
                    printf("\n ANIVERSARIO DD/MM/ANO : %i/", contatos.data.dd);
                    printf("%d/%d",contatos.data.mes, contatos.data.ano);
                    encontrou = 1;
                }
                printf("\n------------------------------------------------------\n");
            }
            if(encontrou==0)
            {
                printf("\n     REGISTRO NÃO ENCONTRADO!\n\n");
            }
            printf("\n");
            system("pause");
            break;
        case 3:

              printf("\nPesquisar por DIA e MES ANIVERSARIO\n");
            printf("\nPESQUISAR: ");
            printf("Informe O Dia:  ");
            scanf("%i",&d);
            printf("Informe O Mes: ");
            scanf("%d",&m);
            encontrou=0;
            for(i=0; i<indice; i++)
            {
                if(d == contatos.data.dd && m == contatos.data.mes)
                {
                    printf("\n CODIGO:%i",i);
                    printf("\n NOME:%s",contatos.nome);
                    printf("\n EMAIL:%s",contatos.email);
                    printf("\n TEL:%d %d",contatos.fone.dd,contatos.fone.tel);
                    printf("\n ANIVERSARIO DD/MM/ANO : %i/", contatos.data.dd);
                    printf("%d/%d",contatos.data.mes, contatos.data.ano);
                    encontrou = 1;
                }
                printf("\n------------------------------------------------------\n");
            }
            if(encontrou==0)
            {
                printf("\n     REGISTRO NÃO ENCONTRADO!\n\n");
            }
            printf("\n");
            system("pause");

            break;
        case 4:
            system("cls");
            printf("\n--**** CADASTRO DE CONTATO ****--");
            printf("\n CODIGO:%i\n",indice);
            printf("\n NOME:");
            gets(contatos[indice].nome);
            printf("\n EMAIL:");
            gets(contatos[indice].email);
            printf("\n TELEFONE:");
            printf("\n DD:");
            scanf("%d",&contatos[indice].fone.dd);
            printf("\n TEL:");
            scanf("%d",&contatos[indice].fone.tel);
            printf("\n ANIVERSARIO: ");
            scanf("%i/%i/%i", &contatos[indice].data.dd, &contatos[indice].data.mes, &contatos[indice].data.ano);
            indice++;
            fflush(stdin);
            break;
        case 5:
            printf("\n--###----EXCLUIR CONTATO----###--\n");
            printf("\nINFORMA O CODIGO:");
            scanf("%i",&cod);
            printf("\n NOME:%s",contatos[cod].nome);
            printf("\n EMAIL:%s",contatos[cod].email);
            printf("\n TEL:%d %d",contatos[cod].fone.dd,contatos[cod].fone.tel);
            printf("\n ANIVERSARIO: %i/%i/%i", contatos[cod].data.dd, contatos[cod].data.mes, contatos[cod].data.ano);
            printf("\nDeseja EXCLUIR CONTATO? SIM(1)/NAO(2): ");
            scanf("%i",&i);
            if(i==1)
            {
                for(i=cod; i<indice; i++)
                {
                    strcpy(contatos.nome,contatos[i+1].nome);
                    strcpy(contatos.email,contatos[i+1].email);
                    contatos.fone.dd=contatos[i+1].fone.dd;
                    contatos.fone.tel=contatos[i+1].fone.tel;
                    contatos.data.dd=contatos[i+1].data.dd;
                    contatos.data.mes=contatos[i+1].data.mes;
                    contatos.data.ano= contatos[i+1].data.ano;
                }
                indice--;
            }
            break;
        case 6:
            for(i=0; i<indice; i++)
            {
                printf("\nCODIGO: %i",i);
                printf("\n NOME:%s",contatos.nome);
                printf("\n EMAIL:%s",contatos.email);
                printf("\n TEL:%d %d",contatos.fone.dd,contatos.fone.tel);
                printf("\n ANIVERSARIO: %i/%i/%i", contatos.data.dd, contatos.data.mes, contatos.data.ano);
                printf("\n--------------------------------\n");
            }
            system("pause");
            break;
        case 7:

            system("cls");
            printf("=================================\n");
            printf("\n\t\tOrdenando por Nome\n");

            for(i = 1; i < indice; i++)
            {
                for(j=0; j < indice-1; j++)
                {

                    if(strcmp(contatos[j].nome, contatos[j+1].nome)>0)
                    {
                        // os valores da posição estão sendo guardados na struct
                        strcpy(pesq, contatos[j].nome);
                        strcpy(contatos[j].nome, contatos[j+1].nome);
                        strcpy(contatos[j+1].nome, pesq);

                    }
                }

                for(i=0; i<indice; i++)
                {
                    printf("\n");
                    printf("NOME: = %s\n", contatos.nome);
                }

            }


            system("pause");

            break;

            case 8:


         system("cls");
            printf("\n\t\t ------### ORGANIZAR POR NUMERO ###------ \n");
            for(i=1; i < contatos.fone.dd; i++)
            {
                for(j=0; j < contatos.fone.dd-1; j++)
                {
                    for(i=1; i < contatos.fone.tel; i++)
                    {
                        for(j=0; j < contatos.fone.tel-1; j++)
                        {
                            printf("\nNUMERO: %d %d \n", contatos.fone.dd, contatos.fone.tel);
                        }
                    }
                }
        }
        system("pause");
            break;
       }

    }while(opcao!=9);


    return 0;
}
 

main.pdf

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!