Anda di halaman 1dari 13

Capt.

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:

#13 Produce un salto de línea (tecla Enter)


# 9 Produce un espaciado (tecla Tabuladora)
program sCubica;
uses
Dialogs,Sysutils;
Var
a,b,c,d:Integer;
hallado:Boolean;
S:string;
begin
hallado:=false;
S:='a'+#9+'b'+#9+'c'+#9+'d'+#9+'N'+#13;
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
begin

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:

2) PROGRAMA SUMA CUBICA


Diseñar un programa que muestre una ventana con las primeras n (valor que se ingresa
a través de un InputBox) cuaternas de números (todos distintos) que satisfagan la
siguiente ecuación:
a3 + b3 = c3 + d3 = N con a, b, c y d distintos
program sCubica;
uses
Dialogs,
Sysutils;

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:

3) PROGRAMA MODA DE UNA SERIE DE NUMEROS

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.

FRECUENCIA ABSOLUTA (Fi): La frecuencia absoluta es el numero de veces que


aparece un valor (xi) en los datos obtenidos. En nuestro ejemplo, la frecuencia absoluta
indica el numero de familias que tienen esa cantidad de hijos:

xi 0 1 2 3 4 5 6 7
fiC 4 9 12 10 8 4 2 1

La MODA: Es el valor numérico de mayor frecuencia absoluta ( fi). En nuestro ejemplo,


la moda es 7.

4) PROGRAMA MEDIANA

La mediana de un arreglo de números es el elemento m del arreglo, de tal forma que


la mitad de los números restantes en el arreglo son mayores o iguales a m y la mitad o
menos son menores o iguales a m, si el numero de elementos en el arreglo es impar. Si
el numero de elementos es par, la mediana es el promedio de los dos elementos m1 y

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 *)

procedure Mostrar (v:TVector;p:integer);


var
i:integer;S:string;
6
begin
for i :=1 to p do
S:=S+FloatToStr(v[i])+#9;
ShowMessage('El vector v'+#13+S+#13+'La mediana es: '+
FloatToStr(Media(v,p)))
end; (* fin de Mostrar *)
//programa principal
begin
p:=StrToInt(InputBox('v','Orden del vector','2'));
Leer(v,p);
Burbuja(v,p);
Mostrar(v,p);
end. (* fin de programa principal *)
El programa ejecutándose:

5) PROGRAMA DIAGONAL DOMINANTE


Diseñar un programa que determine si la matriz cuadrada ingresada es de diagonal
dominante.
program DiagDom;
uses
Dialogs,SysUtils;
const
max=10;
type
TMatriz =array[1..max,1..max] of real;
Var
a: TMatriz;
7
p:integer;
msg:string;
procedure Leer (var a:TMatriz;p:integer);
var
i, j :integer;
begin
for i :=1 to p do
for j:=1 to p do
a[i,j]:=StrToFloat(InputBox('A['+IntToStr(i)+','+IntToStr(j)+']','Ingrese
valor','1'));
end; (* fin de leer *)

procedure Mostrar (a:TMatriz;p:integer;msg:string);


var
i, j :integer;S:string;
begin
for i :=1 to p do
begin
for j:=1 to p do
S:=S+FloatToStr(a[i,j])+#9;
S:=S+#13
end;
ShowMessage('La matríz A '+msg+#13+S)
end; (* fin de Mostrar *)
function EsDD(var a:TMatriz;p:integer):boolean;
var
i,j,cont:integer;sum:real;
begin
for i :=1 to p do
begin
sum:=0;
for j:=1 to p do
if i<>j then
sum:=sum+abs(a[i,j]);
if a[i,i]>sum then
inc(cont);
end;
if cont=p then
EsDD:=false
else
EsDD:=true
end; (* fin de EsDD *)
//programa principal
begin
p:=StrToInt(InputBox('A','Orden de la matriz','2'));
8
Leer(A,p);
if EsDD(A,p) then
msg:=' es de diagonal dominante'
else
msg:=' no es de diagonal dominante';
Mostrar(A,p,msg);
end. (* fin de programa *)

Programa ejecutándose:

6) PROGRAMA SUMA Y PRODUCTO DE MATRICES


Elaborar un programa que solicite dos matrices rectangulares y obtenga tanto la matriz
suma como la matriz producto.
program prodmat;
uses
Dialogs,SysUtils;
Const
max=10;
9
type
TMatriz =array[1..max,1..max] of real;
Var
a,b,c: TMatriz;
p,q,r,s :integer;
procedure leer (m:string;var a:TMatriz;p,q:integer);
var
i, j :integer;
begin
for i :=1 to p do
for j:=1 to q do
a[i,j]:=StrToFloat(InputBox(m+'['+IntToStr(i)+','+IntToStr(j)+']','Ingrese
valor','1'));
end; (* fin de leer *)
procedure Mostrar (m:string;a:TMatriz;p,q:integer);
var
i, j :integer;S:string;
begin
for i :=1 to p do
begin
for j:=1 to q do
S:=S+FloatToStr(a[i,j])+#9;
S:=S+#13
end;
ShowMessage('Matríz '+m+#13+S)
end; (* fin de Mostrar *)
procedure Calcular(var a,b,c:TMatriz;p,q,r,s:integer);
var
i,j,k:integer;
sum:real;
begin
if (p=r) and (q=s) then
begin
for i :=1 to p do
for j:=1 to q do
c[i,j]:=a[i,j]+b[i,j];
Mostrar('A+B=',c,p,q);
end
else
ShowMessage('No existe matríz suma');
if q=r then
begin
for i :=1 to p do
for j:=1 to s do
begin
10
sum:=0;
for k:=1 to q do
sum:=sum+a[i,k]*b[k,j];
c[i,j]:=sum
end;
Mostrar('A.B=',c,p,s);
end
else
ShowMessage('No existe matríz producto')
end; (* fin de Mostrar *)

begin (* bloque principal *)


p:=StrToInt(InputBox('Filas','Orden de la matriz A','2'));
q:=StrToInt(InputBox('Columnas','Orden de la matriz A','3'));
r:=StrToInt(InputBox('Filas','Orden de la matriz B','3'));
s:=StrToInt(InputBox('Columnas','Orden de la matriz B','4'));
Leer('A',A,p,q);
Leer('B',B,r,s);
Calcular(A,B,C,p,q,r,s);
end. (* fin de programa *)

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

Anda mungkin juga menyukai