speedofthesea Posted September 20, 2012 at 03:40 PM Report #476000 Posted September 20, 2012 at 03:40 PM Boas, há 1 ano comecei a aprender Pascal no entanto acabei por deixar a linguagem para trás. É o seguinte, há dias lembrei-me de fazer um programa muito simples para ver se ainda me lembrava disto. Basicamente é um programa que pede ao utilizador a quantidade de numeros que deseja introduzir e pede de seguida para os introduzir. Depois mostra os números introduzidos e por fim, organiza os numeros introduzidos e mostra-os au utilizador. Aqui fica o código: program teste; var n,i: integer; a: array[1..200] of integer; procedure org( p : array of integer ; max : integer) ; var j,k,l : integer; begin for j:=1 to max do begin for k:=1 to max do begin if p[j]<p[k] then begin p[j]:=p[j] xor p[k]; p[k]:=p[j] xor p[k]; p[j]:=p[j] xor p[k]; end; end; end; writeln('Os numeros organizados ficam: '); for l:=1 to max do begin writeln(p[l]); end; end; begin n:=0; Writeln('este teste e para ver se ainda sei programar em pascal'); Repeat Writeln('Indique quantos numeros deseja introduzir:'); Readln (n); If n>200 then writeln('Ate 200.'); Until n<=200; for i:=1 to n do Begin //Simula a Introdução de Numeros a[i]:=random(100); End; writeln('Aqui estão os numeros introduzidos:'); for i:=1 to n do Begin writeln (a[i]); End; Readln; org(a,n); readln; end. Simulei a introdução de números para n ter de perder tempo a introduzir manualmente. O problema é que ao mostrar os números organizados, o numero que fica na posição 1 do array não é mostrado, e em vez disso é mostrado um 0. Alguem me consegue ajudar? Cumps
passarito Posted September 21, 2012 at 09:49 AM Report #476068 Posted September 21, 2012 at 09:49 AM Experimenta correr usar o Randomize logo no inicio do programa, mesmo antes do n:=0;
thoga31 Posted September 21, 2012 at 06:20 PM Report #476118 Posted September 21, 2012 at 06:20 PM O problema não está na aleatoriedade, neste caso. Mas sim, o Randomize deverá ser utilizado, de qualquer das formas. Fiz um teste, e esta foi a lista criada por random: 68 63 88 67 75 61 29 49 53 1 E esta foi a lista que passou para o procedimento Org: 63 88 67 75 61 29 49 53 1 0 Fiz mais uns testes, e a minha conclusão é esta: quando passas um array por parâmetro, os índices que definiste para limites passam a ser de base zero. Neste caso, passaram de 1..200 para 0..199. Se fosse 3..10 passaria a ser 0..7. Mudei o programa nestes aspectos: a: array[0..199] of integer; for j:=0 to max do for k:=0 to max do for l:=0 to max do for i:=0 to n-1 do org(a,n-1); Assim acho que já funciona. Knowledge is free!
speedofthesea Posted September 21, 2012 at 09:30 PM Author Report #476161 Posted September 21, 2012 at 09:30 PM Obrigado, já percebi .
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