Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Atividade Pratica Estrutura de Dados, Provas de Estruturas de Dados e Algoritmos

Atividade Pratica Estrutura de Dados

Tipologia: Provas

2024

Compartilhado em 19/09/2024

marcos-herbert-zacharias
marcos-herbert-zacharias 🇧🇷

3 documentos

1 / 23

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
ANO
2024
ATIVIDADE PRÁTICA
ESTRUTURA DE DADOS /
PROGRAMAÇÃO III
Marcos Herbert Zacharias RU: 4061168
Prof. Vinicius Borin, Me.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Pré-visualização parcial do texto

Baixe Atividade Pratica Estrutura de Dados e outras Provas em PDF para Estruturas de Dados e Algoritmos, somente na Docsity!

ANO

ATIVIDADE PRÁTICA

ESTRUTURA DE DADOS /

PROGRAMAÇÃO III

Marcos Herbert Zacharias RU: 4061168

Prof. Vinicius Borin, Me.

INSTRUÇÕES

QUESTÃO 1 de 2 – Lista Encadeada

Enunciado: Com a finalidade de melhorar o atendimento e priorizar os casos mais urgentes, a direção de um hospital criou um sistema de triagem em que um profissional da saúde classifica a ordem de atendimento com base numa avaliação prévia do paciente, entregando-lhe um cartão numerado verde (V) ou amarelo (A), que define o menor ou maior grau de urgência da ocorrência, respectivamente. Para informatizar esse processo, a direção do hospital contratou você para desenvolver uma fila de chamada seguindo as seguintes regras:  Pacientes com cartão numerado amarelo (A) são chamados antes dos pacientes com cartão numerado verde (V)  Entre os pacientes com cartão numerado amarelo (A), os que tem numeração menor são atendidos antes.  Entre os pacientes com cartão numerado verde (V), os que tem numeração menor são atendidos antes.  As numerações dos cartões amarelos (A) iniciam em 1 e vão até 200.  As numerações dos cartões verdes (V) iniciam em 201. Elabore um programa em Python que: A. Deve-se implementar uma Lista Encadeada Simples em que : [EXIGÊNCIA DE CÓDIGO 1 de 7]; a. O Nodo representa um cartão numerado contendo: número , cor e um ponteiro para o próximo ; b. A lista é não circular, ou seja, seu último elemento aponta para nulo; B. Deve-se implementar a função inserirSemPrioridade(nodo) em que : [EXIGÊNCIA DE CÓDIGO 2 de 7]; a. Deve-se andar pela lista a partir da cabeça ( head ) e inserir o nodo no final da lista. C. Deve-se implementar a função inserirComPrioridade(nodo) em que : [EXIGÊNCIA DE CÓDIGO 3 de 7]; a. Deve-se andar pela lista a partir da cabeça ( head ) e inserir o nodo após todos os nodos com cor “A” que estão na lista. b. O nodo inserido deve sempre estar antes de todos os nodos com cor “V”. D. Deve-se implementar a função inserir() em que : [EXIGÊNCIA DE CÓDIGO 4 de 7]; a. Deve-se solicitar ao usuário a cor (“A” ou “V”). b. A partir da cor, o número (inteiro) do paciente deve ser atribuído automaticamente seguindo a ordem numérica. Por exemplo: o primeiro paciente “V” será o 201, o segundo 202, e assim por diante.

EXEMPLO DE SAÍDA DE CONSOLE:
SOMENTE INFORMATIVO. PODE APAGAR AO ENTREGAR O TRABALHO.

Figura 1: Exemplo de saída de console que o aluno deve fazer. Em que se insere 10 pacientes (5 com cartão verde e 5 com cartão amarelo) conforme [EXIGÊNCIA DE SAÍDA DE CONSOLE 1 de 3]; Figura 2: Exemplo de saída de console que o aluno deve fazer. Em que mostra a lista de pacientes, conforme [EXIGÊNCIA DE SAÍDA DE CONSOLE 2 de 3];

Figura 3: Exemplo de saída de console que o aluno deve fazer. Em que ele chama dois pacientes para atendimento e em seguida mostra a lista de pacientes, conforme [EXIGÊNCIA DE SAÍDA DE CONSOLE 3 de 3];

Apresentação de Código da Questão 1 :

import sys a = 1 v = 201 class Node: def init(self, numero, cor): self.numero = numero self.cor = cor self.proximo = None class LinkedList: def init(self): self.head = None self.inicio = None self.tamanho = 0 def inserirSemPrioridade(self,numero,cor): print ("Inserir paciente") novo_no = Node(numero,cor) if self.head is None: self.head= novo_no atual = self.head else: atual = self.head while atual.proximo: atual = atual.proximo atual.proximo = novo_no def imprimirListaEspera(self): atual = self.head lista = "Lista -> " while atual: cor_upper = atual.cor cor_upper = cor_upper.upper() lista = lista + "[" + cor_upper +","+ str(atual.numero)+"]" atual = atual.proximo print(lista) def inserirComPrioridade(self,numero,cor,posicao): position = posicao - 1 new_node = Node(numero=a,cor="A")

globals()["v"] += 1 def atenderPaciente(): atual =lista_pacientes.head if (atual != None ): cor_upper = atual.cor print("Proximo Paciente: " +"[" + cor_upper +","+ str(atual.numero)+"]") lista_pacientes.Remover(index= 0 ) def menu(): print ("-"* 8 +" Menu de Opçoes " +"-"* 9 ) print("| |") print("| 1 -> Adicionar Paciente a fila |") print("| 2 -> Mostrar Pacientes na fila |") print("| 3 -> Chamar Paciente |") print("| 4 -> Sair |") print("| |") print("-" * 35 ) opcao = input("Digite sua opção: ") opcao_int = 0 try: opcao_int = int(opcao) except(Exception): print("As opções validas são de 1 a 4") if(opcao_int < 1 or opcao_int> 4 ): print("Opção Invalida") menu() if (opcao_int == 1 ): inserir() elif (opcao_int == 2 ): lista_pacientes.imprimirListaEspera() elif (opcao_int == 3 ): atenderPaciente() elif (opcao_int == 4 ): print("Tchau!!")

sys.exit() else: menu() while opcao_int != 4 : menu() lista_pacientes = LinkedList() menu()

QUESTÃO 2 de 2 – Tabela Hash Enunciado: Com o objetivo de criar um sistema novo de emplacamento de veículos, deputados em do Distrito Federal – DF, decidiram que o último número da placa dos veículos, irá representar o estado de registro dele. Para isso, sua equipe de desenvolvedores foi encarregada de desenvolver uma Tabela Hash com endereçamento em cadeia de 10 posições (cada posição do vetor deve ser uma lista encadeada), representando os números de 0 a 9 que irão representar os 26 estados e o Distrito Federal (total 27). A função hash deve seguir as seguintes regras:  A entrada da função hash deve ser uma string com 2 letras, representando a sigla do estado e/ou distrito federal.  Caso a sigla seja DF (Distrito Federal), por questões de superstição, os deputados solicitaram que o retorno da função seja 7 sempre.  Caso contrário, a função deve retornar a posição com base no valor ASCII das duas letras e seguindo a seguinte regra:

posição =( CHAR 1 ASCII + CHAR 2 ASCII ) MOD 10

Onde CHAR (^1) ASCII e CHAR (^2) ASCII são os valores ASCII da primeira e segunda letra, respectivamente (Tabela ASCII no final do documento). Elabore um programa em Python que: A. Deve-se implementar a tabela Hash com 10 posições, onde inicialmente todas as posições possuem valor None [EXIGÊNCIA DE CÓDIGO 1 de 7]; B. Deve-se implementar as Listas Encadeadas Simples em que : [EXIGÊNCIA DE CÓDIGO 2 de 7]; a. O Nodo representa um Estado contendo: sigla , nomeEstado e um ponteiro para o próximo ; b. As 10 posições da tabela hash, representam a cabeça de cada lista ( head ). C. Deve-se implementar a inserção no início da lista encadeada (cada elemento novo deve ser sempre inserido no início da lista ) [EXIGÊNCIA DE CÓDIGO 3 de 7]; D. Deve-se implementar a impressão da tabela hash, onde devem ser impressas as siglas de todos os nodos que estão na tabela hash separados por posição [EXIGÊNCIA DE CÓDIGO 4 de 7]; E. Deve-se implementar a função hash, conforme enunciado. [EXIGÊNCIA DE CÓDIGO 5 de 7]; F. Deve-se implementar a inserção dos estados e distrito federal ( todos os 27 com nome e sigla ) na tabela hash utilizando a função hash (não precisa solicitar ao usuário a digitação via teclado, pode inserir no código mesmo de modo hard code ) [EXIGÊNCIA DE CÓDIGO 6 de 7];

G. Deve-se inserir na Tabela, além dos estados e distrito federal, um estado fictício, sendo que esse estado tenha seu nome completo e como siglas, a primeira letra do seu nome e a primeira letra do seu último sobrenome. Exemplo: Bruno Kostiuk – BK. EXIGÊNCIA DE CÓDIGO 7 de 7]; Para testar o software, execute os seguintes passos e apresente a saída do console conforme exemplo de saída de console (próxima página): H. Deve-se apresentar na saída de console, a impressão da tabela hash antes de inserir qualquer informação [EXIGÊNCIA DE SAÍDA DE CONSOLE 1 de 3]; I. Deve-se apresentar na saída de console, a impressão da tabela hash após inserir os 26 estados e o Distrito Federal - DF [EXIGÊNCIA DE SAÍDA DE CONSOLE 2 de 3]; J. Deve-se apresentar na saída de console, a impressão da tabela hash após inserir os 26 estados, Distrito Federal – DF e o estado fictício com seu nome completo. [EXIGÊNCIA DE SAÍDA DE CONSOLE 3 de 3];

Figura 3: Exemplo de saída de console que o aluno deve fazer. Impressão da tabela hash após inserir os 26 estados, Distrito Federal – DF e o estado fictício com seu nome completo (No caso foi inserido BK na posição 1), conforme [EXIGÊNCIA DE SAÍDA DE CONSOLE 3 de 3];

Apresentação de Código da Questão 2 :

import sys print("Projeto Estados") n = 10 key = 1 contador = 0 Table_Hash = [None] * n print(" 0: ",Table_Hash[ 0 ]) print(" 1: ",Table_Hash[ 1 ]) print(" 2: ",Table_Hash[ 2 ]) print(" 3: ",Table_Hash[ 3 ]) print(" 4: ",Table_Hash[ 4 ]) print(" 5: ",Table_Hash[ 5 ]) print(" 6: ",Table_Hash[ 6 ]) print(" 7: ",Table_Hash[ 7 ]) print(" 8: ",Table_Hash[ 8 ]) print(" 9: ",Table_Hash[ 9 ]) print("") class SinglyLinkedList: def init(self): self.tail = None self.head = None self.proximo = None def inserir(self,Key,Sigla,nomeEstado): novo_no = Node(key,Sigla,nomeEstado) if self.head is None:

self.head= novo_no atual = self.head else: atual = self.head while atual.proximo: atual = atual.proximo atual.proximo = novo_no globals()["key"] += 1 def imprimir(self): atual = self.head lista = contador while atual: sigla = atual.sigla lista = str(lista)+" : " + sigla + "," atual = atual.proximo print(lista) globals()["contador"] += 1 class Node: def init(self,key=None,sigla=None,nomeEstado=None): self.key = key self.sigla = sigla self.nomeEstado = nomeEstado self.proximo = None def myhash(Node): hashKey = new_node.sigla if hashKey !="DF": hashKey =sum(list(map(ord,[hashKey[ 0 ],hashKey[ 1 ]])))% 10 else: hashKey = 7 if hashKey == 0 : list_for_hash_0.inserir(new_node.key,new_node.sigla,new_node.nomeEstado) Table_Hash[ 0 ]=list_for_hash_0.head if hashKey == 1 : list_for_hash_1.inserir(new_node.key,new_node.sigla,new_node.nomeEstado) Table_Hash[ 1 ]=list_for_hash_1.head if hashKey == 2 : list_for_hash_2.inserir(new_node.key,new_node.sigla,new_node.nomeEstado) Table_Hash[ 2 ]=list_for_hash_2.head if hashKey == 3 : list_for_hash_3.inserir(new_node.key,new_node.sigla,new_node.nomeEstado) Table_Hash[ 3 ]=list_for_hash_3.head, if hashKey == 4 :

new_node.sigla = "AL" new_node.nomeEstado = "Alagoas" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "AP" new_node.nomeEstado = "Amapá" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "AM" new_node.nomeEstado = "Amazonas" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "BA" new_node.nomeEstado = "Bahia" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "CE" new_node.nomeEstado = "Ceará" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "ES" new_node.nomeEstado = "Espirito Santo" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "GO" new_node.nomeEstado = "Goias" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "MA" new_node.nomeEstado = "Maranhão" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "MT" new_node.nomeEstado = "Mato Grosso" myhash(new_node) new_node = Node()

new_node.key = key new_node.sigla = "MG" new_node.nomeEstado = "Minas Gerais" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "PA" new_node.nomeEstado = "Pará" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "PB" new_node.nomeEstado = "Paraíba" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "PR" new_node.nomeEstado = "Paraná" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "PE" new_node.nomeEstado = "Pernanbuco" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "PI" new_node.nomeEstado = "Piauí" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "RJ" new_node.nomeEstado = "Rio de Janeiro" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "RN" new_node.nomeEstado = "Rio Grande do Norte" myhash(new_node) new_node = Node() new_node.key = key new_node.sigla = "RS" new_node.nomeEstado = "Rio Grande do do sul" myhash(new_node)