Lista9 maicon menezes

551 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
551
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
13
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Lista9 maicon menezes

  1. 1. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes Oliveira Exercícios – Lista 9Algoritmo Declare Bairros(50),Metragens(10) literal Declare Valores(50,10),tb,tm,pB,pM,reaj,min,max numerico sub-rotina LerTabela(CR b(),m() literal;CR v() numerico; totalB,totalM numerico) Declare i,j numerico Escreva ‘Informe as metragens’ Para i de 1 até totalM faça Leia m(i) fim_para Para i de 1 até totalB faça Escreva ‘Informe o bairro’ Leia b(i) Para j de 1 até totalM faça Escreva ‘Informe o valor para a metragem ’, m(j) Leia v(i,j) fim_para fim_para fim_sub-rotina sub-rotina EscreverTabela(b(),m() literal; v(),totalB,totalM numerico) Declare i,j numerico Para i de 1 até totalB faça Escreva ‘Bairro:’, b(i), n Para j de 1 até totalM faça Escreva ‘Valor para a metragem ’, m(j), ‘: ’, v(i,j), n fim_para fim_para fim_sub-rotina sub-rotina AptoCaro(v() mumerico; totalB,totalM numerico; CR posB,posM numerico) Declare i,j numérico posB := 1 posM := 1 Para i de 1 até totalB faca Para j de 1 até totalM faca Se v(i,j)> v(posB,posM) então posB:=i posM:=j fim_se fim_para fim_para fim_sub-rotina função numérico AptoBarato(v(), posB, totalM numerico) Declare i,m numérico m := v(posB,1) Para i de 2 até totalM faça se m > v(posB,i) então m := v(posB,i) fim_se fim_para retorna m fim_função sub-rotina Reajusta(CR v() numérico; totalB,totalM,r,ini,fim numerico) Declare i,j numérico Para i de 1 até totalB faca Para j de 1 até totalM faca se v(i,j)>=ini E v(i,j)<=fim entãoQuarta-feira, 30 de novembro de 2011 Página 1
  2. 2. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes Oliveira v(i,j):=v(i,j)+v(i,j)*r/100 fim_se fim_para fim_para fim_sub-rotina Escreva ‘Informe o total de bairros:’ Repita Leia tb até tb>0 E tb<=50 Escreva ‘Informe o total de metragens:’ Repita Leia tm até tm>0 E tm<=10 LerTabela(Bairros,Metragens,Valores,tb,tm) EscreverTabela(Bairros,Metragens,Valores,tb,tm) AptoCaro(Valores,tb,tm,pB,pM) Escreva ‘Apartamento mais caro: ’ Escreva ‘Valor: ’, Valores(pB,pM) Escreva ‘Bairro: ’, Bairros(pB) Escreva ‘Área: ’, Metragem(pM) Escreva ‘Valor do Apto mais barato no bairro: ’ AptoBarato(Valores,pB,tm) Escreva ‘Informe o percentual de reajuste:’ Leia reaj Escreva ‘Informe a faixa dos valores para reajuste:’ Leia min,max Reajusta(Valores,tb,tm,reaj,min,max) EscreverTabela(Bairros,Metragens,Valores,tb,tm)fim_algoritmoQuarta-feira, 30 de novembro de 2011 Página 2
  3. 3. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes OliveiraAlgoritmo Declare v1(100), v2(100), v3(100), tam, i numérico Sub-rotina lerVetor (v() numérico; t numérico Declare i numerico Para i d 1 até t faça v(i):=0 Enquanto (v(i)<0) OU (v(i)>9) faça Escreva ‘Digite um valor entre 0 e 9 para a posição’,i,’dovetor’ Leia v(i) Fim_enquanto Fim_para Fim_sub-rotina Sub-rotina somaVetor (CR vt1(), vt2(), v3() numérico; t numerico) Para i de 1 ate t faça vt3(i):=vt1(i)+vt2(i) Se (vt3(i)>9) então vt3(i):=0 fim_se fim_para fim_sub-rotina Escreva ‘Digite o tamanho dos vetores: ’ Leia tam lerVetor(v1, tam) lerVetor(v2, tam) somaVetor(v1, v2, v3, tam) Para i de 1 até tam faça Escreva ‘Vetor 1 = ’,v1(i) Escreva ‘Vetor 2 = ’,v2(i) Escreva ‘Vetor 3 = ’,v3(i) Fim_paraFim_algoritmoQuarta-feira, 30 de novembro de 2011 Página 3
  4. 4. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes OliveiraAlgoritmo Função numérico dígitos(num numerico) Se (num<=9) então Retorna num fim_se retorna 1+digitos(num/10) fim_função função numérico inverte(n numerico) Declare l, k, iv numérico l:= Resto(n, 10) k:= (digitos(n)-1) se (n<=9) então retorna n fim_se iv:=(l*(10**k))+inverte(n/10) retorna iv fim_função função numérico verificador(ct numerico) Declare soma, i, dg, b, s numerico dg:=dígitos(ct) n= c+inverte(ct) soma:=0 para i de dg até 1 faça passo -1 b:=(resto(n,10)*i n:=(n-resto(n,10))/10 soma:=soma+b fim_para s = resto((ct+inverte(ct)), 10); se (s=0)então retorna (resto(soma, 10)+1) fim_se retorna resto(soma,10) fim_função tipo cadastro registro N_cheque, CC, DV, valor, agencia, numerico Nome literal fim_registro tipo lista registro total numérico nome literal fim_registro declare cheque(1000) cadastro sub_rotina cadastrar(CR, c() cadastro; t numerico) Declare i numericoQuarta-feira, 30 de novembro de 2011 Página 4
  5. 5. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes Oliveira i:=1 repita Escreva ‘Digite o numero do cheque: ’ Leia c(i).N_cheque Escreva ‘Digite o numero da agência: ’ Leia c(i).agencia Escreva ‘Digite o numero da conta corrente: ’ Leia c(i).CC Repita Escreva ‘Digite o numero do Digito Verificador: ’ Leia c(i).DV Se c(i).DV <> verificador(c(i).cc) então Escreva ‘Digio Verificador inválido. Por favor digitenovamente’ Fim_se Até c(i).DV = verificador(c(i).cc) Escreva ‘Digite o valor do cheque: ’ Leia c(i).valor Escreva ‘Digite o nome do cliente: ’ Leia c(i).nome i:=i+1 Até c(i).N_cheque = -1 fim_sub_rotina sub_rotina Ordena(CR, c() cadastro, t numérico) Declare i, aux_NC, aux_AG, aux_CC, auv_DV, aux_valor numérico Declare aux_N literal Para i de 1 até t-1 faça Para i de 1 até t faça Se c(i).nome<=c(j).nome então aux_N:=c(i).nome c(j).nome:=c(i).nome c(i).nome:=c(j).nome aux_NC:=c(i).N_cheque c(j).N_cheque:=c(i).N_cheque c(i) .N_cheque:=c(j).N_cheque aux_AG:=c(i).agencia c(j).agencia:=c(i).agencia c(i).agencia:=c(j).agencia aux_CC:=c(i).CC c(j).CC:=c(i).CC c(i).CC:=c(j).CC aux_DV:=c(i).DV c(j).DV:=c(i).DV c(i).DV:=c(j).DV aux_V:=c(i).valor c(j).valor:=c(i).valor c(i).valor:=c(j).valor fim_se fim_para fim_para Para i de 1 até t-1 faça Para i de 1 até t faça Se c(i).nome<>c(j).nome entãoQuarta-feira, 30 de novembro de 2011 Página 5
  6. 6. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes Oliveira vt(i).nome:=c(i).nome fim_se fim_para fim_para fim_subrotina sub_rotina total(v() cadastro; vt() lista; t numerico ) Para i de 1 até t-1 faça vt(i).total:=0 Para i de 1 até t faça Enquanto vt(i).nome = v(j).nome faça vt(i).total:=vt(i).total+v(j).valor fim_enquanto fim_para fim_para fim_subrotina cadastrar(cheque, 1000) Ordena(cheque, soma, 1000) Total(cheque, soma, 1000) Para i de 1 até 1000 faça Escreva Cliente: , soma(i).nome Escreva Total: , soma(i).total Fim_parafim_AlgoritmoQuarta-feira, 30 de novembro de 2011 Página 6
  7. 7. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes OliveiraAlgoritmo Tipo AGENDA = registro nome Literal end Literal fone Numerico fim_registro Declare op, fone numerico Declare nome literal Declare A(10) AGENDA sub-rotina Cadastra(CR v() AGENDA;t numérico) Declare i numérico Para i de 1 até t faca Leia v(i).nome Leia v(i).end Leia v(i).fone fim_para fim_sub-rotina sub-rotina PesquisaNome(n literal; v() AGENDA; t numérico) Declare i, achou numérico i:=1 achou := 0 Enquanto i <= t E achou = 0 faca Se v(i).nome = n então Escreva ‘Endereço: ‘, v(i).end Escreva ‘Fone: ‘, v(i).fone achou := 1 fim_se i:=i+1 fim_enquanto Se achou = 0 então Escreva ‘Registro não localizado’ fim_se fim_sub-rotina sub-rotina PesquisaFone(f numérico; v() AGENDA; t numérico) Declare i, achou numérico i:=1 achou := 0 Enquanto i <= t E achou = 0 faca Se v(i).fone = f então Escreve „Nome: ‟, v(i).nome Escreve „Endereço: ‟, v(i).end achou := 1 fim_se i:=i+1 fim_enquanto Se achou = 0 então Escreva „Registro não localizado‟ fim_se fim_sub-rotina sub-rotina Lista(v() AGENDA; t numérico)Quarta-feira, 30 de novembro de 2011 Página 7
  8. 8. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes Oliveira Declare i numérico Para i de 1 até t faça Escreva “Nome”, v(i).nome, n Escreva “Endereço”, v(i).end, n Escreva “Telefone”, v(i).fone, n fim_para fim_sub-rotina sub_rotina Ordena(CR, c() AGENDA, t numérico) Declare i, j, aux_TEL, aux_END numérico Declare aux_N literal Para i de 1 até t-1 faça Para i de 1 até t faça Se c(i).nome<=c(j).nome então aux_N:=c(i).nome c(j).nome:=c(i).nome c(i).nome:=c(j).nome aux_TEL:=c(i).fone c(j).fone:=c(i).fone c(i).fone:=c(j).fone aux_END:=c(i).end c(j).end:=c(i).end c(i).end:=c(j).end fim_se fim_para fim_para fim_sub-rotina Repita Escreva ("Menu de Opções: ") Escreva ("1 – Cadastrar contato") Escreva ("2 – Pesquisar contato pelo nome") Escreva ("3 - Pesquisar contato pelo telefone ") Escreva ("4 – Mostrar os contatos cadastrados") Escreva ("5 - Sair") Escreva ("Opção: ") Leia op Se op = 1 então Cadastra(A,10) fim_se Se op = 2 então Escreva “Digite o nome que deseja pesquisar”, n Leia nome PesquisaNome(nome,A,10) fim_se Se op = 3 então Escreva “Digite o telefone que deseja pesquisar”, n Leia fone PesquisaFone(fone,A,10) Se op = 4 então Lista(A,10) fim_se até opção = 5fim_algoritmoQuarta-feira, 30 de novembro de 2011 Página 8
  9. 9. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes OliveiraAlgoritmo Tipo CADASTRO = Registro Nome Literal Situação Literal Nota(4) Numérico Média Numérico fim_registro Declare Aluno(20) CADASTRO Declare i,j,soma Numerico sub-rotina cadastrar(CR v(), t) Para i de 1 até t faça Escreva ‘Digite o nome do aluno:’,n Leia Aluno(i).Nome Escreva ‘Digite as notas do aluno:’,n Para j de 1 até 4 faça Leia Aluno(i).Nota(j) fim_para fim_para Para i de 1 até t faça soma := 0 Para j de 1 até 4 faça soma := soma + Aluno(i).Nota(j) fim_para Aluno(i).Média:= (soma/4) se Aluno(i).Média >= 6 então Aluno(i).situação:= ‘Aprovado’ senão Aluno(i).situação:= ‘Reprovado’ fim_para sub-rotina PesquisaNome(n literal; v() AGENDA; t numérico) Declare i, achou numérico i:=1 achou := 0 Enquanto i <= t E achou = 0 faca Se aluno(i).nome = n então para j de 1 até 4 faça Escreva ‘Nota’,j,’: ‘, aluno(i).Nota(j) fim_para aluno(i).Média aluno(i).Situação achou := 1 fim_se i:=i+1 fim_enquanto Se achou = 0 então Escreva ‘Registro não localizado’ fim_se fim_sub-rotinaQuarta-feira, 30 de novembro de 2011 Página 9
  10. 10. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes Oliveira sub-rotina Lista(v() cadastro; t numérico; op literal) Declare i numérico se op = ‘T’ então Para i de 1 até t faça Escreva “Nome:”, aluno(i).nome, n para j de 1 até 4 faça Escreva ‘Nota’,j,’: ‘, aluno(i).Nota(j) fim_para aluno(i).Média aluno(i).Situação fim_para fim_se se op = ‘A’ então Para i de 1 até t faça se Aluno(i).Situação = ‘Aprovado’ então Escreva “Nome:”, aluno(i).nome, n para j de 1 até 4 faça Escreva ‘Nota’,j,’: ‘, aluno(i).Nota(j) fim_para aluno(i).Média fim_se fim_para fim_se se op = ‘R’ então Para i de 1 até t faça se Aluno(i).Situação = ‘Reprovado’ então Escreva “Nome:”, aluno(i).nome, n para j de 1 até 4 faça Escreva ‘Nota’,j,’: ‘, aluno(i).Nota(j) fim_para aluno(i).Média fim_se fim_para fim_se fim_sub-rotina Repita Escreva ("Menu de Opções: ") Escreva ("1 – Cadastrar Notas") Escreva ("2 – Pesquisar Aluno pelo nome") Escreva ("3 - Listar Todos Alunos ") Escreva ("4 – Listar Aprovados") Escreva ("5 - Listar Reprovados") Escreva ("6 - Sair”) Escreva ("Opção: ") Leia op Se op = 1 então cadastrar(Aluno, 20) fim_se Se op = 2 então Escreva “Digite o nome do aluno: ” Leia nomeQuarta-feira, 30 de novembro de 2011 Página 10
  11. 11. Universidade Federal de Pelotas Departamento de ComputaçãoDisciplina: Algoritmos e Programação (Teórica)Profª: Fernanda JeannesAluno: Maicon de Menezes Oliveira PesquisaNome(nome, Aluno, 20) fim_se Se op = 3 então listar(Aluno, 20, ‘T’) fim_se Se op = 4 então listar(Aluno, 20, ‘A’) fim_se Se op = 5 então listar(Aluno, 20, ‘R’) fim_se até op = 6fim_algoritmoQuarta-feira, 30 de novembro de 2011 Página 11

×