1
PROGRAMACION EN DELPHI
1) PROGRAMA SUMA CUBICA
Diseñar un programa que muestre una ventana con la primera cuaterna de números
(todos distintos) que satisfagan la siguiente ecuación:
a3 + b3 = c3 + d3 = N con a, b, c y d distintos
Resolución:
1. En el dialogo Open seleccionar el archivo Plantilla.DPR
2. Renombrar en la opción Save Project As… del menú File, con sCubica y luego
hacer clic en Guardar.
3. Se usaran anillos iterativos for…to...do de profundidad 4 para recorrer una serie
de valores para las variables a, b, c, d.
4. Se usara un interruptor del tipo lógico llamado hallado que se inicializara en
false y que cambiara a true en el momento en que se encuentre los primeros
números que verifiquen la ecuación y además que sean diferentes uno a uno.
5. Un programador necesita a veces salir (escapar) de un bucle o abandonar en
definitiva el programa. En el segundo de los casos el único modo adecuado es
utilizar una instrucción exit.
6. La cadena S es un acumulador, el cual se va construyendo mediante uniones de
cadenas. Aquí se utiliza frecuentemente:
1
S:=S+IntToStr(a)+#9+IntToStr(b)+#9+IntToStr(c)
+#9+IntToStr(d)+#9+IntToStr(c*Sqr(c)+d*Sqr(d));
ShowMessage(S);
hallado:=true;
if hallado then
exit
end
end.
El programa ejecutándose:
Var
a,b,c,d,i,r,n:Integer;
S,cad:string;
begin
n:=strtoint(InputBox('Numero de cuaternas',’n’,'1'));
S:='a'+#9+'b'+#9+'c'+#9+'d'+#9+'N'+#13;
i:=0;
r:=0;
for a:=1 to 100 do
for b:=1 to 100 do
for c:=1 to 100 do
for d:=1 to 100 do
if ((a*sqr(a)+b*sqr(b))=(c*Sqr(c)+d*Sqr(d))) then
if (a<>b) and (b<>c) and (c<>d) and (a<>c) and (a<>d) and (b<>d) then
2
begin
if r <> c*Sqr(c)+d*Sqr(d) then
begin
S:=S+IntToStr(a)+#9+IntToStr(b)+#9+IntToStr(c)+#9+IntToStr(d)+
#9+IntToStr(c*Sqr(c)+d*Sqr(d))+#13;
ShowMessage(S);
i:=i+1;
end;
r:=c*Sqr(c)+d*Sqr(d);
if i >= n then
exit
end;
end.
El programa ejecutándose:
Programa que calcula la moda y su frecuencia para una serie de n números. Así, para
n=16, si tenemos los datos:
1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 9, 9
Debe salir que la moda es 7 y su frecuencia es 4. Suponga que la lista esta está
ordenada ascendentemente y que se debe leer un valor cada vez y procesarlo.
Como sabemos, la moda de una serie de números es el valor que se repite con mas
frecuencia y el total de ocurrencias de este valor recibe el nombre de frecuencia.
program pModa;
3
uses
Dialogs,SysUtils;
Var
aux,num,frec,cont,i,n,moda:Integer;
begin
n:=StrToInt(InputBox('Moda','Total de Números','16'));
aux:=StrToInt(InputBox('Moda','Primer Número','1'));
frec:=0;cont:=1;
for i:=2 to n do
begin
num:=StrToInt(InputBox('Moda','Número '+IntToStr(i),'1'));
if aux=num then
cont:=cont +1
else
begin
if cont>=frec then
begin
frec:=cont;
moda:=aux
end ;
cont:=1;
aux:=num
end
end;
if cont>=frec then
begin
frec:=cont;
moda:=aux
end ;
ShowMessage('La moda es '+IntToStr(moda)+#13+
'Su frecuencia es '+IntToStr(frec))
end.
Programa ejecutándose:
4
Ejemplo aclaratorio:
Se quiere saber el número de hijos por matrimonio de un pueblo. Para este propósito,
se elige una muestra representativa de 50 matrimonios de ella. Se Obtienen los
siguientes datos:
2, 2, 4, 1, 3, 5, 3, 2, 1, 6, 3, 4, 1, 2, 0, 2, 3, 1, 7, 4, 2, 3, 0, 5, 1,
4, 3, 2, 4, 1, 5, 2, 1, 2, 4, 0, 3, 3, 2, 6, 1, 5, 4, 2, 0, 3, 2, 4, 3, 1
El numero total de datos se representa con una letra n. En nuestro ejemplo n = 50.
xi 0 1 2 3 4 5 6 7
fiC 4 9 12 10 8 4 2 1
4) PROGRAMA MEDIANA
5
m2 y la mitad de los elementos sean menores o iguales a m1 y m2 . Editar un programa
que acepte un arreglo de números y retorne la mediana de los números en el arreglo.
program Mediana;
uses
Dialogs,SysUtils;
Const
max=10;
type
TVector =array[1..max] of real;
Var
v: TVector;
p:integer;
procedure Leer (var v:TVector;p:integer);
var
i:integer;
begin
for i :=1 to p do
v[i]:=StrToFloat(InputBox('v['+IntToStr(i)+']','Ingrese valor','1'));
end; (* fin de leer *)
procedure Burbuja(var v:TVector;p:integer);
var
i, j :integer;
aux:real;
begin
for i :=1 to p-1 do
for j:=i+1 to p do
if v[i]>v[j] then
begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux
end;
end; (* fin de Mostrar *)
function Media(v:TVector;p:integer):real;
begin
if p mod 2=1 then
result:= v[(p div 2)+1]
else
result:= (v[p div 2]+v[(p div 2)+1])/2
end; (* fin de EsDD *)
Programa ejecutándose:
Programa ejecutándose:
11
7) PROGRAMA DISPOSICION
Desarrollar un programa que solicite un nombre (digamos, KARINA) y genere la
siguiente disposición.
KARINA
A N
R I
I R
N A
ANIRAK
program Disposicion;
uses
Dialogs,
Sysutils;
var
A: array[1..50,1..50] of string;
S,T: string;
i,j,n:integer;
begin
S:=InputBox('Ingrese su Nombre','Valor','KARINA');
n:=length(s);
for i:=1 to n do
begin
A[1,i]:=s[i];
A[i,1]:=s[i];
A[n,i]:=s[n+1-i];
A[i,n]:=s[n+1-i];
end;
for i:=1 to n do
begin
for j:=1 to n do
T:=T+A[i,j]+#9;
T:=T+#13;
end;
ShowMessage('Disposicion:'+#13+T)
end.
12
Programa ejecutandose:
13