Está en la página 1de 26

1. Haga un programa que dada una constante natural k, imprima los primeros k naturales.

1.Analisis
E:k(Un numero pequeño):bye;
S:y(k);
Ejemplo:
k=7 :> ¨1,2,3,4,5,6,7,¨;
2.Diseño:
p/
c=1;
Readln(k);
while (c<=k) do
{ writeln(c);
c=c+1;}
end_while
3. CODIGO PASCAL(en Lazarus)
program T1E1;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Classes
{ you can add units after this };

//Procedimientos y funciones
procedure constantek(var k:byte);
var c:byte;
begin
c:=1;
while (c<=k) do
begin
writeln(c);
c:=c+1;
end;
end;

//Programa principal
var n:byte;
begin
writeln('Escribir la cantidad de numeros que se muestren de k');
writeln('teniendo en cuenta que k= 123456789...');
readln(n);
constantek(n);
readln;
end.
2. Haga un programa que acepte como entrada un número natural ( n ) , e imprima los primeros n
naturales.
1.Analisis
E: n(Un numero pequeño): byte;
S: s(n1,n2,n3,...nn): byte;
Ejemplo:
n=6 => y=1,2,3,4,5,6,;
2.Diseño
p/
c=1;
Readln(n);
while (c<=n) do
{ writeln(c);
c=c+1;}
end_while
3.Implementacion

program P1E2;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Classes
{ you can add units after this };
//PROCESOS Y FUNCIONES

procedure primerosn(var y:byte);


var c:byte;
begin
c:=1;
while (c<=y) do
begin
writeln(c);
c:=c+1;
end;
end;

//Programa principal
var n:byte;
begin
writeln('Escribir un numero natural');
readln(n);
primerosn(n);
readln;
end.
3. Haga un programa que acepte como entrada un número natural ( n ), y calcule la suma de los
primeros n naturales.
1.Analisis
E: n(Un numero natural):Integer;
S: s(Un numero natural):Integer;
Ejemplo:
n=8 => s=1+2+3+4+5+6+7+8 =36
2.Diseño
n[f]=>s
p/
s=0;
suman(n:integer;):integer;
para i=1 hasta n
s=s+i;
i=i+1;
fin_para
S/writeln(s);
3.Implementacion
program P1E3;

//PROCESOS Y FUNCIONES

function suman(var n:Integer):Integer;


var s,i:integer;
begin

s:=0;
for i:=1 to n do
begin
s:=s+i;
end;
result:=s;

end;

//Programa principal
var n:Integer;
begin
writeln('Escriba un numero: ');
readln(n);
writeln('La suma de los primeros numeros del numero que escribio es :');
writeln(suman(n));
end.

4. Haga un programa que acepte como entrada un número natural ( n ), e imprima las n primeras letras
del alfabeto (1 <= n <= 26).
1.Análisis
E: n(Un numero natural pequeño):byte;
S:abc(Una cadena):string;
Ejermplo
n=12 => abc:abcdefghijkl
2.Diseño
n->[f]->abc
p/
leer n;
letra=’’;
abc=’’
para i=1 hasta n hacer
si (n>=1) y (n>=27) entonces
letra = Chr(n+96);
caso_contrario
escribit(‘el numero ingresado no esta en rango’)
fin_si
abc=abc+letra;
fin_para
3.Implementación
//PROCESOS Y FUNCIONES
function abecedario(n:Integer):String;
var letra:Char;
i:byte;
abc:String;
begin
letra:=#0;
abc:='';
for i:=1 to n do
begin
if (n>=1) and (n<=26) then
begin
letra:=Chr(i+96);
abc:=abc+letra;
end else
begin
abc:='El numero ingresado no estra en el rango.'
end;
end;
result:=abc;
end;
//PROGRAMA PRINCIPAL
var n:integer;
begin
writeln('Escriba un numero entre 1 y 26');
readln(n);
writeln('El numero ingresado convertido a letras del abecedario es: ');
writeln(abecedario(n));
end.
5. Haga un programa que acepte como entrada un número natural ( n ), si n es par imprima los n
primeros pares sino los n primeros impares.
1.Análisis
E:n(Un numero natural):Integer;
S:k,j(Numeros Naturales):Integer;
Ejemplo
n=7, k=>1,3,5,7,9,11,13
n=6, j=>2,4,6,8,10,12
2.Diseño
?->[p]->?
p/
j:=0;
k;=-1;
Para i=1 hasta n hacer
si (n MOD 2)=0 entonces
j=j+2;
S/j’ ,’;
caso_contrario
k:=k+2;
S/k’,’;
fin_si
fin_para
3.Implementacion
//PROCESOS Y FUNCIONES
procedure parimp(n:Integer);
var k,j,i:Integer;
begin
k:=-1;
j:=0;
for i:=1 to n do
begin
if (n MOD 2)=0 then
begin
j:=j+2;
writeln(j);
end else
begin
k:=k+2;
writeln(k);

end;
end;
end;

//PROGRAMA PRINCIPAL
var n:Integer;
begin
writeln('Escribir un numero natural');
readln(n);
if (n MOD 2)=0 then
begin
writeln('El numero ingresado es Par');
writeln('La suma de los primeros ',n,' pares es: ');
end else
begin
writeln('El numero ingresado es Impar');
writeln('La suma de los primeros ',n,' impares es: ');
end;
parimp(n);
end.
6. Haga un programa que acepte como entrada dos números NATURALES ( n y m ) y devuelva como
resultado el producto de n x m, pero simule la operación empleando la suma y no el producto.
1.Análisis
E:n,m(Numeros naturales):Integer;
S:p(Numeros Naturales):Integer;
Ejemplo
n=4 , m=5 : s=>20
Ejemplo=5+5+5+5=20
2.Diseño
n,m->[F]->p
F/
leer n;
leer m;
p:=0;
Para i=1 hasta n hacer
p:=p+m;
fin_para
S/ p;
3.Implementación
//PROCESOS Y FUNCIONES
function Procsum(n,m:Integer):Integer;
var i,p:Integer;
begin
p:=0;
for i:=1 to n do
begin
p:=p+m;
end;
result:=p;
end;
//PROGRAMA PRINCIPAL
var n,m:integer;
begin
writeln('Escriba un numero');
readln(n);
writeln('Escriba un numero');
readln(m);
writeln('El resultado de los dos numeros como producto es: ');
writeln(Procsum(n,m));
end.
7.Haga un programa que acepte como entrada dos números NATURALES ( n y m ) y devuelva como
resultado el cociente de n / m, pero simule la operación empleando la resta y no la división.
1.Análisis
E:n,m(Numeros Naturales):Integer;
S:d(Numero pequeño):Integer;
Ejemplo
n=20, m=5,...,d=20-5-5-5-5=> d=4
2.Diseño
n,m->[F]->d
p/
d=0;
para i=1 hasta m hacer
si m<=n entonces
n=n-m;
d=d+1;
fin_si
fin_para
3.Implementación
//PROCESOS Y FUNIONES
function cocirest(n,m:Integer):integer;
var i,d:Integer;
begin
d:=0;
for i:=1 to n do
begin
if m<=n then
begin
n:=n-m;
d:=d+1;
end;
end;
result:=d;
end;
//PROGRAMA PRINCIPAL
var n,m:Integer;
begin
writeln('Escriba el dividendo :');
readln(n);
writeln('Escriba el divisor :');
readln(m);
writeln('El cociente de la division es: ');
writeln(cocirest(n,m));
end.
8. Haga un programa que acepte como entrada dos números ENTEROS ( n y m ) y devuelva como
resultado el producto de n x m, pero simule la operación empleando la suma y no el producto. ¡ CON
SIGNO !

1.Análisis
E:n,m(Numeros naturales):Integer;
S:p(Numeros Naturales):Integer;
Ejemplo
n=4 , m=5 : s=>20
Ejemplo=5+5+5+5=20
2.Diseño
n,m->[F]->P
F/
leer n;
leer m;
x:=m*-1;
y:=n*-1;
p:=0;
si (n>0) y (m>0) then
begin
para i:=1 hasta n hacer
begin
p:=p+m;
end;
end;
si (n<0) y (m<0) hacer
begin
para i:=1 hasta y do
begin
p:=p+x;
end;
end;
si (n<0) y (m>0) hacer
begin
para i:=1 hasta m do
begin
p:=p+y*-1;
end;
end;
si (n>0) y (m<0) hacer
begin
para i:=1 hasta n do
begin
p:=p+x*-1;
end;
end;
s/ p;
end;
3.Implementación
/PROCESOS Y FUNCIONES
function Procsum2(n,m:Integer):Integer;
var y,x,i,p:Integer;
begin
p:=0;
x:=m*-1;
y:=n*-1;
if (n>0) and (m>0) then
begin
for i:=1 to n do
begin
p:=p+m;
end;
end;
if (n<0) and (m<0) then
begin
for i:=1 to y do
begin
p:=p+x;
end;
end;
if (n<0) and (m>0) then
begin
for i:=1 to m do
begin
p:=p+y*-1;
end;
end;
if (n>0) and (m<0) then
begin
for i:=1 to n do
begin
p:=p+x*-1;
end;
end;
result:=p;
end;
//PROGRAMA PRINCIPAL
var n,m:integer;
begin
writeln('Escriba un numero (n)');
readln(n);
writeln('Escriba un numero (m)');
readln(m);
writeln(Procsum2(n,m));
end.
9.Haga un programa que acepte como entrada dos números ENTEROS ( n y m ) y devuelva como
resultado el cociente de n / m, pero simule la operación empleando la resta y no la división. ¡ CON
SIGNO !
1.Análisis
E:m,m(Numeros enteros):Integer;
S:d2(Numero entero):Integer;
Ejemplo
n=-20, m=5,...,d2=-20+5+5+5+5=>d=-4
2.Diseño
n,m->0[f]->d2
p/
d2=0; naux=0; maux=0; signod=0; signon=0; signom=0;
si (n <=-1) o (m<=-1) entonces
naux=n*-1;
maux=m*-1;
caso_contrario
naux=n;
maux=m;
fin_si
para i=1 hasta naux hacer
si (maux<=naux;) entonces
si signod=Verdadero entonces
d2=d2+1;
caso_contrario
d2=d2-1;
fin_si
fin_si
naux=naux-maux;
fin_para
3.Implementación
//PROCESOS Y FUNCIONES
function cocirest2(n,m:Integer):Integer;
var d2,maux,naux,i:Integer;
signom,signon,signod:boolean; //signod=signo de la operacion, signom y signon=signos de m y n
begin
d2:=0; naux:=0; maux:=0; signom:=true; signon:=true; signod:=true;
if (n<=-1)then
begin
naux:=n*-1;
signon:=false;
end else
begin
naux:=n;
end;
if (m<=-1)then
begin
maux:=m*-1;
signom:=false;
end else
begin
maux:=m;
end;
if (signon <> signom) then
begin
signod:=False;
end;
for i:=1 to naux do
begin
if (maux<=naux) then
begin
if signod=True then
begin
d2:=d2+1;
end else
begin
d2:=d2-1;
end;
end;
naux:=naux-maux;
end;

result:=d2;
end;

//PROGRAMA PRINCIPAL
var n,m:Integer;
begin
writeln('Escriba el dividendo :');
readln(n);
writeln('Escriba el divisor :');
readln(m);
writeln('El cociente de la division es: ');
writeln(cocirest2(n,m));
end.

10. Haga un programa que acepte como entrada dos números NATURALES ( n y m ) y devuelva como
resultado n m empleando la multiplicación.
1.Análisis
E:n,m(Numeros naturales):Integer;
S:s(Numeros Naturales):Integer;
Ejemplo
n=6, m=5 : s=>30
ej=5*6=30
2.Diseño
n,m->[F]->P
F/
leer n;
leer m;
p:=0;
begin
p:=p+(n*m);
result:=p;
end.
3.Implementacion
//PROCESOS Y FUNCIONES
function Mult(n,m:Integer):Integer;
var p:Integer;
begin
p:=p+(n*m);
result:=p;
end;
//PROGRAMA PRINCIPAL
var n,m:integer;
begin
writeln('Escriba un numero');
readln(n);
writeln('Escriba un numero');
readln(m);
writeln(Mult(n,m));
end.

11. Haga un programa que acepte como entrada un número natural y devuelva como resultado n m
empleando la suma. ¿Puede emplear algo de lo ya hecho?
1.Análsis
E:n(Un numero natural):Integer;
S:mulsum(Un numero natural):Integer;
Ejemplo
n=5, mulsum=5+5+5+5+5=>mulsum=5
2.Diseño
n->[f]->mulsum
p/
para i=1 hasta n hacer
mulsum=mulsum +n;
fin_para
3.Implementación
//PROCESOS Y FUNCIONES
function mulsum(n:integer):Integer;
var i:Integer;
begin
mulsum:=0;
for i:=1 to n do
begin
mulsum:=mulsum+n;
end;
result:=mulsum;
end;
//PROGRAMA PRINCIPAL
var n:Integer;
begin
writeln('Escribir un numero n para sumarlo por si mismo n veces: ');
readln(n);
writeln('El numero ',n,'sumado por si mismo ',n,' veces es: ');
writeln(mulsum(n));
end.

12. Haga un programa que acepte como entrada dos números NATURALES ( n y b, con 2 < b <9 ) y
convierta el número n al correspondiente número en base b. Recuerde que un número puede
representarse con el siguiente polinomio:
n
S di ´ b
i-1 donde di es el i-ésimo dígito del número y b es la base.
I =1

1.Análisis
E:n(Un numero natural grande):Integer;
b(UN numero natural pequeño):byte;
S:base(Un numero natural grande):Integer;
Ejemplo
n=16, b=8, base=>20
2.Diseño
3.Implementación
//PROCESOS Y FUNCIONES
// Función para convertir un número decimal a una base específica
function DecimalToBase(n: Integer; b: Integer): Integer;
var
remainder, resultado, multiplier: Integer;
begin
resultado := 0;
multiplier := 1;

while n > 0 do
begin
remainder := n mod b;
resultado := resultado + (remainder * multiplier);
multiplier := multiplier * 10;
n := n div b;
end;

Result := resultado;
end;
//PROGRAMA PRINCIPAL
var
n, b, baseNumber: Integer;
begin
// Lectura de los números desde la entrada
Write('Ingrese el número (n): ');
ReadLn(n);

Write('Ingrese la base (b): ');


ReadLn(b);

// Verificación de restricciones
if (b <= 2) or (b >= 9) then
begin
WriteLn('La base (b) debe ser mayor que 2 y menor que 9.');
Exit;
end;

// Conversión y obtención del resultado


baseNumber := DecimalToBase(n, b);

// Impresión del resultado


WriteLn('El número ', n, ' en base ', b, ' es: ', baseNumber);
end.

13. Haga un programa que acepte como entrada tres caracteres, que deben ser algunos de los dígitos del
cero al nueve, y los convierta en el correspondiente número de tres dígitos y lo imprima. ( Ejemplo:
sean los caracteres 3, 7, 5; deben ser convertidos en el número 375 ).
1.Analisis
E:n,m,y (Numeros Naturales):Integer;
S: z(Numero Natural )::Integer,
Ejemplo
n:=2 ; m:=3 ; y:=5 d=>235
2.Diseño
n,m,y→[F]→z
leer n;
leer m;
leer y;
z:=n*10+m;
si n>0 Entoses
z:=z*10+y
fin_si
s/z;
3.Implementacion
//PROCESOS Y FUNCIONES
function junt(n,m,y:Integer):Integer;
var z:Integer;
begin
z:=(n*10)+m;
if n>0 then
begin
z:=(z*10)+y;
end ;
result:=z;
end;
//PROGRAMA PRINCIPAL
var n,m,y:integer;
begin
writeln('Escriba un numero mayor a cero y menor a 9');
readln(n);
writeln('Escriba un numero mayor a cero y menor a 9');
readln(m);
writeln('Escriba un numero mayor a cero y menor a 9');
readln(y);
writeln('El nuevo numero es : ');
writeln(junt(n,m,y));
end.

14. Haga un programa que acepte como entrada tres caracteres, que deben ser algunos de los dígitos del
cero al nueve, y opcionalmente un carácter que represente un signo ( + ó - ) y los convierta en el
correspondiente número de tres dígitos y lo imprima. ( Ejemplo: sean los caracteres + 3, 7, 5; deben ser
convertidos en el número +375 ) .
1.Análisis
E:a,b,c(Numeros naturales pequeños):Byte;
S:d(Un numero natural):Integer;
Ejemplo
a=8,b=6,c=2,s=-, =>d=-862
2.Diseño
a,b,c->[p]->s
p/
s=(a*100)+(b*10)+c;
3.Implementación
//PROCESOS Y FUNCIONES
procedure digitos3(s:char; a,b,c:byte);
var d:Integer;
begin
d:=0;
d:=(a*100)+(b*10)+c;
writeln(s+IntToStr(d));
end;
//PROGRAMA PRINCIPAL
var a,b,c:byte;
s:char;
begin
writeln('Escriba el signo (+ ó -) ');
readln(s);
writeln('Escriba el digito que será la sentésima: ');
readln(a);
writeln('Escriba el digito que será la décima: ');
readln(b);
writeln('Escriba el digito que será la unidad: ');
readln(c);
Writeln('El nuevo número sera: ');
digitos3(s,a,b,c);
end.

15. Haga un programa que acepte como entrada uno o más, pero no más de cinco caracteres, que deben
ser algunos de los dígitos del cero al nueve, y opcionalmente un carácter que represente un signo (+ ó -)
y los convierta en el correspondiente número y lo imprima. (Ejemplo: sean los caracteres - 1, 3, 0, 7, 5;
deben ser convertidos en el número -13075 ). Tenga en cuenta que el máximo entero es 32767 y el
menor - 32768.
1.Análisis
E:x.a,b,c,d,e(Numeros naturales pequeños):Byte;
S:z(Un numero natural):Integer;
Ejemplo
a=-9,b=6,c=2,d=3,e=1s=-, =>d=-96231
2.Diseño
a,b,c,d,e->[p]->s
p/
s=(a*10000)+(b*1000)+(c+100)+(d*10)+e;
3.Implementación
//PROCESOS Y FUNCIONES
procedure digitos5( x : byte ; s:char; a,b,c,d,e:byte);
var z:Integer;
begin
z:=0;
if x=1 then
begin
z:=z+a;
writeln(s+IntToStr(z));
end;
if x=2 then
begin
z:=(a*10)+b;
writeln(s+IntToStr(z));
end;
if x=3 then
begin
z:=(a*100)+(b*10)+c;
writeln(s+IntToStr(z));
end;
if x=4 then
begin
z:=(a*1000)+(b*100)+(c*10)+d;
writeln(s+IntToStr(z));
end;
if x=5 then
begin
z:=(a*10000)+(b*1000)+(c*100)+(d*10)+e;
writeln(s+IntToStr(z));
end;
end;
//PROGRAMA PRINCIPAL
var x,a,b,c,d,e:byte;
s:char;
begin
writeln('Escriba la cantidad de digittos que desea ingresar');
readln(x);
writeln('Escriba el signo (+ ó -) ');
readln(s);
if x=1 then
begin
writeln('Escriba el digito : ');
readln(a);
end;
if x=2 then
begin
writeln('Escriba el digito : ');
readln(a);
writeln('Escriba el digito : ');
readln(b);
end;
if x=3 then
begin
writeln('Escriba el digito : ');
readln(a);
writeln('Escriba el digito : ');
readln(b);
writeln('Escriba el digito : ');
readln(c);
end;
if x=4 then
begin
writeln('Escriba el digito : ');
readln(a);
writeln('Escriba el digito : ');
readln(b);
writeln('Escriba el digito : ');
readln(c);
writeln('Escriba el digito : ');
readln(d);
end;
if x=5 then
begin
writeln('Escriba el digito : ');
readln(a);
writeln('Escriba el digito : ');
readln(b);
writeln('Escriba el digito : ');
readln(c);
writeln('Escriba el digito : ');
readln(d);
writeln('Escriba el digito : ');
readln(e);
end;
Writeln('El nuevo número sera: ');
digitos5(x,s,a,b,c,d,e);
end.

16. Realice el programa de la calculadora para que puedan entrarse dos ENTEROS y un OPERADOR,
y devuelva el resultado de la operación.
1.Análisis
E:x,y(Numeros enteros):Integer;
op(Un caracter):char;
S:res(Un numero entero):Integer;
Ejemplo
x=20, y=5, op=* =>res100
2.Diseño
x,y,op->[p]->res
p/
res=0;
si (op=’+’) entonces
res=x+y;
fin_si
si (op=’-’) entonces
res=x-y;
fin_si
si(op=’*’) entonces
res=x*y;
fin_si
si (op=’/’) entonces
res=x/y;
fin_si
3.Implementación
//PROCESOS Y FUNCIONES
procedure calculadora(x,y:Integer; op:char);
var res:Integer;
begin
res:=0;
if (op = '+') then
res:=x+y;
if (op = '-') then
res:=x-y;
if(op ='*') then
res:=x*y;
if (op ='/') then
res:=x DIV y;
writeln(res);
end;
//PROGRAMA PRINCIPAL
var x,y:Integer; op:char;
begin
writeln('Escriba un numero: ');
readln(x);
writeln('Escriba otro numero: ');
readln(y);
writeln('+ = suma, - = resta, * = multiplicación, / = división');
writeln('Escriba un operador de los mostrados: ');
readln(op);
writeln('El resultado es: ');
calculadora(x,y,op);
end.
17.Modifique el programa de la calculadora para que puedan entrarse los números caracter a caracter,
no como tales. Decida cuántos dígitos soportará la calculadora, y de cuantos dígitos será el resultado.

18.Haga un programa que acepte como entrada un número natural ( n , donde 1<n < 2000 ) y lo
convierta en el correspondiente número romano.
1.Análisis
E:n(Un numero natural):Integer;
S:roma(Una cadena):String;
Ejemplo
n=40 => roma=XV
2.Diseño
constante
ROM arreglo[1..30] de cadena
‘I,....MMM’
mientras n>0 hacer
d= n MOD 10;
si d <> 0 entonces
r := ROM[d + ((c * 10) - c)] + r;
fin_si
c := c + 1;
m := m div 10;
fin_mientras
S/r

3.Implementación
// Constante
const ROM: array [1..30] of string = (
'I','II','III','IV','V','VI','VII','VIII','IX','X',
'XX','XXX','XL','L','LX','LXX','LXXX','XC','C','CC',
'CCC','CD','D','DC','DCC','DCCC','CM','M','MM','MMM'
);

// Función
function Romanos(n: Integer): string;
var
m,d, c: Byte;
r: String;
begin
r := '';
c := 0;
m:=n;
while m > 0 do
begin
d := m mod 10;
if d <> 0 then
begin
r := ROM[d + ((c * 10) - c)] + r;
end;
c := c + 1;
m := m div 10;
end;
Result := r;
end;

// Programa principal
var n: Integer;
begin
writeln('Escriba un número mayor de 0 y menor de 2000');
readln(n);
writeln(Romanos(n));
end.

19.Realizar un proceso que me convierta una fracción decimal ( 0.551 ) decimal a Binario.
1.Análisis
E:d(Un numero real):Real;
S:b(Un numero real):Real;
Ejemplo
d=0.625 =>b=0.101
2.Diseño
d->[f]->b
p/
3.Implementación
//PROCESOS Y FUNCIONES
function DecimalToBinary(decimal: Single): String;
var
parteEntera: Integer;
parteDecimal: Single;
resultado: String;
i,l: Integer;
begin
parteEntera := Trunc(decimal);
parteDecimal := Abs(decimal - parteEntera);
l:=length(FloatToStr(parteDecimal));
resultado := '';
while parteEntera > 0 do
begin
resultado := IntToStr(parteEntera mod 2) + resultado;
parteEntera := parteEntera div 2;
end;

if parteDecimal <> 0 then


begin
resultado := resultado + '.';

for i := 1 to l-2 do
begin
parteDecimal := parteDecimal * 2;
resultado := resultado + IntToStr(Trunc(parteDecimal));
parteDecimal := parteDecimal - Trunc(parteDecimal);
end;
end;

Result := resultado;
end;

//PROGRAMA PRINCIPAL

var
numeroDecimal: Single;
numeroBinario: String;
begin
// Lectura del número decimal desde la entrada
Write('Ingrese un número decimal: ');
ReadLn(numeroDecimal);

// Conversión del número decimal a binario


numeroBinario := DecimalToBinary(numeroDecimal);

// Impresión del resultado


WriteLn('El número ingresado en binario es: ', numeroBinario);
end.

20. Realizar un proceso que me convierta un número decimal ( 12.125 ) a Octal.


1.Análisis
E:d(Un numero real):Real;
S:o(Un numero real):Real;
Ejemplo
d=12.125 =>o=
2.Diseño
2.Diseño
d->[f]->o
p/
3.Diseño
//PROCESOS Y FUNCIONES
function DecimalToOctal(decimal: Single): String;
var
parteEntera: Integer;
parteDecimal: Single;
resultado: String;
i, l: Integer;
begin
parteEntera := Trunc(decimal);
parteDecimal := Abs(decimal - parteEntera);
l := 0;
resultado := '';

// Conversión de la parte entera a octal


while parteEntera > 0 do
begin
resultado := IntToStr(parteEntera mod 8) + resultado;
parteEntera := parteEntera div 8;
end;

// Si hay parte decimal, agregar el separador


if parteDecimal > 0 then
resultado := resultado + '.';

// Conversión de la parte decimal a octal


l := Length(resultado); // Longitud antes de la parte decimal
for i := 1 to 8 - l do // Asumiendo 8 dígitos después del punto decimal
begin
parteDecimal := parteDecimal * 8;
resultado := resultado + IntToStr(Trunc(parteDecimal));
parteDecimal := parteDecimal - Trunc(parteDecimal);
end;

Result := resultado;
end;

// PROGRAMA PRINCIPAL
var
numeroDecimal: Single;
numeroOctal: String;
begin
// Lectura del número decimal desde la entrada
Write('Ingrese un número decimal: ');
ReadLn(numeroDecimal);

// Conversión del número decimal a octal


numeroOctal := DecimalToOctal(numeroDecimal);
// Impresión del resultado
WriteLn('El número ingresado en octal es: ', numeroOctal,' tomando en cuenta que tiene una precision
de 8 decimales');
end.

21. Hallar los dos Mayores Dígitos de un número. C=3924112435 Primer Digito: 9 Segundo Digito:5
1.Análisis
E:n(Un numero grande):Integer;
S:k,j(Dos numeros pequeños):Byte;
Ejemplo
n=359 => k=9, j=5
2.Diseño
n->[p]->k,j
k,j:=-1;
mientras n>0 hacer
i= n MOD 10;
si i>=k entonces
j=k;
k=i;
fin_si
n=n DIV 10;
fin_mientras
S/j
S/k
3.Impentacion
//PROCESOS Y FUNCIONES
procedure DigitMay(n:Integer);
var k,j,i:Integer;
begin
k:=-1;
j:=-1;
while n>0 do
begin
i:=n mod 10;
if i>=k then
begin
j:=k;
k:=i;
end;
n:= n div 10;
end;
writeln ('El digito mayor es : ' ,k);
writeln ('El segundo digito mayor es : ' ,j);
end;

//PROGRAMA PRINCIPAL
var n:Integer;
begin
writeln('escriba un numero que tenga mas de dos digitos :');
readln (n);
DigitMay(n);
end.
22.Hallar los dos Menores Dígitos de un número. C=3924112435_Primer Digito: 1 Segundo Digito:2
1. Análisis
E:n(Un numero grande):Integer;
S:k,j(Dos numeros pequeños):Byte;
Ejemplo
n=385 =>k=3,j=5
2.Diseño
n->[p]->k,j
k,j:=10;
mientras n>0 hacer
i= n MOD 10;
si i<=k entonces
j=k;
k=i;
fin_si
n=n DIV 10;
fin_mientras
S/j
S/k
3.Implementación
//PROCESOS Y FUNCIONES
procedure DigitoMen(n:Integer);
var k,j,i:Integer;
begin
k:=10;
j:=10;
while n>0 do
begin
i:=n mod 10;
if i<=k then
begin
j:=k;
k:=i;
end
else if i<=j then
begin
j:=i;
end;
n:= n div 10;
end;
writeln ('El digito menor es : ' ,k);
writeln ('El segundo digito menor es : ' ,j);
end;
//PROGRAMA PRINCIPAL
var n:Integer;
begin
writeln('escriba un numero que tenga mas de dos digitos :');
readln (n);
DigitoMen(n);
end.

23. Realizar la unión de dos números enteros en un tercer de la siguiente manera: A=3924 B=112435
C=3924112435
1.Análisis
E:a,b(Numeros enteros):Intger;
S:c(Numero entero):Integer;
Ejemplo
a=233,b=4444 =>c=2334444

2.Diseño
a,b->[f]->c
p/
c=0; j=b;
repetir
c=c+1;
b=b div 10;
hasta (b=0)
para i=1 hasta c hacer
a=a*10;
a=a+j;
fin_para
S/a;
3.Implementación
//PROCESOS Y FUNCIONES

function Unir(var a,b:Integer):Integer;


var c,i,j:integer;
begin
c:=0;
j:=b;
repeat
c:=c+1;
b:= b div 10;
until b=0;
for i:=1 to c do
begin
a:=a*10;
end;
a:=a+j;
result:=a;

end;
//Programa principal
var a,b:Integer;
begin
writeln('Escriba un numero: ');
readln(a);
writeln('Escriba un numero: ');
readln(b);
writeln('La suma de los primeros numeros del numero que escribio es :');
writeln(Unir(a,b));
end.

También podría gustarte