Algoritmos ejercicios
Enviado por fredobregon • 20 de Agosto de 2015 • Tarea • 1.721 Palabras (7 Páginas) • 111 Visitas
EJERCICIO 1
Desarrollar un algoritmo que calcule el volumen de aire que contiene una pelota, perfectamente esférica:
ANALISIS
DE(datos de entrada): Radio de la esfera
DS(datos de salida): Volumen de la esfera
Debo saber que: Volumen= 4/3 * PI * radio^3
DISEÑO
Algoritmo Vesfera
Léxico
Radio, volumen : R
Inicio
Escribir ("ingrese el valor del radio de la esfera" )
Leer (Radio)
Volumen ← 4/3 * π * radio^3
Escribir ("El volumen de la esfera es", Volumen)
Fin
PASCAL
Program Ejuno;
Var Radio, Volumen, Con , con2 : Real;
Begin
Con := 3.14;
Con2:= 3/4;
Writeln ('Ingrese el valor del radio de la esfera');
Readln (Radio);
Volumen := Radio*Radio*Radio*con*con2;
Writeln ('El volumen de la esfera es', Volumen);
End.
EJERCICIO 2
Desarrollar un algoritmo que convierta un numero de segundos en su equivalente en minutos y segundos. Por ejemplo dado 1300 segundos el algoritmo deberá calcular 21 minutos 40 segundos..
ANALISIS
DE: Segundos transcurridos
DS: Su equivalente en Min-Seg
Debo saber que: El DIV me devuelve el valor entero de la división, y el MOD su resto.
DISEÑO
Algoritmo
Léxico
seg, seg2, min : Z
Inicio
Escribir ("Ingrese segundos" )
Leer (seg)
min ← seg div 60
seg ← seg mod 60
Escribir (" Los minutos y segundos equivalentes son " min "y" seg)
Fin
PASCAL
Program Minseg;
Uses crt;
Var
seg, seg2, min : Integer;
Begin
Clrscr;
Writeln ('Ingrese segundos');
Readln (seg);
min:= seg div 60;
seg2:= seg mod 60;
Writeln ('El equivalente en minutos y segundos es ', min, ' minutos ',seg2,' segundos');
End.
EJERCICIO 3
Desarrollar un algoritmo que encuentre el máximo entre 3 números:
FORMULA máximo entre dos números---> Máximo = ((a+b)+abs (a-b))/2
ANALISIS
DE: Tres números reales
DS: 1 Numero real
Debo saber que: Máximo = ((a+b)+abs (a-b))/2
DISEÑO
Algoritmo Maximo;
Léxico
a,b,c,max,maximo : R
Inicio
Escribir (“Ingrese tres números”)
Leer (a,b,c)
max ← ((a+b)+abs(a-b))/2
maximo ← ((max + c) + abs (a-b))/2
Escribir (“El máximo es”, maximo)
Fin
PASCAL
Program Maximi;
var
a,b,c,max,maximo : Real;
begin
Writeln ('Ingrese tres numeros');
Readln (a);
Readln (b);
Readln (c);
max:=((a+b)+abs(a-b))/2;
maximo:= ((max + c) + abs (max - c))/2;
Writeln ('El maximo es', maximo:10:2);
End.
EJERCICIO 4
Desarrollar un algoritmo que detecte si un numero dado es positivo o negativo.
ANALISIS
DE: un numero real
DS: Un mensaje afirmativo si el numero es negativo
DISEÑO
Algoritmo Negativo
Lexico
a : R
Inicio
Escribir(“Ingrese un numero”)
Leer (a)
Si a >= 0 entonces
Escribir (“El numero es negativo”)
Sino
Escribir (“Es positivo”)
Fin
PASCAL
Program Negative;
Uses crt;
Var
a:real;
Begin
clrscr;
Writeln ('Ingrese un numero');
Readln (a);
If a<=0 then
Writeln ('El numero es negativo')
else
Writeln ('POSITIVO');
End.
EJERCICIO 5
Elaborar un algoritmo que lea dos números desde el teclado y si el primero es mayor que el segundo, intercambie sus valores.
ANÁLISIS
DE:dos números reales
DS:dos números reales
Debo saber que: En este caso debemos intercambiar los valores SIN utilizar ningun tipo de variable auxiliar.
DISEÑO
Algoritmo Intercambiar
Léxico
a,b : R
Inicio
Escribir (“Ingrese dos numero”)
Leer (a,b)
Si a>b entonces
a ← a+b
b ← a-b
a ← a-b
Escribir (“Los números ingresados intercambiados son”,a “y”, b)
Fin
PASCAL
program Intercambiar;
Uses crt;
Var
a,b : Real;
Begin
clrscr;
Writeln ('Ingrese dos numeros');
Readln (a);
Readln (b);
If a>b then
a := a+b;
b := a-b;
a := a-b;
Writeln ('Los valores intercambiados son ', a:10:2 , ' y ', b:10:2);
End.
EJERCICIO 6
Desarrollar un algoritmo que detecte si se han introducido tres numeros en orden creciente.
ANALISIS
DE: tres numeros reales
DS: Un mensaje afirmativo si los numeros fueron ingresados en forma creciente.
DISEÑO
Algoritmo creciente
Léxico
a,b,c : R
Inicio
Escribir (“Ingrese tres números”)
Leer (a,b,c)
Si a < b < c entonces
Escribir (“Los números fueron ingresados en orden creciente”)
sino
Escribir (“No”)
Fin
PASCAL
program creciente;
Uses crt;
var
a,b,c : Real;
begin
clrscr;
Writeln ('Ingrese tres numeros');
Readln (a);
Readln (b);
Readln (c);
If (a < b) and (b< c) then
Writeln ('Los numeros fueron ingresados en orden creciente')
else
Writeln ('No');
End.
EJERCICIO 7
Desarrollar un algoritmo que lea desde el teclado el importe bruto de una factura y determine el importe neto según los siguientes criterios:
-Importe bruto menor a 20.000 → Sin descuento
-Importe bruto mayor a 20.000 → 15% de descuento
ANALISIS
DE: un numero real
DS: un numero real
Debo saber que:
-Importe bruto menor a 20.000 → Sin descuento
-Importe bruto mayor a 20.000 → 15% de descuento
DISEÑO
Algoritmo Importe
Léxico
importe:R
Inicio
Escribir (“Ingrese el importe bruto”)
Leer (importe);
Si importe > 20.000 entonces
importe ← importe + (importe * 0,15)
Escribir (“El importe mas el descuento es”, importe)
sino
importe ← importe
Escribir (“No hay descuento el importe es”, importe)
Fin
PASCAL
Program Impor;
Uses crt;
var
importe:Real;
Begin
clrscr;
Writeln ('Ingrese el importe bruto');
Readln (importe);
If importe >= 20000 then
importe := importe - (importe * 0.15);
Writeln ('El importe mas el descuento es', importe:10:2);
If importe < 20000 then
Writeln ('El importe sin descuento es', importe:10:2);
End.
EJERCICIO 8
Desarrollar un algoritmo que una vez leída una Fecha en formato dd/mm/aaaa, indique cual sera la fecha un día después.
ANALISIS
DE: 3 variables correspondientes a dd mm y aaaa
DS: 3 variables, correspondientes a dd mm y aaaa pero un dia despues
PASCAL
Program gdosEjentr;
Var
Mes31, Mes30, Mes28, Mes12, aniobisiesto : Boolean;
dia, mes, anio : integer;
Begin
{Pre-Condicion: Dia > 0, mes > 0, anio > 0}
Writeln ('Ingrese el dia mes y año en formato dd / mm / aaaa');
Readln (dia);
Readln (mes);
Readln (anio);
Mes31 := (mes= 01) or (mes= 03) or (mes= 05) or (mes= 07) or(mes= 08) or(mes= 10);
Mes30 := (mes=04) or (mes=06) or (mes=09) or (mes=11);
Mes28 := (mes=02);
Mes12 := (mes=12);
Aniobisiesto := ((anio mod 4 =0) and (anio mod 100 <> 0)) or (anio mod 400=0);
If (dia < 31) and (mes31) then
Begin
dia := dia+1;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
else begin
If ( dia < 30) and (mes30) then
Begin
dia := dia+01;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
else begin
If (dia < 28) and (mes28) then
Begin
dia := dia+1;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
else begin
If (dia =31) and (mes31) then
Begin
dia := 01;
mes := mes +1;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
else begin
If (dia = 30) and (mes30) then
Begin
dia := 01;
mes := mes +1;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
else begin
If (dia = 28) and (mes28) and (Aniobisiesto) then
Begin
dia:= dia +1;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
else begin
If (dia = 31) and ( mes12) then
Begin
dia:= 01;
mes:= 01;
anio:= anio +1;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
else begin
If (dia < 31) and (mes12) then
Begin
dia:= dia +1;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
else begin
If (dia = 28) and (mes28) then
Begin
dia := 01;
mes := mes +1;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
else begin
If (dia = 29) and (mes28) and (Aniobisiesto) then
Begin
dia := 01;
mes := mes +1;
Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)
End
Else begin
Writeln ('La fecha ingresada no es valida, ingrese otra');
End;
End;
End;
End;
End;
End;
End;
End;
End;
End;
{Post-Condicion : Si (dia < 31) ^ (mes31) entonces dia, mes, anio: Resultado0
Si (dia < 30) ^ (mes30) entonces dia, mes, anio: Resultado1
Si (dia < 28) ^ (mes28) entonces dia, mes, anio: Resultado2
Si (dia = 31) ^ (mes31) entonces dia, mes, anio: Resultado3
Si (dia = 30) ^ (mes30) entonces dia, mes, anio: Resultado4
Si (dia = 28) ^ (mes28) ^ (aniobisiesto) entonces dia, mes, anio: Resultado5
Si (dia = 31) ^ (mes12) entonces dia, mes, anio: Resultado6
Si (dia < 31) ^ (mes12) entonces dia, mes, anio: Resultado7
Si (dia = 28) ^ (mes28) entonces dia, mes, anio: Resultado8
Si (dia = 29) ^ (mes28) ^ (Aniobisiesto) entonces dia, mes, anio: Resultado9
Sino La fecha ingresada es invalida}
End.
EJERCICIO 9
Desarrollar una función que permita encontrar el máximo y otra el mínimo entre 4 números reales
DISEÑO
Funcion Máximo (dato a,b,c,d : R ) → R
Lexico local
max,maxi:R
Inicio
max:= ((a+b)+abs(a-b))/2
maxi:=((max+c)+abs(max-c))/2
← ((maxi+d)+abs(maxi-d))/2
Fin
Función Mínimo (dato a,b,c,d :R) → R
Inicio
Si a
← a
sino
si b
← b
sino
si c
← c
sino
si d
← d
Fin
PASCAL
Esta es la funcion, ATENCIóN ESTE CASO ESTA TRADUCIDA SOLAMENTE LA FUNCION POR LO QUE FALTA UNA PARTE; QUE SERIA EL DISEÑO DE EL ALGORIMO QUE VA A TENER LA FUNCION DENTRO DEL LEXICO O VAR. DE ESTA FORMA NO LES VA A COMPILAR..
Function Maximo (a,b,c,d :Real): Real;
var max, maxi :R;
Begin
max:= ((a+b)+abs(a-b))/2;
maxi:=((max+c)+abs(max-c))/2;
Maximo := ((maxi+d)+abs(maxi-d))/2;
End.
Funcion MINIMO:
Function Minimo (a,b,c,d :Real):Real;
Begin
If a
Minimo:= a;
If b
Minimo:= b;
If c
Minimo:= c;
If d
Minimo:= d;
End.
EJERCICIO 10
Desarrollar un algoritmo que permita visualizar los numeros pares entre 1 y 25
DISEÑO
Algoritmo Paresentre
Lexico
Inicio
repetir
Si i mod 2 =0 entonces
Escribir (i)
i ← i+1;
Hasta (i=25)
Fin
PASCAL
Program Paresentre;
Var i: integer;
Begin
i:=1;
Repeat
If (i mod 2) = 0 then
begin
Writeln (i);
End;
i := i+1;
Until (i=25);
End.
EJERCICIO 10
Desarrollar un algoritmo que CALCULE EL MCM Y MCD de dos numeros:
PASCAL
Program MCMMCD;
Uses crt;
Var
a,b,a2,b2,MCM :real;
Begin
clrscr;
Repeat
Writeln ('Ingrese dos numeros');
Readln (a);
Readln (b);
until (a>0) and (b>0);
a2:=a; {Almaceno las variables para no perder el valor inicial,
esto es para calcular el mcm}
b2:=b;
repeat
If a>b then
Begin
a:=a-b;
b:=b;
end;
If a
Begin
a:=a+b;
b:=a-b;
a:=a-b;
end;
Until (a=b);
Writeln ('El MCD entre los numeros es ', a:10:1);
MCM:=a2*b2/a; {El calculo del MCM se puede realizar haciendo
el producto de a * b y dividiendolo por el mcd}
Writeln ('El MCM entre los numeros es ', MCM:10:1);
End.
...