SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
Universidade Federal do Piauí – UFPI 
Campus Senador Helvídio Nunes de Barros – CSHNB 
Curso de Sistemas de Informação Bloco: III 
Disciplina: Estruturas de Dados 
Professora: Juliana Oliveira de Carvalho 
Acadêmico:..................................................................................................Matrícula:............................ 
SEGUNDA LISTA DE EXERCÍCIOS DE ESTRUTURAS DE DADOS 
1. Faça um programa em C que use pilha dinâmica para converter e calcular o valor de uma expressão 
matemática do modo pós-fixa para infixa. E depois mostre na tela o resultado da expressão e como a 
expressão fica no modo pós-fixa. 
2. Escalonador é uma parte do Sistema Operacional que escolhe de uma fila de prontos o próximo processo a 
ocupar o processador. Suponha que nosso escalonador mantenha 3 filas dinâmicas, de acordo com a 
prioridade do processo. 
Cada processo possui as seguintes informações: o seu número, o tempo de processamento que o mesmo 
necessita em segundos e a prioridade do mesmo para que ele possa ser inserido na fila de acordo com a sua 
prioridade. 
O processador deve sempre executar primeiro os processos da fila de maior prioridade e somente passar 
para outra fila quando todos os processos da fila atual tiver sido executado pelo menos 2 vezes, ou ficar 
vazia. 
Quando o processador retira o primeiro processo da fila para usar o processador, o mesmo só pode ficar 1s 
utilizando o processador, terminado este tempo o escalonador diminui de 1 o tempo de processamento 
deste processo e verifica seu valor. Se o valor do tempo de processamento atual for 0, o processo é 
finalizado, ou seja, retirado da fila, caso contrário, será verificado quantas vezes o processo passou nesta 
fila para decidir em qual fila o mesmo será inserido. Se o processo passou somente 1 vez será colocado ao 
final da mesma fila, se passou 2 vezes será colocado ao final da próxima fila de prioridade abaixo da atual. 
Caso ele já esteja na última fila, ou seja, na fila de menor prioridade, o processo será inserido ao final desta 
fila até que o mesmo termine independente do número de vezes que já passou por ela. 
Faça um programa em C que tenha um menu de opções para inserir processos em uma fila do escalonador, 
para o escalonador escolher o processo(caso não existia nenhum processo na fila emitir uma mensagem), 
para mostrar os processos das filas, para mostrar o próximo processo que irá utilizar o processador, mostrar 
quantos processos tem em cada fila, para mostrar quanto tempo falta para executar os processos de uma 
determinada fila e para mostrar quanto tempo de processamento ainda falta para chegar em um 
determinado processo e mostrar quanto tempo de processamento ainda restam para terminar cada fila e 
todas as filas. 
3. Faça um programa em C que simule processos na memória do computador para isso, com as seguintes 
opções de menu: 
1. Cadastrar dados da memória e da página: definir o tamanho da memória em bytes; o tamanho 
de cada página da memória, também em bytes. 
2. Inserção na Lista de Processos: inserir os dados do processo em uma lista ordenada e duplamente 
encadeada, contendo as seguintes informações: número do processo, o tamanho em páginas do 
processo, último acesso ao processador em unidades de tempo (0 caso ainda não tenha acessado, 
ou seja, no ato da inserção, e valores inteiros para os próximos acesso pode manter um contador 
para todas vezes que executar um processo aumentar em 1 a unidade de tempo de último acesso), e 
por fim se o mesmo foi ou não modificado. 
3. Executar um processo: verificar se o mesmo já está na memória, através da lista de processos. Se 
estiver na memória executar processo significará atualizar dados. Atualizar dados significa mudar 
último acesso e informar se se o processo sofreu ou não modificado/atualização. Se o processo não 
estiver na memória, ou seja na lista de processos, verificar se o mesmo cabe na memória, somando
os tamanhos de cada processo da lista, caso caiba pedir para o usuário inseri-lo na memória, caso 
contrário, pedir ao usuário para remover um processo e depois inseri-lo na memória. 
4. Mostrar todos os processos na Lista de Processos: mostre todos os processos com suas 
respectivas informações. 
5. Remoção da Lista de Processos: ordem de prioridade para remoção: 
• primeiro: remova o primeiro processo que couber o processo que se deseja inserir, que não 
tenha sido acessado no último instante de tempo e não tenha sido modificado. 
• Segundo: remova o primeiro processo que couber o processo que se deseja inserir, que tenha 
sido acessado no último instante de tempo e não tenha sido modificado. 
• Terceiro: remova o primeiro processo que couber o processo que se deseja inserir, que tenha 
sido acessado no último instante de tempo e tenha sido modificado. Neste caso enviar uma 
mensagem dizendo que o processo que está sendo retirado deve ser gravado no disco. 
• Quarto: remova quantos processos forem necessários para inserir o novo processo. Lembre-se 
que se o processo que está sendo removido foi modificado, deve ser emitida uma mensagem 
informando que o mesmo deve ser gravado em disco. 
4. Um polinômio em três variáveis (x, y, z) pode ser representado por uma lista circular, onde cada nó deve 
representar um termo e deve conter: a potência do termo, o coeficiente desse termo. Faça um programa em 
C que possua as seguintes opções: 
a) Cadastrar polinômios: para cada polinômio cadastrado tenha uma lista circular, manter um vetor 
contendo os ponteiros inicias de cada polinômio, além de um código para identificar o polinômio 
desejado. 
b) Somar dois polinômios cadastrados, permita ao usuário escolher os polinômios. 
c) Multiplicar dois polinômios cadastrados, permita ao usuário escolher os polinômios. 
d) Avaliar um dos polinômios cadastrados em função de valores dados para x, y e z, permita ao usuário 
escolher o polinômio. 
e) Imprimir a representação de um dos polinômios cadastrados, permita ao usuário escolher o polinômio. 
f) Imprimir a representação de todos os polinômios cadastrados. 
g) Calcular a derivada parcial de um dos polinômios cadastrados em relação a qualquer uma das 
variáveis, permita ao usuário escolher o polinômio e a variável. 
Equipe: os programas podem ser feitos em dupla, mas os relatórios são individuais. Se os 
programas forem feitos em dupla, a dupla deve ser identificada no envio do código. 
Data de Entrega: data primeira prova escrita 
Entregar: Código Fonte, Relatório(Conforme Modelo em PDF) 
Forma de Entrega: pelo SIGAA, caso tenha algum problema enviar por e-mail 
(julianaoc@gmail.com). 
Entrevista Individual: agendar horário com a Professora. 
Processo da Entrevista: para cada aluno será sorteado 2 programas, dentre os entregues pelo aluno, 
para que o mesmo explique os 2 programas.

Mais conteúdo relacionado

Semelhante a lista de Estrutura de Dados II

Semelhante a lista de Estrutura de Dados II (20)

Relatorio de Estrutura de Dados
Relatorio de Estrutura de DadosRelatorio de Estrutura de Dados
Relatorio de Estrutura de Dados
 
Gc solution
Gc solutionGc solution
Gc solution
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
Estrutura de Programas
Estrutura de ProgramasEstrutura de Programas
Estrutura de Programas
 
Apostila de Algoritmos
Apostila de AlgoritmosApostila de Algoritmos
Apostila de Algoritmos
 
Apostila algoritmos
Apostila algoritmosApostila algoritmos
Apostila algoritmos
 
Lamport
LamportLamport
Lamport
 
Exercicios 01 tms i
Exercicios 01 tms iExercicios 01 tms i
Exercicios 01 tms i
 
gabarito.pdf
gabarito.pdfgabarito.pdf
gabarito.pdf
 
Algoritmo lamport
Algoritmo lamportAlgoritmo lamport
Algoritmo lamport
 
Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial
Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e SequencialProcessamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial
Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial
 
Aula6 Cont
Aula6 ContAula6 Cont
Aula6 Cont
 
Exercicios c
Exercicios cExercicios c
Exercicios c
 
Atividade de 1 a 6 da atps
Atividade  de 1 a 6 da atpsAtividade  de 1 a 6 da atps
Atividade de 1 a 6 da atps
 
Produtor Consumidor com Semaforo
Produtor Consumidor com SemaforoProdutor Consumidor com Semaforo
Produtor Consumidor com Semaforo
 
ava facul uva unijorge (81).pdf
ava facul uva unijorge (81).pdfava facul uva unijorge (81).pdf
ava facul uva unijorge (81).pdf
 
Aula Simulação por Eventos Discretos
Aula Simulação por Eventos DiscretosAula Simulação por Eventos Discretos
Aula Simulação por Eventos Discretos
 
Análise de Disco, I/O e Processamento
Análise de Disco, I/O e ProcessamentoAnálise de Disco, I/O e Processamento
Análise de Disco, I/O e Processamento
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)
 

lista de Estrutura de Dados II

  • 1. Universidade Federal do Piauí – UFPI Campus Senador Helvídio Nunes de Barros – CSHNB Curso de Sistemas de Informação Bloco: III Disciplina: Estruturas de Dados Professora: Juliana Oliveira de Carvalho Acadêmico:..................................................................................................Matrícula:............................ SEGUNDA LISTA DE EXERCÍCIOS DE ESTRUTURAS DE DADOS 1. Faça um programa em C que use pilha dinâmica para converter e calcular o valor de uma expressão matemática do modo pós-fixa para infixa. E depois mostre na tela o resultado da expressão e como a expressão fica no modo pós-fixa. 2. Escalonador é uma parte do Sistema Operacional que escolhe de uma fila de prontos o próximo processo a ocupar o processador. Suponha que nosso escalonador mantenha 3 filas dinâmicas, de acordo com a prioridade do processo. Cada processo possui as seguintes informações: o seu número, o tempo de processamento que o mesmo necessita em segundos e a prioridade do mesmo para que ele possa ser inserido na fila de acordo com a sua prioridade. O processador deve sempre executar primeiro os processos da fila de maior prioridade e somente passar para outra fila quando todos os processos da fila atual tiver sido executado pelo menos 2 vezes, ou ficar vazia. Quando o processador retira o primeiro processo da fila para usar o processador, o mesmo só pode ficar 1s utilizando o processador, terminado este tempo o escalonador diminui de 1 o tempo de processamento deste processo e verifica seu valor. Se o valor do tempo de processamento atual for 0, o processo é finalizado, ou seja, retirado da fila, caso contrário, será verificado quantas vezes o processo passou nesta fila para decidir em qual fila o mesmo será inserido. Se o processo passou somente 1 vez será colocado ao final da mesma fila, se passou 2 vezes será colocado ao final da próxima fila de prioridade abaixo da atual. Caso ele já esteja na última fila, ou seja, na fila de menor prioridade, o processo será inserido ao final desta fila até que o mesmo termine independente do número de vezes que já passou por ela. Faça um programa em C que tenha um menu de opções para inserir processos em uma fila do escalonador, para o escalonador escolher o processo(caso não existia nenhum processo na fila emitir uma mensagem), para mostrar os processos das filas, para mostrar o próximo processo que irá utilizar o processador, mostrar quantos processos tem em cada fila, para mostrar quanto tempo falta para executar os processos de uma determinada fila e para mostrar quanto tempo de processamento ainda falta para chegar em um determinado processo e mostrar quanto tempo de processamento ainda restam para terminar cada fila e todas as filas. 3. Faça um programa em C que simule processos na memória do computador para isso, com as seguintes opções de menu: 1. Cadastrar dados da memória e da página: definir o tamanho da memória em bytes; o tamanho de cada página da memória, também em bytes. 2. Inserção na Lista de Processos: inserir os dados do processo em uma lista ordenada e duplamente encadeada, contendo as seguintes informações: número do processo, o tamanho em páginas do processo, último acesso ao processador em unidades de tempo (0 caso ainda não tenha acessado, ou seja, no ato da inserção, e valores inteiros para os próximos acesso pode manter um contador para todas vezes que executar um processo aumentar em 1 a unidade de tempo de último acesso), e por fim se o mesmo foi ou não modificado. 3. Executar um processo: verificar se o mesmo já está na memória, através da lista de processos. Se estiver na memória executar processo significará atualizar dados. Atualizar dados significa mudar último acesso e informar se se o processo sofreu ou não modificado/atualização. Se o processo não estiver na memória, ou seja na lista de processos, verificar se o mesmo cabe na memória, somando
  • 2. os tamanhos de cada processo da lista, caso caiba pedir para o usuário inseri-lo na memória, caso contrário, pedir ao usuário para remover um processo e depois inseri-lo na memória. 4. Mostrar todos os processos na Lista de Processos: mostre todos os processos com suas respectivas informações. 5. Remoção da Lista de Processos: ordem de prioridade para remoção: • primeiro: remova o primeiro processo que couber o processo que se deseja inserir, que não tenha sido acessado no último instante de tempo e não tenha sido modificado. • Segundo: remova o primeiro processo que couber o processo que se deseja inserir, que tenha sido acessado no último instante de tempo e não tenha sido modificado. • Terceiro: remova o primeiro processo que couber o processo que se deseja inserir, que tenha sido acessado no último instante de tempo e tenha sido modificado. Neste caso enviar uma mensagem dizendo que o processo que está sendo retirado deve ser gravado no disco. • Quarto: remova quantos processos forem necessários para inserir o novo processo. Lembre-se que se o processo que está sendo removido foi modificado, deve ser emitida uma mensagem informando que o mesmo deve ser gravado em disco. 4. Um polinômio em três variáveis (x, y, z) pode ser representado por uma lista circular, onde cada nó deve representar um termo e deve conter: a potência do termo, o coeficiente desse termo. Faça um programa em C que possua as seguintes opções: a) Cadastrar polinômios: para cada polinômio cadastrado tenha uma lista circular, manter um vetor contendo os ponteiros inicias de cada polinômio, além de um código para identificar o polinômio desejado. b) Somar dois polinômios cadastrados, permita ao usuário escolher os polinômios. c) Multiplicar dois polinômios cadastrados, permita ao usuário escolher os polinômios. d) Avaliar um dos polinômios cadastrados em função de valores dados para x, y e z, permita ao usuário escolher o polinômio. e) Imprimir a representação de um dos polinômios cadastrados, permita ao usuário escolher o polinômio. f) Imprimir a representação de todos os polinômios cadastrados. g) Calcular a derivada parcial de um dos polinômios cadastrados em relação a qualquer uma das variáveis, permita ao usuário escolher o polinômio e a variável. Equipe: os programas podem ser feitos em dupla, mas os relatórios são individuais. Se os programas forem feitos em dupla, a dupla deve ser identificada no envio do código. Data de Entrega: data primeira prova escrita Entregar: Código Fonte, Relatório(Conforme Modelo em PDF) Forma de Entrega: pelo SIGAA, caso tenha algum problema enviar por e-mail (julianaoc@gmail.com). Entrevista Individual: agendar horário com a Professora. Processo da Entrevista: para cada aluno será sorteado 2 programas, dentre os entregues pelo aluno, para que o mesmo explique os 2 programas.