Vous êtes sur la page 1sur 11

ANHANGUERA EDUCACIONAL

FACNET
CURSO DE SISTEMA DE INFORMAES

ATPS Etapa 3 e 4
Construo de Algoritmos

Alunos (as):

RA:

Johne Pereira Nascimento

8204942847

Magno Barros Alves

8074852512

Roberto Lima Alves de Oliveira

8070836347

Wagner Campelo da Cruz

8491211720

Anhanguera Educacional
2014

Introduo
Algoritmos um conjunto finito de regras, bem definidas, para soluo de um
problema em um tempo finito e com um nmero finito de passos.
Esta forma de representao de algoritmos, tambm conhecida como portugus
estruturado ou portugol, bastante rica em detalhes e, por assemelhar-se bastante
forma em que os programas so escritos, encontra muita aceitao, sendo, portanto a
forma de representao de algoritmos que ser adotada nesta disciplina.
Na verdade, esta representao suficientemente geral para permitir que a traduo de
um algoritmo nela representado para uma linguagem de programao especfica seja
praticamente direta.

Problema 3
Joo quer montar um painel contendo diferentes nmeros de LEDs. Como no tm
muitos, no tem certeza se vai ser capaz de montar o nmero desejado. Considerando-se a
configurao dos LEDs conforme consta o exemplo na Figura 1, fazer um algoritmo que ajude
Joo descobrir quantos LEDs so necessrios para montar o nmero.

Vamos comear a soluo do problema


Entrada
A entrada contm um nmero inteiro N, (1 N 2000) correspondente ao nmero de
casos de este, seguido por N linhas, cada linha contendo um nmero (1 V 10100) que
correspondem ao valor que Joo quer representar com LEDs..

algoritmo "Problema 3"


// Funo :
// Autor : Johne, Magno, Roberto, Wagner
// Data : 20/11/2014
// Seo de Declaraes
var
c: caractere
i, x, tam, num, qtd, leds: inteiro
inicio
escreva("Informe quantos casos teste sera realizado: ")
leia(qtd)
enquanto ((qtd < 1) ou (qtd > 10100)) faca
escreva("Valor invalido. Informe um valor de 1 a 10100: ")
leia(qtd)
fimenquanto
para i de 1 ate qtd faca

leds <- 0
escreva("Qual numero deve apresentar no display? ")
leia(c)
enquanto ((caracpnum(c) < 1) ou (caracpnum(c) > 2000)) faca
escreva("Valor invalido. Informe um valor de 1 a 2000: ")
leia(c)
fimenquanto
tam <- compr(c)
para x de 1 ate tam faca
num <- caracpnum(copia(c,x,1))
escolha (num)
caso 0
leds <- leds+6
caso 1
leds <- leds+2
caso 2
leds <- leds+5
caso 3
leds <- leds+5
caso 4
leds <- leds+4
caso 5
leds <- leds+5
caso 6
leds <- leds+6
caso 7
leds <- leds+3
caso 8
leds <- leds+7
caso 9
leds <- leds+6
outrocaso

fimescolha
fimpara
escreval("O total necessrios de",leds," leds.")
fimpara
fimalgoritmo

Fluxograma

Sada
Para cada caso de teste, imprimir uma linha contendo o nmero de LEDs que Joo
precisa para representar o valor desejado, seguido da palavra "leds".
Incio da execuo
Informe quantos casos teste sera realizado: 4
Qual numero deve apresentar no display? 6
O total necessrios de 6 leds.
Qual numero deve apresentar no display? 8
O total necessrios de 7 leds.
Qual numero deve apresentar no display? 9
O total necessrios de 6 leds.
Qual numero deve apresentar no display? 4
O total necessrios de 4 leds.
Fim da execuo.

Problema 4

O Problema de Josephus definido como mostrado a seguir. N pessoas esto


organizadas em um crculo e que temos um inteiro positivo M N. Comeando com uma
primeira pessoa designada, prosseguimos em torno do crculo, removendo cada M-sima
pessoa. Depois que cada pessoa removida, a contagem prossegue em torno do crculo restante.
Esse processo continua at todas as M pessoas terem sido removidas. A ordem em que as
pessoas so removidas do crculo define a permutao de Josephus de (N, M) dos inteiros 1,
2, ... , N.

Vamos comear a soluo do problema


Entrada
Definir como NC (1 NC 30) os casos de teste. Em cada caso de teste de entrada
haver um par de nmeros inteiros positivos N (1 N 10000) e M (1 M 1000). O nmero
N representa a quantidade de pessoas do crculo, numerados de 1 a N. O nmero M representa o
tamanho do passo entre duas pessoas no crculo.

algoritmo "Problema 4"


// Funo :
// Autor : Johne, Magno, Roberto, Wagner
// Data : 20/11/2014
// Seo de Declaraes
var
nc: vetor[1..30, 1..2] de inteiro
n: vetor[1..10000] de inteiro
casos,loop,x,y,eliminados,passos: inteiro
inicio
// Seo de Comandos
escreva("Digite a quantidade de casos teste: ")
leia(casos)
enquanto ((casos < 1) ou (casos > 100)) faca
escreva("Valor invalido. Informe um valor entre 1 a 100: ")
leia(casos)
fimenquanto
para y de 1 ate casos faca
escreva("Digite o numero de pessoas no circulo: ")

leia(nc[y,1])
enquanto ((nc[y,1] < 1) ou (nc[y,1] > 1000)) faca
escreva("Valor invalido. Informe um valor entre 5 a 1000: ")
leia(nc[y,1])
fimenquanto
escreva("Qual a ordem de eliminao? ")
leia(nc[y,2])
enquanto ((nc[y,2] < 1) ou (nc[y,2] > 1000)) faca
escreva("Valor invalido. Informe um valor entre 1 a 1000: ")
leia(nc[y,2])
fimenquanto
para loop de 1 ate nc[y,1] faca
n[loop] <- loop
fimpara
eliminados <- 0
passos <- 1
repita
para x de 1 ate nc[y,1] faca
se n[x] <> 0 entao
se passos=nc[y,2] entao
n[x] <- 0
passos <- 1
eliminados <- eliminados+1
senao
passos <- passos+1
fimse
fimse
fimpara
ate eliminados = nc[y,1]-1
para x de 1 ate nc[y,1] faca
se n[x] <> 0 entao
escreva(" CASO TESTE",y,":",n[x])
escreval("")

fimse
fimpara
fimpara
fimalgoritmo

Fluxograma

Sada
Para cada caso de teste, haver uma linha de sada no seguinte formato: Case N: M
sempre com um espao antes de N e M. Sendo M a pessoa que restou no crculo.

Incio da execuo
Digite a quantidade de casos teste: 2
Digite o numero de pessoas no circulo: 60
Qual a ordem de eliminao? 2
CASO TESTE 1: 57
Digite o numero de pessoas no circulo: 18
Qual a ordem de eliminao? 4
CASO TESTE 2: 9
Fim da execuo.

Bibliografia

<http://www.facom.ufu.br/~claudio/Cursos/PP/Docs/Visualg2.pdf>

<http://www.youtube.com/watch?v=dZq7l9Oj_c&list=PLE88CDBBDB041CC82&index=1>

<http://forum.imasters.com.br>

<MANZANO, Jos Augusto N. Garcia. Algoritmos: Lgica para Desenvolvimento


de Programao de Computadores. 21 ed. So Paulo: rica, 2008.>

Vous aimerez peut-être aussi