LagMaster Posted March 26, 2012 at 08:32 PM Report #445781 Posted March 26, 2012 at 08:32 PM Boas Eu devia tar mesmo a dormir quando pensei nisso, pois parecia mesmo de génio. Mas agora não me tou a lembrar Tipo tinha que calcular a recta (Y) apartir de dois pontos dados ex: (3,2) (3,6) Aí atribuia ao primeiro ponto o nome de ponto um e ao segundos de dois. P1= (3,2) P2=(3,6) Primeiro calcularia o m (declive) da seguinte forma: m=y2-y1 6-2 4 _____=____=__ x2-x1 3-3 0 then y=0x +b escolhia-se um dos pontos (ex: (3,6) ) e atribuia-se ao y da equação da reta o y do ponto e ao x da equação o x do ponto: 6=0 x 3 +b 6=0+b 6-0=b 6=b ou seja a equação seria: y=0x + 6 --------------------------------------------------------------------------------------------- O programa teria de fazer isso.. O meu problema é passar isto para código.. Alguém me pode dar umas luzes ?? Entretanto vou estudar mais pascal ;D Cumprimentos LagMaster YOU SHALL NOT PASS !!!
pmg Posted March 26, 2012 at 08:36 PM Report #445783 Posted March 26, 2012 at 08:36 PM Divisao por 0? ??? Tens a certeza? Eu nao me lembro dessa parte da matematica, mas uma recta vertical nao pode ser expressa com a formula que usaste em cima, pois nao? What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
LagMaster Posted March 26, 2012 at 08:51 PM Author Report #445787 Posted March 26, 2012 at 08:51 PM Eu antes de postar confirmei no meu caderno de mat.. Isto aqui foi só um exemplo e acho que não me enganei em lado nenhum... Mas vou experimentar com outros nº: P1= (5,2) P2=(7,6) m=y2-y1 6-2 4 _____=____=__=2 x2-x1 7-5 2 then y=2x +b Escolho o ponto 1 (5,2) 2=2 x 5 +b 2=10+b 2-10=b -8=b y=2x-8 ------------------------------------------------------ Escolho o ponto 2 nesta ultimo etapa: (7,6) 6=2 x 7 + b 6=14 + b 6-14=b -8=b --------------------------------------------------------------------------- Portanto acho que não cometi nenhum erro .. :S Cumprimentos Lagmaster 😄 YOU SHALL NOT PASS !!!
nunopicado Posted March 26, 2012 at 08:58 PM Report #445788 Posted March 26, 2012 at 08:58 PM Afinal, o que é que o utilizador deverá inserir para o programa calcular? Exemplifica deste modo. Imagina que a conta a fazer é x=a+b. O utilizador deverá inserir, por exemplo: 2 3 e o programa iria retornar x=5 Tenta traduzir isto para a tua equação... 😁 PS: A cena que o pmg fala da divisão por 0 é porque no teu primeiro exemplo aparecia-te isso, mas tal é uma divisão impossível, pelo que o compilador daria erro ao tentar... "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
LagMaster Posted March 26, 2012 at 09:17 PM Author Report #445790 Posted March 26, 2012 at 09:17 PM Ok vou tentar.. ( ainda nem comecei a rever Pascal no site de tutoriais lo) E quanto aquilo do 0 não tinha entendido. Mas isso seria um problema pois em casos como aquele daria portanto erro. Cumprimentos Lagmaster YOU SHALL NOT PASS !!!
LagMaster Posted March 26, 2012 at 09:20 PM Author Report #445791 Posted March 26, 2012 at 09:20 PM Estava a ver e por exemplo.. program Noname0; begin WriteLn('Escreva o ponto 1 Ex: 3,2!'); Readln(P1); WriteLn end. Nao daria (ainda nem escrevi as variaveis nem nada tava so a pensar).. pois dentro da variavel P1 existem outras 2 variaveis.Como coloco isso ?? Cumprimentos Lagmaster YOU SHALL NOT PASS !!!
nunopicado Posted March 26, 2012 at 09:56 PM Report #445797 Posted March 26, 2012 at 09:56 PM E quanto aquilo do 0 não tinha entendido. Mas isso seria um problema pois em casos como aquele daria portanto erro. Tudo tem solução. Bastaria, antes de efectuar o cálculo, verificar se o denominador é = a 0. Se for, dá uma mensagem a indicar sobre o porquê de não ser possível efectuar o cálculo. Se não for, calcula da maneira normal. Isso é simples! 😄 Nao daria (ainda nem escrevi as variaveis nem nada tava so a pensar).. pois dentro da variavel P1 existem outras 2 variaveis.Como coloco isso ?? Ah, OK. Então aí 3,2 são dois valores distintos, certo? Imagino que seja o x e o y do ponto P1, neste caso. Também é simples. Ou lês em separado o x e o y para variáveis diferentes, ou crias uma função que leia uma string (caracteres alfanumericos) e depois a analise: Pega no valor que estiver antes da virgula, converte-o para real, e atribui-o ao x; e faz o mesmo com o valor depois da virgula e atribui-o ao y (ou vice-versa). Quanto à/às variáveis usadas para guardar essas coordenadas, até se pode usar um tipo predefinido do Delphi/FreePascal, especifico para coordenadas. uses Classes; var P1:TPoint; begin P1.X:=5; // O tipo TPoint define uma variável com dois campos: X e Y, que se usam colocando um . entre o nome da variável e o do campo P1.Y:=3; end. Sendo mais do que um ponto (como me parece que precisas, podes até usar um array deste tipo: uses Classes; var P:Array [1..2] of TPoint; // Define-se um Array de TPoints, neste caso com dois begin P[1].X:=3; // Coordenada X do ponto 1 P[1].Y:=5; // Coordenada Y do ponto 1 P[2].X:=1; // Coordenada X do ponto 2 P[2].Y:=2; // Coordenada Y do ponto 2 end. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
LagMaster Posted March 26, 2012 at 10:29 PM Author Report #445809 Posted March 26, 2012 at 10:29 PM Isso parece-me deveras complicado Acho que mais simples ir pedindo 1 a 1.. o valor de x no ponto 1 etc.. Entretanto vou começar a "montar" o programa 😁 e deixo para amanha o estudo.. Obrigado pela ajuda.. daqui a uns momentos volto a postar com a duvida que obviamente vou ter xD Cumprimentos LagMaster YOU SHALL NOT PASS !!!
nunopicado Posted March 26, 2012 at 10:41 PM Report #445811 Posted March 26, 2012 at 10:41 PM A parte da função para separar os valores por virgulas é um pouco mais complexa. Mas podes usar os TPoint individualmente: uses Classes; var P1,P2:TPoint; // Com duas variáveis, em vez do array begin Write('Insira a coordenada X do 1º ponto: '); readln(p1.x); Write('Insira a coordenada Y do 1º ponto: '); readln(p1.y); Write('Insira a coordenada X do 2º ponto: '); readln(p2.x); Write('Insira a coordenada Y do 2º ponto: '); readln(p2.y); . . . end. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
LagMaster Posted March 26, 2012 at 10:48 PM Author Report #445812 Posted March 26, 2012 at 10:48 PM Só vi o post agora 😁 Mas entretanto tinha feito o seguinte: [code]program Noname0; var x1,x2,y1,y2,result: Real; begin WriteLn('Escreva o nº equivalente a x no ponto 1'); Readln (x1); WriteLn ('Escreva o nº equivalente a y no ponto 1'); readln (y1); writeLn ('Escreva o nº equivalente a x no ponto 2 '); readln (x2); writeln ('Escreva o nº equivalente a y no ponto 2'); readln (y2); writeln ('Portanto Ponto 1:(',x1:3:2,',',y1:3:2,')'); readln; writeln ('Portanto Ponto 2:(',x2:3:2,',',y2:3:2,')'); readln; end. [/code] Mas tb daria assim não ?? (assim acho mais facil por agora)... YOU SHALL NOT PASS !!!
nunopicado Posted March 26, 2012 at 10:55 PM Report #445813 Posted March 26, 2012 at 10:55 PM Sim, também dá. Aliás, se as coordenadas precisam de ser do tipo Real, então é mesmo melhor não usar o TPoint, que só aceita coordenadas Integer. Já agora, aquela variável Result, sugiro que lhe dês outro nome. Embora neste caso concreto não haja problemas, a palavra Result serve de variável criada automáticamente em funções, para guardar o valor que essas retornam. Logo, é de bom tom criar o hábito de não a usar para mais uso nenhum além desse, para que quando uses funções não corras o risco de ter problemas e depois não saber porquê! 😁 "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
LagMaster Posted March 26, 2012 at 10:59 PM Author Report #445814 Posted March 26, 2012 at 10:59 PM Agora veio a parte mais dificil: fazer a equação no programa... a fase 1 deu (m= (y2-y1) / (x2-x1) ) Mas a outra não consigo já :/ (da erro) program Noname0; const y: var x1m,m,b,x1,x2,y1,y2,result: Real; begin WriteLn('Escreva o nº equivalente a x no ponto 1'); Readln (x1); WriteLn ('Escreva o nº equivalente a y no ponto 1'); readln (y1); writeLn ('Escreva o nº equivalente a x no ponto 2 '); readln (x2); writeln ('Escreva o nº equivalente a y no ponto 2'); readln (y2); writeln ('Portanto Ponto 1:(',x1:3:2,',',y1:3:2,')'); readln; writeln ('Portanto Ponto 2:(',x2:3:2,',',y2:3:2,')'); readln; m:=(y2-y1)/(x2-x1); y:= m + b; y1:=m * x1 + b; y1:= mx1+ b; y1 -mx1:=b; writeln ('y=',m,b,); readln; end. Entre outros não sei que tipo de constante o Y será ? Any help, please ? 🙂 Cumprimentos LagMaster 😁 YOU SHALL NOT PASS !!!
nunopicado Posted March 26, 2012 at 11:06 PM Report #445815 Posted March 26, 2012 at 11:06 PM É assim... De matemática, népias... Mas se estás a atribuir a y a soma de dois valores reais, y, não pode ser uma constante, e sim uma variável, também ela real. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
LagMaster Posted March 26, 2012 at 11:12 PM Author Report #445818 Posted March 26, 2012 at 11:12 PM Estava a pensar mal.. pensava que como não se alterava o Y seria constante lol Eu agora niveis de mat tou com um problema y:= m + b y1:= m * x1 + b <----------- apos a conta de multiplicar, o que iria dar ? coloquei uma variavel real mx1 e depois coloquei y1:= mx1 +b como resultado, mas nada :/ Agradeço a ajuda dada 😁 Amanha volto com a cabeça fresca e com sorte alguem que tenha conhecimentos nesta area da "matematica pascaliana" tenha visto e respondido xd Cumprimentos e agradecimentos LagMaster YOU SHALL NOT PASS !!!
LagMaster Posted March 26, 2012 at 11:17 PM Author Report #445819 Posted March 26, 2012 at 11:17 PM E a luz acendeu-se... espero que dê assim: program Noname0; var y,x1m,m,b,x1,x2,y1,y2,result: Real; begin WriteLn('Escreva o nº equivalente a x no ponto 1'); Readln (x1); WriteLn ('Escreva o nº equivalente a y no ponto 1'); readln (y1); writeLn ('Escreva o nº equivalente a x no ponto 2 '); readln (x2); writeln ('Escreva o nº equivalente a y no ponto 2'); readln (y2); writeln ('Portanto Ponto 1:(',x1:3:2,',',y1:3:2,')'); readln; writeln ('Portanto Ponto 2:(',x2:3:2,',',y2:3:2,')'); readln; m:=(y2-y1)/(x2-x1); y:= m + b; y1:=m * x1 + b; y1:= m*x1+ b; y1-m*x1:=b; writeln ('y=',m,b); readln; end. ? Agora necessito de não matematica mas da linguagem... na linha: y1-m*x1:=b; Dá o erro: Variable Identifier Expected What can I do ?? BTW Thanks for helping YOU SHALL NOT PASS !!!
bsccara Posted March 26, 2012 at 11:25 PM Report #445820 Posted March 26, 2012 at 11:25 PM Para desenhar linhas rectas existem algoritmos melhores como o Bresenham (http://en.wikipedia.org/wiki/Bresenham's_line_algorithm), que não precisa de virgula flutuante.
nunopicado Posted March 26, 2012 at 11:28 PM Report #445821 Posted March 26, 2012 at 11:28 PM y1:=m * x1 + b; y1:= m*x1+ b; Antes de mais tens de rever isto. Ao colocares em duas linhas seguidas a atribuires a y1 um calculo qualquer, a primeira linha basicamente não servirá de nada. De qualquer maneira, neste caso, elas são repetidas, pelo que basta apagar uma. Perguntas o que ele faria aqui? A prioridade é a multiplicação, pelo que ele irá multiplicar primeiro m por x1, e depois soma o valor de b ao total. No fim atribui tudo a y1. y1-m*x1:=b; Aqui dá-te erro porque é uma operação impossível. Do lado esquerdo do sinal := só podes ter uma variável, sem mais nada. Terás de desmultiplicar matematicamente essa equação de modo a que fiques só com a incógnita (termo matemático para variável 😁🙂 ) do lado esquerdo, e tudo o resto do lado direito... "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
bsccara Posted March 26, 2012 at 11:30 PM Report #445822 Posted March 26, 2012 at 11:30 PM Agora necessito de não matematica mas da linguagem... na linha: y1-m*x1:=b; Dá o erro: Variable Identifier Expected Sabes que no lado esquerdo duma atribuição tens de ter sempre uma variável ? Reparaste que estás a tentar atribuir o valor duma variável a uma expressão ?
LagMaster Posted March 27, 2012 at 12:06 AM Author Report #445827 Posted March 27, 2012 at 12:06 AM Aqui vai o source code: program Noname0; var y,x1m,m,b,x1,x2,y1,y2,result: Real; begin WriteLn('Escreva o nº equivalente a x no ponto 1'); Readln (x1); WriteLn ('Escreva o nº equivalente a y no ponto 1'); readln (y1); writeLn ('Escreva o nº equivalente a x no ponto 2 '); readln (x2); writeln ('Escreva o nº equivalente a y no ponto 2'); readln (y2); writeln ('Portanto Ponto 1:(',x1:3:2,',',y1:3:2,')'); readln; writeln ('Portanto Ponto 2:(',x2:3:2,',',y2:3:2,')'); readln; m:=(y2-y1)/(x2-x1); b:=y-m*x1; writeln ('y=',m:3:2,b:3:2); readln; end. Isto é estranho.. tou a algum tempo a resolver varias vezes a conta à mão e dá-me certo.. Entretanto antes de adormecer vejo se resolvo este problema :/ Cumprimentos e Boas Noites ;D YOU SHALL NOT PASS !!!
pmg Posted March 27, 2012 at 08:06 AM Report #445847 Posted March 27, 2012 at 08:06 AM y1-m*x1:=b; Dá o erro: Variable Identifier Expected Tens que escrever ao contrário, ou seja: a variável que queres atribuir do lado esquerdo do := e o valor (a conta) do lado direito b := y1 - m*x1; What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
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