Ajuda em algoritmo !

06/09/2015

0

Estou com dificuldades em algoritmos e professor deu este probleminha para resolvermos, alguém pode me dar uma ajuda?

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, conforme ilustra a figura abaixo:
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)
Troplive

Troplive

Responder

Post mais votado

01/10/2015

Resumindo, se tem um processo que pode ser executado de forma repetida até restarem 0 azulejos:

1. Extrair raiz do número.
2. Pegar maior inteiro próximo da raiz obtida (função Floor).
3. Elevar o número ao quadrado, obtendo o tamanho do maior quadrado possível. Aqui se tem um quadrado.
4. Subtrair o quadrado obtido do número de azulejos original.
5. Repetir o processo com a diferença obtida no passo 4.

Espero ter ajudado.

Joel Rodrigues

Joel Rodrigues
Responder

Mais Posts

06/09/2015

Troplive

Me auxiliem, estou tentando mas ainda não consegui... ajudem no meu erro !
se eu digito o n° 347 por exemplo, não gera a resposta certa.


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
Responder

01/10/2015

Joel Rodrigues

Um quadrado de azulejos possui um número de azulejos que é um quadrado perfeito, certo? Por exemplo, 1, 4 (2 por lado), 9 (3 por lado), 16 (4 por lado), etc.
Sendo assim, para saber qual é o maior quadrado perfeito antes do número fornecido, você extrai a raiz deste e pega o valor inteiro abaixo mais próximo.

Por exemplo, para o número 347, sua raiz é aproximadamente 18.63. Então pega-se o valor 18 e eleva-se ao quadrado, que resulta em 324.

Usando 324 azulejos, restam 23. Então repete-se o procedimento.

A raiz de 23 é aproximadamente 4,79. Pega-se 4 e eleva-se ao quadrado, gerando um quadrado de 16 azulejos. Sobram então 7 azulejos, então repete-se o processo.

A raiz de 7 é aproximadamente 2,64, então toma-se 2 ao quadrado, que dá num quadrado de 4 azulejos, restando 3 azulejos. Repete-se o processo.

A raiz de 3 é aproximadamente 1,73, então toma-se 1, que ao quadrado dá 1 e restam 2 azulejos. Repete-se o processo.

A raiz de 2 é aproximadamente 1,41, então toma-se 1 ao quadrado e sobra 1 azulejo.

A raiz de 1 é 1 e não sobram mais azulejos.

No final se tem 6 azulejos: 324, 16, 4, 1, 1, 1.
Responder

13/10/2015

Joel Rodrigues

Conseguiu?
Responder

15/10/2015

Troplive

Consegui sim !
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar