3 de setembro de 2011

Cálculo Vetorial - Pascal

{
* Autor: Levi Gomes de Oliveira
* E-mail: levigomes1@hotmail.com
* Em caso de dúvidas, críticas, sugestões e/ou correções, favor encaminhar
* ao e-mail acima.
* Esse algoritmo foi escrito, compilado e testado sobre o Slackware 13.1
* 32 bits, utilizando o fpc 2.4.4.
* Ele tem por objetivo resolver problemas básicos de cálculo vetorial.
* Escrevi para me auxiliar em meus estudos na faculdade.
* A precisão dos resultados impressos em tela podem ser alteradas a gosto
* do usuário, adotei com padrão quatro casas decimais, que para minhas
* necessidades atuais são suficientes.
* Aproveitem!!!
* }

program vetor;
uses crt;
var
i: integer;
opc:char;

{ Soma de Vetores }

procedure soma;
var
va,vb,vc: array[1..3] of real;

begin
clrscr;
writeln('OS DOIS VETORES DEVEM SER DA FORMA (A1,A2,A3) E (B1,B2,B3)');
writeln('PRESSIONE UMA TECLA PARA CONTINUAR');
readkey;
clrscr;
writeln('SOMA DE VETORES');
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE A',i);
read(va[i]); {A VARIAVEL VA[I] RECEBE OS COEFICIENTES DO VETEOR A INFORMADOS PELO USUARIO}
end; {AQUI E NECESSARIO INFORMAR QUE O COEFICIENTE DE I SEMPRE E SALVO NA POSICAO 1 DO VETOR EM OPERACAO, O DE J EM 2 E O DE K EM 3}
writeln('O VETOR INFORMADO EH:');
writeln('(',va[1]:4:4,', ',va[2]:4:4,', ',va[3]:4:4,')');
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE B',i);
read(vb[i]);{ESSE VETOR RECEBE OS COEFICIENTES DO VETOR B}
end;
writeln('O VETOR INFORMADO EH:');
writeln('(',vb[1]:4:4,', ',vb[2]:4:4,', ',vb[3]:4:4,')');
for i:=1 to 3 do
begin
vc[i]:= (va[i]+vb[i]); {NESSA LINHA EFETUA-SE O PROCESSAMENTO, O VETOR VC[I] RECEBE O RESULTADO DA SOMA DOS VETORES A E B}
end;
writeln;
writeln('O VETOR SOMA EH:');
writeln('(',vc[1]:4:4,', ',vc[2]:4:4,', ',vc[3]:4:4,')');
readkey;
end;

{ Multiplicação por Escalar }

procedure multiplicacao;
var
k: real;
va: array[1..3] of real;

begin
clrscr;
writeln('O VETOR DEVE SER DA FORMA (A1,A2,A3)');
writeln('PRESSIONE UMA TECLA PARA CONTINUAR');
readkey;
clrscr;
writeln('MULTIPLICACAO DE VETOR POR ESCALAR');
for i:=1 to 3 do
begin
writeln;
writeln('INFORME O COEFICIENTE A',i);
read(va[i]); {LEITURA DOS COEFICIENTES DE A}
end;
writeln('INSIRA O ESCALAR');
read(k); {A VARIAVEL K REPRESENTA O ESCALAR}
writeln('O VETOR EH INFORMADO EH:');
writeln('(',va[1]:4:4,', ',va[2]:4:4,', ',va[3]:4:4,')');
writeln;
writeln('O ESCALAR EH:', k:4:1);
writeln;
writeln('O VETOR RESULTANTE EH:');
writeln;
writeln('(',k*va[1]:4:4,', ',k*va[2]:4:4,', ',k*va[3]:4:4,')');
readkey;
end;

{ Produto Interno }

procedure interno;
var
va, vb, prod: array[1..3] of real;
soma:real;

begin
clrscr;
writeln('OS VETORES DEVEM SER DA FORMA: (A1,A2,A3) E (B1,B2,B3)');
writeln;
writeln('PRESSIONE UMA TECLA PARA CONTINUAR');
readkey;
clrscr;
writeln('PRODUTO INTERNO');
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE A',i);
read(va[i]); {LEITURA DOS COEFICIENTES DE A}
end;
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE B',i);
read(vb[i]); {LEITURA DOS COEFICIENTES DE B}
end;
writeln;
writeln('O VETOR A EH:');
writeln('(',va[1]:4:4,', ',va[2]:4:4,', ',va[3]:4:4,')');
writeln;
writeln('O VETOR B EH:');
writeln('(',vb[1]:4:4,', ',vb[2]:4:4,', ',vb[3]:4:4,')');
for i:=1 to 3 do
begin
prod[i]:=va[i]*vb[i];
end;
soma:=0;
for i:=1 to 3 do
begin
soma:= soma + prod[i];
end;
writeln;
writeln('O PRODUTO INTERNO ENTRE OS DOIS VETORES INFORMADOS EH:', soma:4:4); {A VARIAVEL INT RECEBE O RESULTADO DA OPERACAO}
readkey;
end;

{ Produto Vetorial }

procedure vetorial;
var
va,vb,vc: array[1..3] of real;

begin
clrscr;
writeln('OS VETORES DEVEM SER DA FORMA (A1,A2,A3) E (B1,B2,B3)');
writeln;
writeln('PRESSIONE UMA TECLA PARA CONTINUAR');
readkey;
clrscr;
writeln('PRODUTO VETORIAL');
writeln;
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE A',i);
read(va[i]); {LEITURA DOS COEFICIENTES DE A}
end;
writeln;
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE B',i);
read(vb[i]); {LEITURA DOS COEFICIENTES DE B}
end;
writeln('O VETOR A EH:');
writeln('(',va[1]:4:4,', ',va[2]:4:4,', ',va[3]:4:4,')');
writeln;
writeln('O VETOR B EH:');
writeln('(',vb[1]:4:4,', ',vb[2]:4:4,', ',vb[3]:4:4,')');
vc[1]:= (va[2]*vb[3] - vb[2]*va[3]); {O VETOR C RECEBE  O VETOR RESULTANTE DA OPERACAO}
vc[2]:= (va[3]*vb[1] - vb[3]*va[1]);
vc[3]:= (va[1]*vb[2] - vb[1]*va[2]);
writeln;
writeln('O PRODUTOR VETORIAL ENTRE A E B EH:');
writeln('(',vc[1]:4:4,', ',vc[2]:4:4,', ',vc[3]:4:4,')');
readkey;
end;

{ Produto Misto }

procedure misto;
var
va,vb,vc,vx,prod: array[1..3] of real;
soma: real;

begin
clrscr;
writeln('OS VETORES DEVEM SER DA FORMA (A1,A2,A3), (B1,B2,B3), (C1,C2,C3)');
writeln;
writeln('VALE RESSALTAR QUE PRIMEIRO SE CALCULA O PRODUTO VETORIAL DEPOIS O INTERNO');
writeln;
writeln('PRESSIONE UMA TECLA PARA CONTINUAR');
readkey;
clrscr;
writeln('PRODUTO MISTO');
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE A',i);
read(va[i]); {LEITURA DOS COEFICIENTES DE A}
end;
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE B',i);
read(vb[i]); {LEITURA DOS COEFICIENTES DE B}
end;
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE C',i);
read(vc[i]); {LEITURA DOS COEFICIENTES DE C}
end;
vx[1]:= (va[2]*vb[3] - vb[2]*va[3]); {PRODUTO VETORIAL}
vx[2]:= (va[3]*vb[1] - vb[3]*va[1]); {VX[I] RECEBE O RESULTADO DO PRODUTO VETORIAL}
vx[3]:= (va[1]*vb[2] - vb[1]*va[2]);
for i:=1 to 3 do
begin
prod[i]:=vx[i]*vc[i];
end;
soma:=0;
for i:=1 to 3 do
begin
soma:= soma + prod[i];
end;
writeln('O VETOR A EH:');                                        {RESULTADO DA OPERACAO}
writeln('(',va[1]:4:4,', ',va[2]:4:4,', ',va[3]:4:4,')');
writeln('O VETOR B EH:');
writeln('(',vb[1]:4:4,', ',vb[2]:4:4,', ',vb[3]:4:4,')');
writeln('O VETOR C EH:');
writeln('(',vc[1]:4:4,', ',vc[2]:4:4,', ',vc[3]:4:4,')');
writeln;
writeln('O PRODUTO MISTO ENTRE OS VETORES A,B E C EH:', soma:4:4);
readkey;
end;

{ Módulo de um Vetor }

procedure modulo;
var
va, vb: array[1..3] of real;
soma, modulo: real;

begin
clrscr;
writeln(' MODULO DE UM VETOR ');
writeln;
writeln(' O VETOR DEVE SER DA FORMA (a1,a2,a3) ');
for i:=1 to 3 do
begin
writeln;
writeln('INSIRA O COEFICIENTE A',i);
read(va[i]); {LEITURA DOS COEFICIENTES DE A}
end;
for i:=1 to 3 do
begin
vb[i]:=va[i]*va[i];
end;
soma:=0;
for i:=1 to 3 do
begin
soma:= soma + vb[i];
end;
modulo:= sqrt(soma);
writeln(' O MODULO DO VETOR INFORMADO E ', modulo:4:4);
readkey;
end;

{ Procedimento para Sair do Programa}

procedure sair;
begin
writeln;
writeln(' FINALIZANDO APLICATIVO ... ');
writeln;
end;

{ Programa Principal }

begin
repeat
clrscr;
writeln(' PARA UTILIZAR ESSE SOFTWARE, ESCOLHA A OPCAO DESEJADA, DIGITE O NUMERO CORRESPONDENTE E TECLE ENTER ');
writeln(' [1] SOMA DE DOIS VETORES ');
writeln(' [2] MULTIPLICACAO DE VETOR POR ESCALAR ');
writeln(' [3] PRODUTO INTERNO ENTRE DOIS VETORES ');
writeln(' [4] PRODUTO VETORIAL ');
writeln(' [5] PRODUTO MISTO ');
writeln(' [6] MODULO DE UM VETOR ');
writeln(' [7] SAIR ');
writeln(' OPCAO: ');
gotoxy(9,10);
read(opc);
case opc of
    '1': soma;
    '2': multiplicacao;
    '3': interno;
    '4': vetorial;
    '5': misto;
    '6': modulo;
    '7': sair;
end;
until ((opc='1000') or (opc='7'));
end.

DOWNLOAD: Clique aqui

Nenhum comentário: