Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 08-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Me he entretenido bastante para responder este post. Dejo aqui el resultado (en delphi)

Código Delphi [-]
unit vect;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type Vector = array of Extended;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function StringToVector(s : string) : Vector;
var
     ss : TStrings;
     i  : integer;
begin
     ss := TStringList.create;

     s := stringreplace(s,'(','',[]);
     s := stringreplace(s,')','',[]);

     ss.CommaText := s;
     setlength(result,ss.Count);

     for i := 0 to ss.Count - 1 do
     try
     result[i] := strtofloat(ss[i]);
     except
     ShowMessage('Error de formato en ' + s[i]);
     end;
end;

function ProductoEscalar(v1,v2 : Vector): extended;
var
     i : integer;
begin
     if length(v1) <> length(v2) then
     begin
          MessageDLG('Vectores de entrada de diferente dimension',mtError,[mbOK],0);
          exit;
     end;

     result := 0;
     for i := 0 to length(v1) - 1 do
     result := result + v1[i]*v2[i];
end;

function VectorToString(v : vector): string;
var
     i : integer;
begin
     result := '(';
     for i := 0 to Length(v) - 1 do
     result := result + ' ' + formatfloat('0.000',v[i]);

     result := result + ')';
end;

function ProductoVectorial(u,v : Vector) : vector;
begin
     if length(u) <> length(v) then
     begin
          MessageDLG('Vectores de entrada de diferente dimension',mtError,[mbOK],0);
          exit;
     end;

     if length(u) <> 3 then
     begin
          MessageDLG('Producto vectorial limitado a vectores en R³',mtError,[mbOk],0);
          exit;
     end;

     setlength(result,3);

     result[0] := u[1]*v[2] - u[2]*v[1];
     result[1] := u[0]*v[2] - u[2]*v[0];
     result[2] := u[0]*v[1] - u[1]*v[0];
end;

procedure TForm1.Button1Click(Sender: TObject);
var
     v1,v2 : Vector;
begin
     v1 := StringToVector(Edit1.Text);
     v2 := stringToVector(Edit2.Text);

     Label1.Caption := floattostr(ProductoEscalar(v1,v2));
     Label2.Caption := VectorToString(ProductoVectorial(v1,v2));
end;
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Controlar el teclado desde una aplicación delphi richy08 Varios 8 05-11-2008 23:19:13
vectores... mauriciofox Gráficos 0 25-02-2005 05:28:17
Lanzar programa desde mi programa Pablo Carlos API de Windows 32 09-09-2004 13:56:26
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36
Vectores,Asscii jorgito PHP 1 26-07-2004 20:00:08


La franja horaria es GMT +2. Ahora son las 20:18:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi