Post on 23-Jun-2015
ATIVIDADE PRATICA SUPERVISIONADA
Construção de Algoritmos
Tecnologia em Analise e desenvolvimento de Sistemas Rafael Souza Santos - 7299613201
Leandro V. Ferreira - 6660432326Rodolfo Alves - 7229576393Felipe D. Guimarães - 9977020851
2º semestre 28 de Novembro 2013
“
”O sucesso nasce do querer, da determinação e persistência em se chegar a um objetivo. Mesmo não atingindo o alvo, quem busca e vence obstáculos, no mínimo fará coisas admiráveis.
José de Alencar
‘
Tecnologia em Analise e desenvolvimento de Sistemas
RELATÓRIO 01ETAPA 1
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 3
“
”PROBLEMA 1
Definir um número inteiro N que será o número de casos de teste. Cada caso de teste é uma linha que contém dois números inteiros X e Y. O problema se resume em imprimir a soma de todos os valores ímpares entre os dois números inteiros, excetuando-os.
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 4
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 5
ENTRADA ---------------------------------------------
A primeira linha de entrada é um número inteiro N que é o número de casos de teste a serem solucionados. Cada caso de teste é uma linha contendo dois inteiros X e Y.
PROCESSO -------------------------------------------
???
SAIDA --------------------------------------------------
A soma dos números ímpares entre X e Y.
N= 2
X e Y =2 e 5
R1= 3
X e Y =10 e 20
R2= 75
???
Entendendo o Problema
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 6
RESOLUÇÃO DO PROBLEMA 1
Var: N, X, Y, Contador, iSoma, Soma-Impar :INTEIRO
escreva ("Informe o numero de tentativas: ")
leia (N)
para Contador de 1 ate N faca
Escreval ("Digite dois números diferentes: ")
leia (X)
leia (Y)
Soma-Impar <- 0
• Uso do laço repita
• Variável contadora
se (X<Y) entao
Soma<-X+1
enquanto (Soma<Y) faca
se (iSoma%2<>0) entao
Soma-Impar<-(Soma-Impar + Soma)
Fimse
soma<- (Soma + 1)
fimenquanto
se (X<Y) entao
Soma<-X+1
enquanto (Soma<Y) faca
se (iSoma%2<>0) entao
Soma-Impar<-(Soma-Impar + Soma)
Fimse
soma<- (Soma + 1)
Fimenquanto
escreval("A soma dos numeros impares
entre",X," e",Y," foi: ",Soma-Impar)
fimpara
• Uso de variável acumuladora
• Uso da condição lógica ‘se’
Tecnologia em Analise e desenvolvimento de Sistemasinicio
X, Y e N
X < Y
Soma <- X+1
Soma < Y
Soma %2 <> 0
soma-impar <- soma-impar + soma
Soma <- soma + 1
Soma-impar
fim
falsoverdadeiro
Soma <- Y+1
Soma < X
Soma %2 <> 0
soma-impar <- soma-impar + soma
Soma <- soma + 1
RELATÓRIO 02ETAPA 2
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 9
“
”PROBLEMA 2
Andreia está aprendendo Programação de Computadores. Ela acha tudo muito fácil, muito simples. Ela vai fazer um pequeno programa que lê os nomes de seus amigos e a distância de sua casa até a casa de cada um deles. Portanto, ela simplesmente quer calcular qual é a distância média entre a sua casa e sua casa dos amigos (em metros).
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 4
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 11
ENTRADA ---------------------------------------------
Deve conter vários casos de teste. Cada caso de teste é composto por duas linhas: A primeira linha contém o nome de um amigo; A segunda linha contém um número inteiro que indica a distância média entre a casa Andreia e a casa de um amigo.
PROCESSO -------------------------------------------
???
SAIDA --------------------------------------------------
um número com um dígito após a vírgula e que indica a distância média entre a casa Andreia e a casa de seus amigos.
Entendendo o Problema INICIO
Nome, distancia
???
Distancia-media
FIM
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 12
RESOLUÇÃO DO PROBLEMA 2
Var: distancia, Soma-distancia, Contador: INTEIROVar: Nome, Continua : CaractereVar: Distancia-Media : real
Repita
escreval("Informe o nome de seu amigo:") leia(Nome)
escreval("Informe a distancia entre sua casa e a de seu amigo:") leia(distancia)
Soma-Distancia<-(Soma-distancia + Distancia)
Contador<-(Contador+1)
escreva("Mais amigos? (N para Calcular a Distancia Media): ")leia(Continua)ate(Continua="N")
Distancia-Media<-(Soma-Distancia/Contador)escreval("A distancia media da sua casa para a casa de seus amigos eh:",(Distancia-Media):8:1)
• Uso do laço repita
• Variável contadora
• Uso de variável acumuladora
• Uso da condição lógica ‘se’
Tecnologia em Analise e desenvolvimento de Sistemas
INICIO Nome, distancia
Soma-distancia <-Soma-distancia + distancia
Contador <-(Contador + 1)
continua(Continua =‘N’)
Distancia-media <- (soma-distancia/contador
Distancia-media FIM
falso
verdadeiro
RELATÓRIO 03ETAPA 3
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 15
“
”PROBLEMA 3
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 4
João quer montar um painel contendo diferentes números de LEDs. Como não têm muitos, não tem certeza se vai ser capaz de montar o número desejado. Considerando-se a configuração dos LEDs conforme consta o exemplo na Figura 1 , fazer um algoritmo que ajude João descobrir quantos LEDs são necessários para montar o número.
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 11
ENTRADA ---------------------------------------------
A entrada contém um número inteiro N, (1 ≤ N ≤ 2000) correspondente ao número de casos de teste, seguido por N linhas, cada linha contendo um número (1 ≤ V ≤ 10100) que corresponde ao valor que João quer representar com LEDs..
PROCESSO -------------------------------------------
???
SAIDA --------------------------------------------------
Para cada caso de teste, imprimir uma linha contendo o número de LEDs que João precisa para representar o valor desejado, seguido da palavra "leds".
Entendendo o Problema INICIO
N-teste, num_reptd
???
Qt_LEDs
FIM
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 12
RESOLUÇÃO DO PROBLEMA 3Numero: caracterecont1, cont2, Tamanho, num, Quant, TotalLeds: inteiro
escreva("Informe quantos testes ira realizar: ")leia(Quant)
para cont1 de 1 ate Quant facaTotalLeds<-0
escreva("Informe o numero a apresentar no Display: ") leia(Numero)
Tamanho<-compr(Numero)
para cont2 de 1 ate Tamanho faca
num<-Caracpnum(copia(Numero,cont2,1)) escolha (num)
caso 1 TotalLeds<-TotalLeds+2 caso 2 TotalLeds<-TotalLeds+5 caso 3 TotalLeds<-TotalLeds+5 caso 4 TotalLeds<-TotalLeds+4 caso 5 TotalLeds<-TotalLeds+5
caso 6 TotalLeds<-TotalLeds+6 caso 7 TotalLeds<-TotalLeds+3 caso 8 TotalLeds<-TotalLeds+7 caso 9 TotalLeds<-TotalLeds+6 caso 0 TotalLeds<-TotalLeds+6 outrocaso fimescolha fimparaescreval("Total de Leds necessários: ",TotalLeds)fimparafimalgoritmo
Uso de variável acumuladora
Uso do laço repita
Funções para manipular strings: compr, carcpnum, copia.
Variável contadora Uso da condição lógica ‘se
TESTE DE MESAAo representar o numero 100 e 234 quantos LEDs são necessário ??
1= 2 LEDs | 2= 5 LEDs | 3= 5 LEDs | 4= 4 LEDs | 0= 6 LEDs
Para 100 2 + 6 + 6 = 14 LEDs
Para 234 5 + 5 + 4 = 14 LEDs
Fim Teste de Mesa
Teste De
Mesa
RELATÓRIO 04ETAPA 4
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 15
“
”
PROBLEMA 4
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 4
O Problema de Josephus é definido como mostrado a seguir. N pessoas estão organizadas em um círculo e que temos um inteiro positivo M ≤ N. Começando com uma primeira pessoa designada, prosseguimos em torno do círculo, removendo cada M-ésima pessoa. Depois que cada pessoa é removida, a contagem prossegue em torno do círculo restante. Esse processo continua até todas as M pessoas terem sido removidas. A ordem em que as pessoas são removidas do círculo define a permutação de Josephus de (N, M) dos inteiros 1, 2, ... , N.
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 11
ENTRADA ---------------------------------------------
Definir como NC (1 ≤ NC ≤ 30) os casos de teste. Em cada caso de teste de entrada haverá um par de números inteiros positivos N (1 ≤ N ≤ 10000) e M (1 ≤ M ≤ 1000). O número N representa a quantidade de pessoas do círculo, numerados de 1 a N. O número M representa o tamanho do passo entre duas pessoas no círculo.
PROCESSO -------------------------------------------
???
SAIDA --------------------------------------------------
Para cada caso de teste, haverá uma linha de saída no seguinte formato: Case N: M sempre com um espaço antes de N e M. Sendo M a pessoa que restou no círculo.
Entendendo o Problema INICIO
Num-teste, N e
M
???
Case N : M
FIM
Tecnologia em Analise e desenvolvimento de Sistemas
2º semestre 28 de Novembro Pág. 12
RESOLUÇÃO DO PROBLEMA 4
• Uso do laço repita
• Variável contadora
• Uso de variável
acumuladora
• Uso da condição lógica ‘se’
• Uso de matriz
• Uso de vetor
varcast: vetor[1..30, 1..2]de inteiron: vetor[1..10000] de inteironc,i,j,k,mortos, passos: inteiro
inicio
escreva (" Quantidade de casos teste ")leia(nc)
para k de 1 ate nc faca
escreva("Numero de pessoas no circulo:") leia(cast[k,1]) escreva(" Ordem de eliminação: ") leia(cast[k,2])
para i de 1 ate cast[k,1] faca
n[i]<-i fimpara mortos<- 0 passos<- 1 repita para j de 1 ate cast[k,1] faca se n[j] <> 0 entao se passos=cast[k,2] entao n[j]<-0 mortos<-mortos+1 passos<-1 senao passos<-passos+1
fimse
fimse fimpara
ate mortos = cast[k,1]-1
para j de 1 ate cast[k,1] faca
se n[j] <> 0 entao escreva(“ CASO",k," : ",n[j]) escreval("") escreval("") fimse fimparafimparafimalgoritmo
TESTE DE MESAHá um Circulo com 10 pessoas, sendo eliminadas de 3 em 3. Qual a posição inicial da ultima pessoas a ser eliminada do circulo?
Teste De
Mesa1 2
9
48
6
3
75
10
The End.