Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-06-2006
bpesoj bpesoj is offline
Registrado
 
Registrado: dic 2004
Posts: 9
Poder: 0
bpesoj Va por buen camino
Hola, galmacland.

Creo que este código hace lo que indicas:

El uso del tipo double es por si el valor del factorial se hace mayor que
el mayor valor admitido a un entero.

Function Factorial(n:Integer): Double;
var
k:Integer;
f: Double;
begin
f:=1;
for k:=1 to n do
f:=f*k;
Result:=f;
end;

procedure Calcular;
var
m1:Array[0..9] of integer;
m2:Array[0..9] of Double;
k:Integer;
begin
for k:=0 to 9 do
begin
m1[k]:=k;
m2[k]:=Factorial(k);
end;
end;

Saludos.
Responder Con Cita
  #2  
Antiguo 18-06-2006
galmacland galmacland is offline
Miembro
 
Registrado: nov 2004
Posts: 48
Poder: 0
galmacland Va por buen camino
Graciaspor tu ayuda, se como hacerlo con funciones, el caso es que no me funciona usando las 2 matrices, sin usar las funciones, el caso es que es un manual con ejercicios y no ha llegado a la parte de las funciones....
Responder Con Cita
  #3  
Antiguo 18-06-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Código Delphi [-]
program factorial; var
i,i:Integer; f : Double; m1 : Array[0..9] of integer; m2 : Array[0..9] of Double;
begin
for i:=0 to 9 do
begin
m1[i]:=i;
end;
for i:=0 to 9 do
begin
m2[j]:=1; for j:=0 to m1[i] do
m2[j]:=m2[j]*j;
end;
end;


supongo que algo asi te podria funcionar, no lo he provado pero me parece que si funciona. Aunque creo que por el hecho de iniciar de "0" es posible que todos los resultados sena "0"

saludos.
Responder Con Cita
  #4  
Antiguo 18-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
No lo probe pero deberia ser algo asi:
Código Delphi [-]
var
  i: integer;
  m1, m2: array[1..10] of Cardinal;
begin
  m1[1]:= 1;
  m2[1]:= 1;
  for i:= 2 to 10 do
  begin
     m1[i]:= i;
     m2[i]:= m2[i-1] * i;
  end;
end;

Última edición por seoane fecha: 18-06-2006 a las 02:21:37.
Responder Con Cita
  #5  
Antiguo 18-06-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
galmacland:
Cita:
en la primera se almacenen los 10 primeros numeros naturales, empezando desde 0
Veo q no se ha tomado en cuenta el "0" y q su factorial es 1
Modificando el código de seoane
Código Delphi [-]
var
  i: integer;
  m1, m2: array[0..10] of Cardinal;
begin
  for i:= 0 to 10 do
  begin
     m1[i]:= i;
     m2[i]:=1;
     if(i>1)then
       m2[i]:= m2[i-1] * i;
  end;
end;
//Nota: No lo he probado
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).

Última edición por OSKR fecha: 18-06-2006 a las 17:04:53.
Responder Con Cita
  #6  
Antiguo 18-06-2006
Innovacl Innovacl is offline
Registrado
 
Registrado: jun 2006
Posts: 6
Poder: 0
Innovacl Va por buen camino
Thumbs up

Una pequeña modificación al algoritmo de galmacland

var
i: integer;
m1, m2: array[0..10] of Cardinal;
begin
m1[0]:=0;
m2[0]:=1;
for i:= 1 to 10 do
begin
m1[i]:= i;
m2[i]:= m2[i-1] * i;
end
end;

... no requiere el if y ahorra un ciclo. Con recursividad es un poco más elegante.
Responder Con Cita
  #7  
Antiguo 18-06-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
Innovacl:
Cita:
no requiere el if y ahorra un ciclo
Pues si...aunqe reqiere 2 instrucciones mas y además el algoritmo es de seoane.
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
Respuesta



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
Como logro consultas desde clientdatset y SqlQuery Arturo Conexión con bases de datos 0 22-05-2006 16:41:09
que necesito resolver problema. evgoab SQL 5 12-03-2005 02:19:53
no logro ver datos reales de una bd de informix picapica Conexión con bases de datos 0 08-12-2004 22:27:52
Como logro la suma por grupo alcides SQL 2 19-07-2004 21:11:06
No logro que funcionen un FOREIGN KEY orfeo MySQL 2 16-07-2003 19:52:58


La franja horaria es GMT +2. Ahora son las 05:47:33.


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