Você está na página 1de 3

tipo

Proprietario = registo
nome : caracter
idade : inteiro
profissao : caracter
fimregisto
tipo
Fracao = registo
proprietario : vetor[1..2] de Proprietario
andar : inteiro
metros : real
garagem : booleano
divida : real
fimregisto
// Adiciona os dados nos vetores
procedimento AdicionaFracao(var fracoes : vetor[] de Fracao, var proprietarios :
vetor[] de Proprietario, tamanho : inteiro)
var
i, j : inteiro
fracao : Fracao
proprietario : Proprietario
inicio
para i de 1 ate tamanho passo 1 faca
para j de 1 ate 2 passo 1 faca
escreva("Nome do proprietario ", j)
leia(fracoes[i].proprietarios[j].nome)
escreva("Idade do proprietario ", j)
leia(fracoes[i].proprietarios[j].idade)
escreva("Profissao do proprietario ", j)
leia(fracoes[i].proprietarios[j].profissao)
fimpara
escreva("Andar da habitao:")
leia(fracoes[i].andar)
escreva("Quantos metros tem a habitao:")
leia(fracoes[i].metros)
escreva("Possui garagem? (0- No 1- Sim):")
leia(fracoes[i].garagem)
escreva("Indique a divida sobre a habitaao:")
leia(fracoes[i].divida)
fimpara
fimprocedimento
// Mostra o nome dos proprietarios que possuem garagem e respetivo andar
procedimento Mostra(var fracoes : vetor[] de Fracao, var proprietarios : vetor[]
de Proprietarios, tamanho : inteiro)
var
i, j : inteiro
inicio
para i de 1 ate tamanho passo 1 faca
se fracoes[i].garagem = verdadeiro entao
para j de 1 ate 2 passo 1 faca
escreval(fracoes[i].proprietarios[j].nome)
fimpara
escreval(fracoes[i].andar)
fimse
fimpara
fimprocedimento
// Atualiza o valor da divida da fracao do predio
procedimento AtualizaDivida(fracoes : vetor[] de Fracao, tamanho : inteiro)
var
andar, i : inteiro
divida : real
inicio
escreva("Indique o andar:")
leia(andar)
escreva("Indique o valor atual da divida:")
leia(divida)
i <- Pesquisa(fracoes, tamanho, andar)
se i = -1 entao
escreva("Andar inexistente")
senao
fracoes[i].divida = divida
fimse
fimprocedimento
// Pesquisa a existncia do andar
funcao Pesquisa(fracoes : vetor[] de Fracao, tamanho : inteiro, andar : inteiro)
: inteiro
var
i : inteiro
inicio
para i de 1 ate tamanho passo 1 faca
se fracoes[i].andar = andar entao
retorne i
fimse
fimpara
retorne -1
fimfuncao
// Ordena os andares por metros ocupados
procedimento Ordena(var fracoes : vetor[] de Fracao, tamanho : inteiro)
var
aux : Fracao
i,j : inteiro
inicio
para i de 1 ate (tamanho - 1) passo 1 faca
para j de (i + 1) ate tamanho passo 1 faca
se fracao[i].metros < fracao[j].metros entao
aux <- fracoes[i]
fracoes[i] <- fracoes[j]
fracoes[j] <- aux
fimse
fimpara
fimpara
fimprocedimento
// Retorna a permilagem do predio
funcao RetornaFracao(fracao : Fracao) : real
var
permilagem : real
inicio
permilagem <- (fracao.metros * 100) / 800
retorne permilagem
fimfuncao
// Retorna a fracao com maior divida
funcao MaiorDivida(fracao : Fracao, tamanho : inteiro) : real
var
maior : Fracao
i : inteiro
inicio
maior <- -1
para i de 1 ate tamanho passo 1 faca
se fracao[i].divida > maior entao
maior <- fracao[i]
fimse
fimpara
retorne maior
fimfuncao

Você também pode gostar