ritynha Posted December 26, 2009 at 05:40 PM Report Share #302473 Posted December 26, 2009 at 05:40 PM ola a todos! eu tenho um exercicio para fazer: "Crie um procedimento que troque os valores de duas posições de um array X;" eu tenho este codigo: program kalkerkoisa; uses wincrt; var x:array[1..5] of integer; c,v1,v2,p1,p2:integer; procedure troca(p1,p2:integer); var i,tmp,tmp2,tmp3:integer; Begin for i:=1 to 5 do begin if(v1=x[i]) then begin tmp:=v1; end; if(v2=x[i]) then begin tmp2:=v2; end; if((v1=tmp) and (v2=tmp2))then begin tmp3:=v1; v1:=v2; v2:=tmp3; end; writeln(x[i]); end; End; //programa principal Begin for c:=1 to 5 do begin writeln('escreva os valores para o array'); readln(x[c]); end; writeln('de 1 a 5 escolha um indici'); readln(v1, v2); //chamar o procedimento troca(p1,p2); End. e depois de varias tentativas esta coisa nao funciona, podem ajudar-me =) Link to comment Share on other sites More sharing options...
ritynha Posted December 27, 2009 at 02:25 PM Author Report Share #302564 Posted December 27, 2009 at 02:25 PM secalhar é mais facil para voces preceberem, eu so quero trocar duas possiçoes de um array. se fosse normal criava uma variavel sem nada e prontos mas com o array eu n sei como se faz. ajudem-me =/ Link to comment Share on other sites More sharing options...
Rui Carlos Posted December 27, 2009 at 03:03 PM Report Share #302577 Posted December 27, 2009 at 03:03 PM Para trocar as posições i,j, eu esperaria que fosse algo como tmp:=arr[i]; arr[i]:=arr[j]; arr[j]:=tmp; Nunca programei em Pascal, mas parece-me que tens aí alguma confusão com as variáveis. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
ritynha Posted December 27, 2009 at 03:21 PM Author Report Share #302583 Posted December 27, 2009 at 03:21 PM brigada, tambem ja tinha feito dessa forma e tbm nao muda os locais do array, Link to comment Share on other sites More sharing options...
Rui Carlos Posted December 27, 2009 at 03:34 PM Report Share #302589 Posted December 27, 2009 at 03:34 PM A questão é em que parte do código é que estava o problema. Parece-me que o código que tens está a complicar algo que devia ser simples. Como já disse, não percebo nada de Pascal, mas tendo por base o teu código, penso que devia ficar com algo parecido com isto: program kalkerkoisa; uses wincrt; var x:array[1..5] of integer; c,v1,v2:integer; procedure troca(p1,p2:integer); var tmp:integer; begin tmp=x[p1]; x[p1]=x[p2]; x[p2]=tmp; end; //programa principal begin for c:=1 to 5 do begin writeln('escreva os valores para o array'); readln(x[c]); end; writeln('de 1 a 5 escolha um indici'); readln(v1, v2); //chamar o procedimento troca(v1,v2); end. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
ritynha Posted December 27, 2009 at 03:54 PM Author Report Share #302596 Posted December 27, 2009 at 03:54 PM sim é muito mais simples, eu ja exprimentei tantas formas que ja tou toda barralhada :down: todas dão resultados, menos o resultado que pertendo lool para quem nao sabe nada de pascal, ta muito bem feito (logica eu sei). Link to comment Share on other sites More sharing options...
apocsantos Posted December 27, 2009 at 05:40 PM Report Share #302619 Posted December 27, 2009 at 05:40 PM O que perdentes é mudar os valores de posição no vector certo? Na ordem de alteração queres que o utilizador insira a posição onde se encontram os valores que quer "trocar" ou os valores e ele procure a posição ? Para trocar valores de posição ele tem de percorer o vector celula a celula, e pode ter de o percorrer duas vezes (eventualmente). Penso que esteja aí a dificuldade. Pelo menos pelo que li no codigo. Ele compilar compila em free pascal, mas não muda realmente as posições. Assim que expliques ao certo será mais facil colocar o codigo aqui. Cumprimentos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito" Link to comment Share on other sites More sharing options...
ritynha Posted December 27, 2009 at 10:03 PM Author Report Share #302679 Posted December 27, 2009 at 10:03 PM sim acho que é isso, temos um array e com os dois indices 2 e 5 (por exemplo) no indice 2 vai ficar a celula do indice 5. e no indice 5 vai ficar a celula do indice 2. nao sei se tou a ser muito explicita ou a confundir mais 😞 (detesto pascal rrr) Link to comment Share on other sites More sharing options...
apocsantos Posted December 27, 2009 at 10:12 PM Report Share #302681 Posted December 27, 2009 at 10:12 PM Ok agora percebi. O codigo é que estava um pouco confuso. Parte da solução está no teu codigo, só te falta a colocação dos novos valores no vector. Repara, corres o vector, lês os dados que são para ser trocados e passas os valores para variaveis temporarias, e sais. Devias correr novamente o vector, de 1 a 5 escrever o 1º indice no seu novo local, e o 2º indice no seu novo local, e depois sair. Na pratica falta-te um ciclo (for i:=1 to 5 do) em que vais colocar os valores novos nas devidas celulas. Cumprimentos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito" Link to comment Share on other sites More sharing options...
ritynha Posted December 28, 2009 at 04:08 PM Author Report Share #302805 Posted December 28, 2009 at 04:08 PM CONCEGUI!!!!!!!!! 😕🙂😄👍😛 fiz o codigo todo do inicio e bem deu certo^^^^^^^^^^^^ program kalkerkoisa; uses wincrt; var x:array[1..5] of integer; c:integer; procedure troca; var tmp,c1,c2,c:integer; Begin writeln('de 1 a 5 escolha dois indices'); readln(c1, c2); tmp:=x[c1]; x[c1]:=x[c2]; x[c2]:=tmp; for c:=1 to 5 do begin writeln('as celulas foram trocadas ',x[c]); end; End; Begin for c:=1 to 5 do begin writeln('escreva os valores para o array'); readln(x[c]); end; troca; End. Obrigada pela ajuda =) Link to comment Share on other sites More sharing options...
apocsantos Posted December 28, 2009 at 06:49 PM Report Share #302845 Posted December 28, 2009 at 06:49 PM Agora coloca no titulo do topico [Resolvido] Cumprimentos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito" Link to comment Share on other sites More sharing options...
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