Aline Posted March 8, 2014 at 03:37 AM Report #547891 Posted March 8, 2014 at 03:37 AM (edited) Estava lendo sobre o comando while, fui testar esse codigo qe dizia ser sobre calcular e mostrar o quadrado de numeros inteiros de 1 ate 100, mas ao compilar mostra o quadrado de 59 em diante, ate 101. Nao teria q comecar pelo 1? aonde ta o erro nesse codigo?? Alguem pode me ajudar? rs program quadrados; var n,q:integer; begin n:=0; while (n<=100) do begin n:=n+1; q:=n*n; writeln(' O quadrado de ', n, ' e ',q); end; end. Edited March 8, 2014 at 05:21 AM by thoga31 Tags code + GeSHi
thoga31 Posted March 8, 2014 at 05:30 AM Report #547894 Posted March 8, 2014 at 05:30 AM Para ir até 100 e não 101, tens de mudar a condição de <= para <. Quando a condição é analisada, n é 100, mas a primeira instrução do ciclo é incrementar em 1 unidade, daí teres até 101. Não precisas da variável q para nada, podes fazer o cálculo directamente do write. O programa está a correr como era esperado. Em vez de escrever um número por linha, escreve-os a todos na mesma linha: substitui writeln(' O quadrado de ', n, ' e ',q) por apenas write(q, ','). A linha de comandos tem um limite de linhas, e assim que atinge esse limite, vai eliminar as mais velhas. Talvez seja por isso que aparente começar no 59: do 1 ao 58 foi eliminado da janela por falta de espaço. O teu programa com as alterações que eu sugeri produzem o seguinte output: 1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,841,900,961,1024, 1089,1156,1225,1296,1369,1444,1521,1600,1681,1764,1849,1936,2025,2116,2209,2304,2401,2500,2601,2704,2809,2916,3025, 3136,3249,3364,3481,3600,3721,3844,3969,4096,4225,4356,4489,4624,4761,4900,5041,5184,5329,5476,5625,5776,5929,6084, 6241,6400,6561,6724,6889,7056,7225,7396,7569,7744,7921,8100,8281,8464,8649,8836,9025,9216,9409,9604,9801,10000, Último conselho: indenta bem o código e sem tantos espaços. Repara (este é o teu código sem as alterações que propus): program quadrados; var n, q : integer; begin n:=0; while (n <= 100) do begin n := n+1; q := n*n; writeln(' O quadrado de ', n, ' e ',q); end; end. 1 Report Knowledge is free!
Aline Posted March 8, 2014 at 04:51 PM Author Report #547914 Posted March 8, 2014 at 04:51 PM hum entendi, obrigada pela ajuda, deu certo 🙂
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now