Estou tendo dificuldade em ALGORITMOS
Olá boa tarde,
Preciso muito de ajuda, estou com um trabalho para entregar, mas não sei como escrever.. :/
1. São dados N azulejos de dimensões 10cm x 10cm. Com eles, você deve montar um
conjunto de quadrados (com espessura de um azulejo) de modo a utilizar TODOS os azulejos
dados. Inicialmente você deve montar o maior quadrado possível com os azulejos dados;
então, com os azulejos que sobraram, você deve montar o maior quadrado possível, e assim
sucessivamente. Por exemplo, se forem dados 31 azulejos, o conjunto montado terá quatro
quadrados,
Faça um algoritmo que calcule o número de quadrados do conjunto montado para
um determinado número de azulejos que seja informado. Saia do algoritmo quando
informado o número zero (0)
2. Epaminondas resolve contar usando a mão esquerda da seguinte maneira: Ela
começa com 1 no dedão, 2 no dedo indicador, 3 no médio, 4 no anelar, 5 no mínimo e depois
inverteu a ordem, contando 6 no anelar, 7 no médio, 8 no indicador, 9 no dedão, 10
novamente no dedo indicador e assim por diante. Em qual dedo a pessoa parou se contou
até:
(a) 222
(b) 534
(c) 1001
Faça um algoritmo que leia o número a ser contado e indique em qual dedo do
Epaminondas parou?
Desde já agradeço! ;)
Preciso muito de ajuda, estou com um trabalho para entregar, mas não sei como escrever.. :/
1. São dados N azulejos de dimensões 10cm x 10cm. Com eles, você deve montar um
conjunto de quadrados (com espessura de um azulejo) de modo a utilizar TODOS os azulejos
dados. Inicialmente você deve montar o maior quadrado possível com os azulejos dados;
então, com os azulejos que sobraram, você deve montar o maior quadrado possível, e assim
sucessivamente. Por exemplo, se forem dados 31 azulejos, o conjunto montado terá quatro
quadrados,
Faça um algoritmo que calcule o número de quadrados do conjunto montado para
um determinado número de azulejos que seja informado. Saia do algoritmo quando
informado o número zero (0)
2. Epaminondas resolve contar usando a mão esquerda da seguinte maneira: Ela
começa com 1 no dedão, 2 no dedo indicador, 3 no médio, 4 no anelar, 5 no mínimo e depois
inverteu a ordem, contando 6 no anelar, 7 no médio, 8 no indicador, 9 no dedão, 10
novamente no dedo indicador e assim por diante. Em qual dedo a pessoa parou se contou
até:
(a) 222
(b) 534
(c) 1001
Faça um algoritmo que leia o número a ser contado e indique em qual dedo do
Epaminondas parou?
Desde já agradeço! ;)
Tatiele
Curtidas 0
Respostas
Gleyton Menezes
19/03/2015
É para fazer com alguma linguagem?
GOSTEI 0
Tatiele
19/03/2015
Não,
Somente em algoritmos...
Estou testando algumas ideias no Visualg
Somente em algoritmos...
Estou testando algumas ideias no Visualg
GOSTEI 0
Gleyton Menezes
19/03/2015
Já fiz alguns mas não com esse grau de dificuldade.
GOSTEI 0
Tatiele
19/03/2015
e olha que faz um mês que iniciei o curso, sem conhecimento nenhum... O professor pegou pesado, mas estou perto da resposta certa...
Obrigada :)
Obrigada :)
GOSTEI 0
Gleyton Menezes
19/03/2015
Se possivel, pode postar o que você fez? e quando terminar tambem?
GOSTEI 0
Tatiele
19/03/2015
eu ainda não consegui terminar, o loop não está dando certo e por esse motivo alguns números dão errado, tipo 24, 347, 1200. Acredito que esses números estão dando errado, por terem que fazer o laço de repetição, que não está funcionando....
O melhor que cheguei até agora! Coloquei alguns comentários para explicar a minha lógica... Qualquer dúvida me pergunta, e qualquer modificação que achar necessária pode me dizer...
algoritmo "Calculo de Quadrados"
// Função : Contar quantos quadrados consigo montar com número de azulejos
// Autor : Tatiele Nascimento
// Data : 22/03/2015
// Seção de Declarações
var
raiz, Raiz2:real
n,calc1, calc2, calc3, Aux, Aux2, quadrados, quadrados1: inteiro
inicio
escreva ("Digite o número de azulejos:")
leia (n)
se (n=0) entao
escreval ("Digite outro número inteiro e maior que zero")
senao
se (n<=3) entao
quadrados1 <- n
Escreval ("O número de quadrados é: ", quadrados1) //Ex: o número digitado foi 9
senao
se (n>3) entao
ENQUANTO (n >3) FACA
raiz <- n^(1/2) + 0,0012566 // raiz quadrada de 9 é exata (3)
// por isso que coloquei (+ 0,0012566)
calc1 <- int(raiz) * int(raiz) // aqui só preciso pegar o inteiro das raizes
Aux <- n - Calc1 // 9-9 = 0
quadrados <- 1
se Aux <=3 entao
quadrados <- quadrados + Aux // aqui é para casos que sobra 1,2,3
senao
quadrados <- quadrados + 1
fimse
se (Aux>3) entao
Aux2 <- Aux
Raiz2 <- Aux2^(1/2) + 0,0012566 //se Aux que deu 0, for maior que 3, preciso repetir o esquema de cima
calc2 <- int(Raiz2) * int(Raiz2) //
calc3 <- Aux - calc2 //
se calc3 <=3 entao
quadrados <- quadrados + calc3 // se for menor que 3. não preciso repetir tudo de novo
// pois 3 azulejos não formam um quadrado maior, entao fica como tres quadrados
FIMSE
FIMSE
n<- calc3 // aqui n vai receber o valor de calc3, para continuar ou não o laço
FIMENQUANTO
escreval("o número de quadrados é!", quadrados)
fimse
fimse
fimse
fimalgoritmo
O melhor que cheguei até agora! Coloquei alguns comentários para explicar a minha lógica... Qualquer dúvida me pergunta, e qualquer modificação que achar necessária pode me dizer...
algoritmo "Calculo de Quadrados"
// Função : Contar quantos quadrados consigo montar com número de azulejos
// Autor : Tatiele Nascimento
// Data : 22/03/2015
// Seção de Declarações
var
raiz, Raiz2:real
n,calc1, calc2, calc3, Aux, Aux2, quadrados, quadrados1: inteiro
inicio
escreva ("Digite o número de azulejos:")
leia (n)
se (n=0) entao
escreval ("Digite outro número inteiro e maior que zero")
senao
se (n<=3) entao
quadrados1 <- n
Escreval ("O número de quadrados é: ", quadrados1) //Ex: o número digitado foi 9
senao
se (n>3) entao
ENQUANTO (n >3) FACA
raiz <- n^(1/2) + 0,0012566 // raiz quadrada de 9 é exata (3)
// por isso que coloquei (+ 0,0012566)
calc1 <- int(raiz) * int(raiz) // aqui só preciso pegar o inteiro das raizes
Aux <- n - Calc1 // 9-9 = 0
quadrados <- 1
se Aux <=3 entao
quadrados <- quadrados + Aux // aqui é para casos que sobra 1,2,3
senao
quadrados <- quadrados + 1
fimse
se (Aux>3) entao
Aux2 <- Aux
Raiz2 <- Aux2^(1/2) + 0,0012566 //se Aux que deu 0, for maior que 3, preciso repetir o esquema de cima
calc2 <- int(Raiz2) * int(Raiz2) //
calc3 <- Aux - calc2 //
se calc3 <=3 entao
quadrados <- quadrados + calc3 // se for menor que 3. não preciso repetir tudo de novo
// pois 3 azulejos não formam um quadrado maior, entao fica como tres quadrados
FIMSE
FIMSE
n<- calc3 // aqui n vai receber o valor de calc3, para continuar ou não o laço
FIMENQUANTO
escreval("o número de quadrados é!", quadrados)
fimse
fimse
fimse
fimalgoritmo
GOSTEI 0
Marcos P
19/03/2015
Tatiele,
Vou lhe dar uma ajuda nesse primeiro, ok ?!?
Assumindo, conforme o enunciado, que quando temos 31 azulejos conseguimos fazer 4 quadrados, temos :
Observe que o menor quadrado é formado por apenas um azulejo...
Se a lógica é essa, a base do seu algoritmo deve ser :
Só ajuste esse pseudo-código a sintaxe que você precisa.
Ok ?!?
Vou lhe dar uma ajuda nesse primeiro, ok ?!?
Assumindo, conforme o enunciado, que quando temos 31 azulejos conseguimos fazer 4 quadrados, temos :
saldo | 31
| x
saldo | 30
| xx
| xx
saldo | 26
| xxx
| xxx
| xxx
saldo | 17
| xxxx
| xxxx
| xxxx
| xxxx
saldo | 1
Observe que o menor quadrado é formado por apenas um azulejo...
Se a lógica é essa, a base do seu algoritmo deve ser :
entra @qtde_azulejos @saldo_azulejo = @qtde_azulejos @quadrados = 0 enquanto @saldo_azulejo >= (@quadrados * @quadrados ) @quadrados = @quadrados + 1 @saldo_azulejo = @saldo_azulejo - (@quadrados * @quadrados ) fimenquanto O total de quadrados é igual a : @quadrados O salado de azulejos é igual a : @saldo_azulejo
Só ajuste esse pseudo-código a sintaxe que você precisa.
Ok ?!?
GOSTEI 0
Tatiele
19/03/2015
Consegui fazer os dois exercícios... Muito Obrigada :)
aqui está minha solução do segundo exercício, está em algoritmos.
Programa Dedos
var
n, cont: inteiro
INICIO
Escreva ("Digite um número ")
Leia (n)
cont <- 1
Repita
SE (cont=n) ENTAO
Escreval (n, " está no dedo polegar")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo indicador")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo médio")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo anelar")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo mínimo")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo anelar")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo médio")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo indicador")
FIMSE
cont<-cont+1
ATE (cont>n)
FIMREPITA
FIMALGORITMO
aqui está minha solução do segundo exercício, está em algoritmos.
Programa Dedos
var
n, cont: inteiro
INICIO
Escreva ("Digite um número ")
Leia (n)
cont <- 1
Repita
SE (cont=n) ENTAO
Escreval (n, " está no dedo polegar")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo indicador")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo médio")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo anelar")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo mínimo")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo anelar")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo médio")
FIMSE
cont<-cont+1
SE (n=cont) ENTAO
Escreva (n, " está no dedo indicador")
FIMSE
cont<-cont+1
ATE (cont>n)
FIMREPITA
FIMALGORITMO
GOSTEI 0
Gleyton Menezes
19/03/2015
Obrigado Tatiele, boa lembrança desse código.
GOSTEI 0