ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Algoritmos ejercicios


Enviado por   •  20 de Agosto de 2015  •  Tarea  •  1.721 Palabras (7 Páginas)  •  115 Visitas

Página 1 de 7

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. 

...

Descargar como (para miembros actualizados) txt (12 Kb) pdf (150 Kb) docx (482 Kb)
Leer 6 páginas más »
Disponible sólo en Clubensayos.com