Atividade Complementar 3 Estrutura de Dados

Embed Size (px)

DESCRIPTION

atividade complementar de estrutura de dados 3 com capacidade de fundamentar o que é estrutura de dados

Citation preview

  • Folha de Resposta Ricael Spirandeli Rocha Estrutura de Dados

    1) Os tipos de dados so divididos em primitivos e estruturados, comente acerca deles descrevendo-os. Os tipos primitivos de dados so atmicos, no sentido em que no podem ser

    decompostos em tipos mais simples. Alguns tipos primitivos relacionam-se diretamente

    sua representao interna, como o caso dos nmeros inteiros.

    Outros tipos primitivos, como o tipo caractere, precisam de um pequeno suporte

    de hardware ou software para serem representados internamente. Agora, voc ver com

    mais detalhes os tipos primitivos numricos, caractere e booleano.

    Os tipos estruturados de dados so construdos a partir dos tipos primitivos. Estes tipos

    so previstos por muitas linguagens de programao e devem ser definidos pelo

    programador. Exemplos de tipos estruturados: array e registro. Estes dois tipos so

    formados por tipos bsicos como inteiros, caracteres, reais, etc. Uma declarao de

    varivel em uma linguagem de programao, como C, especifica duas coisas:

    I. Quantos bytes devem ser reservados para armazenar esta varivel (Ex.: no caso de

    uma varivel inteira, deve ser reservado um espao que garanta que o maior inteiro

    permitido poder ser representado);

    II. Como estes bytes devem ser interpretados (Ex.: uma cadeia de bits pode ser

    interpretada como um inteiro ou um real);,

    2) Diferencie estruturas homogneas e heterogneas.

    As estruturas homogneas so conjuntos de dados formados pelo mesmo tipo de dado

    primitivo e as estruturas heterogneas so conjuntos de dados formados por tipos de

    dados primitivos diferentes (campos do registro) em uma mesma estrutura.

    Um exemplo de estrutura homognea o vetor, um arranjo de elementos (dados)

    armazenados na memria do computador, sendo estes dados organizados de forma

    eficiente um aps o outro, sob um mesmo identificador, cujas regras so as mesmas

    para criar um identificador de uma varivel simples, que possui capacidade de guardar

    somente um valor. Por outro lado as heterogneas so compostas por registros.

  • Folha de Resposta Ricael Spirandeli Rocha Estrutura de Dados

    3) Construa um programa na linguagem C que represente uma Lista Esttica Desordenada, que possua como campos: cdigo e nome do cliente. Neste programa ser necessrio criar um menu que tenha inserir, remover, listar, consulta. Observao: Implemente um contador de registros inseridos e que o mesmo dever ser decrementado quando a informao foi excluda. #include

    #include

    #include

    // Lista desordenada

    typedef struct tipo_cliente { int codi;

    char nome[100];

    struct tipo_cliente *prox;

    } C;

    C *first = NULL;

    C *fim = NULL;

    C * presente;

    int menu, qtd;

    void L()

    { int inteiro;

    for (inteiro=1;inteiro codi = cod_linha;

    for (inteiro=0;inteironome[inteiro] =nome_linha[inteiro];

  • Folha de Resposta Ricael Spirandeli Rocha Estrutura de Dados novo_cod->prox = NULL;

    if (first == NULL)

    { first = novo_cod;

    fim = novo_cod;

    }

    else

    { fim->prox = novo_cod;

    fim = novo_cod;

    }

    printf("\n\nInserido com Sucesso!!!!\n");

    printf("\nContinuar inserindo (1-sim/2-nao)? ");

    scanf("%d",&continuar);

    }while (continuar == 1);

    }

    void consultar()

    { int codic, continuar, achou=0;

    do{ topo();

    printf("\nConsulta cliente pelo codigo\n\n");

    printf("\nCodigo: ");

    scanf("%d",&codic);

    presente = first;

    while(presente != NULL)

    { if (presente->codi == codic)

    { achou = 1;

    printf("\n\nCodigo Nome\n");

    printf("----------------------------------\n");

    printf("%9d %-20s\n",presente->codi, presente->nome);

    printf("-----------------------------------\n");

    break;

    }

    else

    presente = presente->prox;

    }

    if (achou == 0)

    printf("\n\nCliente nao encontrado!!\n");

    printf("\nContinuar consultando (1-sim/2-nao)? ");

    scanf("%d",&continuar);

    }while (continuar == 1);

    }

    void remover()

    { C *noantrem;

    int matr, confrem, continuar, achou;

    do{ achou = 0;

    topo();

    printf("\nRemove cliente \n\n");

    printf("\nCodigo: ");

    scanf("%d",&matr);

    presente = first;

    while(presente != NULL)

  • Folha de Resposta Ricael Spirandeli Rocha Estrutura de Dados { if (presente->codi == matr)

    { achou = 1;

    printf("\n\nCodigo Nome\n");

    printf("------------------------------------\n");

    printf("%9d %-20s\n",presente->codi, presente->nome);

    printf("-------------------------------------\n");

    printf("\n\nDeseja remover o cliente (1-sim, 2-nao)? ");

    scanf("%d",&confrem);

    if (confrem ==1)

    {

    if (presente == first)

    first = first->prox;

    else

    { noantrem->prox=presente->prox;

    if (presente == fim)

    fim=noantrem;

    }

    qtd--;

    free(presente);

    printf("\n\nRemovido com sucesso!\n");

    }

    else

    printf("\n\nRemocao cancelada\n");

    break;

    }

    else

    { noantrem = presente;

    presente = presente->prox;

    }

    }

    if (achou == 0)

    printf("\n\nCliente nao encontrado!\n");

    printf("\n\nDeseja remover novamente ? (1-sim, 2-nao)? ");

    scanf("%d",&continuar);

    }while (continuar ==1);

    }

    void listar ()

    { presente = first;

    topo();

    printf("\nLista de Cliente\n\n");

    if (qtd != 0)

    { printf("\n\nCodigo Nome\n");

    printf("-------------------------------\n");

    while( presente != NULL)

    { printf("%9d %-20s\n",presente->codi, presente->nome);

    presente = presente->prox;

    }

    printf("--------------------------------\n");

    printf("\n\nQuantidade de Clientes = %d\n",qtd);

    }

  • Folha de Resposta Ricael Spirandeli Rocha Estrutura de Dados else

    printf("\n\n Nao existe cliente cadastrado");

    printf("\n\n\nTecle enter para voltar \n");

    getche();

    }

    //menu principal

    main()

    { qtd = 0;

    do

    { topo();

    printf("\n Menu de Opcoes: \n\n");

    printf("\t1- Inserir novo Cliente\n\n");

    printf("\t2- Remover Cliente\n\n");

    printf("\t3- Consultar Cliente\n\n");

    printf("\t4- Lista de Clientes\n\n");

    printf("\t0- Sair do Programa\n\n\n");

    L();

    printf("Informe a Opcao desejada: ");

    scanf("%d",&menu);

    switch(menu)

    { case 1: inserir(); break;

    case 2: remover(); break;

    case 3: consultar(); break;

    case 4: listar(); break;

    case 0: break;

    default : printf("\nOpcao ERRADA! Tecle enter...");

    getche(); break;

    }

    }while(menu!=0);

    presente = first;

    while (presente != NULL)

    { first = presente->prox;

    free(presente);

    presente = first;

    }

    }

  • Folha de Resposta Ricael Spirandeli Rocha Estrutura de Dados

    4) Construa um programa na linguagem C que represente uma Lista Dinmica Desordenada, que possua como campos: cdigo, nome do cliente. Neste programa ser necessrio criar um menu que tenha inserir, remover, listar, consulta. Observao: Implemente um contador de registros inseridos e que o mesmo dever ser decrementado quando a informao foi excluda. #include

    #include

    #include

    #include

    typedef struct tipo_cliente { int codi;

    char nome[100];

    struct tipo_cliente *prox;

    } C;

    C *first = NULL;

    C *fim = NULL;

    C * presente;

    int menu, qtd;

    void L()

    { int inteiro;

    for (inteiro=1;inteiro codi = cod_linha;

    for (inteiro=0;inteironome[inteiro] =nome_linha[inteiro];

  • Folha de Resposta Ricael Spirandeli Rocha Estrutura de Dados novo_cod->prox = NULL;

    if (first == NULL)

    { first = novo_cod;

    fim = novo_cod;

    }else

    { fim->prox = novo_cod;

    fim = novo_cod;

    }printf("\n\nInserido com Sucesso!!!!\n");

    printf("\nContinuar inserindo (1-sim/2-nao)? ");

    scanf("%d",&continuar);

    }while (continuar == 1);

    }void consultar()

    { int codic, continuar, achou=0;

    do{ topo();

    printf("\nConsulta cliente pelo codigo\n\n");

    printf("\nCodigo: ");

    scanf("%d",&codic);

    presente = first;

    while(presente != NULL)

    { if (presente->codi == codic)

    { achou = 1;

    printf("\n\nCodigo Nome\n");

    printf("----------------------------------\n");

    printf("%9d %-20s\n",presente->codi, presente->nome);

    printf("-----------------------------------\n");

    break;

    }

    else

    presente = presente->prox;

    }

    if (achou == 0)

    printf("\n\nCliente nao encontrado!!\n");

    printf("\nContinuar consultando (1-sim/2-nao)? ");

    scanf("%d",&continuar);

    }while (continuar == 1);

    }

    void remover()

    { C *noantrem;

    int matr, confrem, continuar, achou;

    do{ achou = 0;

    topo();

    printf("\nRemove cliente \n\n");

    printf("\nCodigo: ");

    scanf("%d",&matr);

    presente = first;

    while(presente != NULL)

    { if (presente->codi == matr)

    { achou = 1;

    printf("\n\nCodigo Nome\n");

    printf("------------------------------------\n");

  • Folha de Resposta Ricael Spirandeli Rocha Estrutura de Dados printf("%9d %-20s\n",presente->codi, presente->nome);

    printf("-------------------------------------\n");

    printf("\n\nDeseja remover o cliente (1-sim, 2-nao)? ");

    scanf("%d",&confrem);

    if (confrem ==1)

    {if (presente == first)

    first = first->prox;

    else

    { noantrem->prox=presente->prox;

    if (presente == fim)

    fim=noantrem;

    }qtd--;

    free(presente);

    printf("\n\nRemovido com sucesso!\n");

    }else

    printf("\n\nRemocao cancelada\n");

    break;

    }else

    { noantrem = presente;

    presente = presente->prox;

    }}

    if (achou == 0)

    printf("\n\nCliente nao encontrado!\n");

    printf("\n\nDeseja remover novamente ? (1-sim, 2-nao)? ");

    scanf("%d",&continuar);

    }while (continuar ==1);

    }void listar ()

    { presente = first;

    topo(); printf("\nLista de Cliente\n\n");

    if (qtd != 0)

    { printf("\n\nCodigo Nome\n");

    printf("-------------------------------\n");

    while( presente != NULL)

    { printf("%9d %-20s\n",presente->codi, presente->nome);

    presente = presente->prox;

    }printf("--------------------------------\n");

    printf("\n\nQuantidade de Clientes = %d\n",qtd);

    }else

    printf("\n\n Nao existe cliente cadastrado");

    printf("\n\n\nTecle enter para voltar \n");

    getche();

    }main(){ qtd = 0;

    do{ topo();

    printf("\n Menu de Opcoes: \n\n");

    printf("\t1- Inserir novo Cliente\n\n");

    printf("\t2- Remover Cliente\n\n");

    printf("\t3- Consultar Cliente\n\n");

    printf("\t4- Lista de Clientes\n\n");

    printf("\t0- Sair do Programa\n\n\n");

    L();printf("Informe a Opcao desejada: ");

  • Folha de Resposta Ricael Spirandeli Rocha Estrutura de Dados scanf("%d",&menu);

    switch(menu)

    { case 1: inserir(); break;

    case 2: remover(); break;

    case 3: consultar(); break;

    case 4: listar(); break;

    case 0: break;

    default : printf("\nOpcao ERRADA! Tecle enter...");

    getche(); break;

    }}while(menu!=0);

    presente = first;

    while (presente != NULL){ first = presente->prox;

    free(presente);presente = first;}

    }

    Obs: pude notar pouqussimas mudanas de uma lista desordenada dinmica para esttica, apenas a biblioteca de vdeo e algumas variveis a mais foram inseridas e menos linhas de comando.