Array
(
)

Ajuda em algoritmo

Troplive
   - 06 set 2015

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
   - 06 set 2015

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