You are on page 1of 9

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 <stdio.h>
#include <conio.h>
#include <stdlib.h>
// 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 <=60;inteiro++)
printf("_");
printf("\n");
}
void topo()
{ system("cls");
printf("Licenciatura
em
Computacao
Lista
Desordenada\n");
L();
}
void inserir ()
{ C *novo_cod;
int inteiro, cod_linha, continuar;
char nome_linha[100];
do{ topo();
printf("\n Inserir novo cliente \n");
printf("\n codigo: ");
scanf("%d",&cod_linha);
printf("\n Nome: ");
fflush(stdin);
gets(nome_linha);
fflush(stdin);
qtd++;
novo_cod = (C *)malloc(sizeof(C));
novo_cod->codi = cod_linha;
for (inteiro=0;inteiro<=99;inteiro++)
novo_cod->nome[inteiro] =nome_linha[inteiro];

Dinamica

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
getche(); break;
}
}while(menu!=0);
presente = first;
while (presente != NULL)
{ first = presente->prox;
free(presente);
presente = first;
}
}

enter...");

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

<stdio.h>
<conio.h>
<string.h>
<stdlib.h>

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 <=60;inteiro++)
printf("_");
printf("\n");
}
void topo()
{ system("cls");
printf("Licenciatura
em
Computacao
Lista
Desordenada\n");
L();
}
void inserir ()
{ C *novo_cod;
int inteiro, cod_linha, continuar;
char nome_linha[100];
do{ topo();
printf("\n Inserir novo cliente \n");
printf("\n codigo: ");
scanf("%d",&cod_linha);
printf("\n Nome: ");
fflush(stdin);
gets(nome_linha);
fflush(stdin);
qtd++;
novo_cod = (C *)malloc(sizeof(C));
novo_cod->codi = cod_linha;
for (inteiro=0;inteiro<=99;inteiro++)
novo_cod->nome[inteiro] =nome_linha[inteiro];

Dinamica

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.

You might also like