Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   suma de vectores en delphi (https://www.clubdelphi.com/foros/showthread.php?t=48834)

Rasecma 05-10-2007 00:57:20

suma de vectores en delphi
 
Alguien me puede ayudar, como sumar dos vectores en delphi, soy nuevo en delphi pero me gustaria aprender mucho mas. Ya se que este foro es para temas mucho mas importantes pero si no salgo de esta no se lo que pasa.

xEsk 05-10-2007 01:41:05

A qué te refieres con sumar 2 vectores? A estos vectores? A dos Arrays estáticos/dinámicos? Hehehe...

Especifica un poquitín más :P.

Saludos..

jhonny 05-10-2007 15:54:15

Si de pronto te refieres a la segunda opcion que te pone xEsk, puedes usar la siguiente función y/o adaptarla a tu necesidad:

Código Delphi [-]
function Sum(A: array of Integer);
var I: Integer;
begin
  Result := 0;
  for I := 0 to High(A) do
    Result := Result + A[i];
end;

Cita:

Empezado por Rasecma
Ya se que este foro es para temas mucho mas importantes pero si no salgo de esta no se lo que pasa.

Dejame decirte que en estos foros todos los temas son muy importantes :).

Delphius 05-10-2007 16:24:39

No es por querer hacer problemas... pero independientemente si se trata de sumar los vectores geométricos o los de la estructura de datos. La suma se procede igual.

Es decir que la solución de Jhonny es válida para ambos vectores.
Pues de hecho, la suma de los vectores geométricos se obtiene sumando cada elemento.
Es decir que la suma del vector v = (3,2,4) y u = (-1,3,0) da como resultado un vector w = (3 + (-1),2 + 3,4 + 0) = (2,5,4)

La idea de la programación de esto ya la ha aportado jhonny, aunque yo prefiero otra variante: en vez de usar como tipo de parámetro Array of... prefiero asignar un tipo definido. O incluso, algo mejor... porque no emplear ya los definidos en types: TXXXDynArray. Siendo XXX el tipo del contenido a almacenar. Por ejemplo TIntegerDynArray.

Código Delphi [-]
types
TVector = array of real;

procedure Suma(V1, V2: TVector; var V3: TVector);
var i, Tam1, Tam2: integer;
begin
  Tam1 := Length(V1);
  Tam2 := Length(V2);
  if (Tam1 = 0) OR (Tam2 = 0)
     then Exception.Create('Al menos un vector no existe');
  // También puede hacerse con la comparación
  // if (V1 = nil) OR (V2 = Nil)

  if (Tam1 = Tam2)
     then begin
            SetLength(V3,Tam1);
            for i := 0 to Tam1 - 1 do
              V3[i] := V1[i] + V2[i];
          end
     else Exception.Create('Las dimensiones no coinciden');
end;

Ha... antes que se me olvide, Bienvenido/a Rasecma a ClubDelphi.
Saludos,

dec 05-10-2007 16:51:05

Hola,

Estamos acercándonos peligrosamente a "_CopyObject()"... tened cuidado. :D :D :D

Delphius 05-10-2007 19:37:21

Cita:

Empezado por dec (Mensaje 236399)
Hola,

Estamos acercándonos peligrosamente a "_CopyObject()"... tened cuidado. :D :D :D

Creo que tienes razón:D:o:p
Ummm... si... puede que si se ponga peligroso:rolleyes::D

Saludos,


La franja horaria es GMT +2. Ahora son las 09:33:28.

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