Soluciones lección 006
Página 1 de 1.
Soluciones lección 006
Soluciones seleccionadas para los ejercicios propuestos en la lección 6.
====================================================================================
Solución Ejercicio 11:
Solución del ejercicio 12:
Solución del ejercicio 15:
====================================================================================
Solución Ejercicio 11:
- Código:
(*
* Nota: los tildes han sido omitidos por razones de compatibilidad
* con el compilador.
Solucion elaborada por docentes de Programacion 1.
------
Descripcion:
Programa que calcula la solucion de un sistema de ecuaciones lineales
ax + by = c
dx + ey = f
mediante la aplicacion de la regla de Cramer. A partir de los datos
ingresados, el programa calcula el determinante de la matriz de
coeficientes del sistema a efectos de determinar si el sistema tiene
solucion o no. En caso afirmativo, la calcula y en caso negativo,
emite un mensaje indicando esta situacion
-------
*)
program cramer (input,output);
var
a,b,c,d,e,f : Real;
x,y : Real;
determinante : Real;
begin
(* Ingreso de los datos *)
write('Ingrese los cuatro coeficientes: ');
read(a,b,d,e);
write('Ingrese los dos terminos independientes: ');
read(c,f);
(* Calculo del determinante *)
determinante := a*e - d*b;
(* analisis de las soluciones *)
if determinante = 0 then
(* No hay solucion *)
writeln('El sistema no tiene solucion')
else
begin
(* calcular soluciones *)
x := (c*e - f*b)/determinante;
y := (a*f - d*c)/determinante;
(* mostrar resultados *)
writeln('La solucion es:');
writeln('x =',x:6:2);
writeln('y =',y:6:2)
end
end.
Solución del ejercicio 12:
- Código:
------
Descripcion:
Programa que calcula el costo de enviar una carta por correo
dependiendo del peso de la carta. El programa recibe el peso de la
carta digitado por el usuario y como resultado despliega el peso
ingresado junto con el costo de enviar la carta. En la solucion se
distinguen dos grandes casos posibles: Que el peso de la carta sea un
numero entero o que sea un numero real. Dependiendo del caso se
determina la forma de calcular el costo segun las especificaciones
dadas en la letra.
-------
*)
(* Precondicion: El valor ingresado es no negativo. *)
program CostoCarta (input,output);
(*
Constantes que representan al costo base y al costo por onza adicional
Se usan asi pues su valor permanece incambiado durante todo el programa
*)
const base = 0.22;
onza = 0.17;
var peso,costo: Real;
begin
(* Ingreso de los datos *)
write('Ingrese el peso de la carta: ');
read(peso);
(* Calculo del costo *)
if trunc(peso) = peso then
(* Si el peso es un numero entero *)
costo := base + (peso-1)*onza
else
(* Si el peso es un numero real *)
costo := base + trunc(peso)*onza;
(* mostrar resultados *)
writeln('peso costo');
writeln(peso:4:2,' $',costo:4:2)
end.
Solución del ejercicio 15:
- Código:
------
Descripcion:
Programa que lee de la entrada estandar un numero en notacion
hexadecimal de exactamente cuatro digitos y luego calcula y despliega
su equivalente en notacion decimal en la salida estandar.
Dado que pascal solamente permite leer desde teclado valores en
notacion decimal vamos a leer el numero como una cadena de cuatro
caracteres. Luego transformaremos cada uno de los cuatro caracteres a
su valor hexadecimal correspondiente, mediante el uso de la funcion
estandar ord y algunos calculos auxiliares. Hecho esto, vamos a
aplicar la formula dada en la letra para convertir el numero
hexadecimal en su equivalente decimal
Dado que cada digito puede tomar 16 valores posibles, utilizaremos
estructuras de seleccion multiple (CASE) para discriminar los casos
posibles al hacer la conversion de cada caracter a su correspondiente
valor entero
-------
*)
(* Precondicion: El valor ingresado tiene exactamente cuatro digitos *)
program HexaDecimal (input,output);
var a,b,c,d : Char;
x,y,z,t : Integer;
decimal : Integer;
begin
write('Ingrese un numero hexadecimal de cuatro digitos: ');
(* Leo cada digito del numero como un caracter *)
read(a,b,c,d);
(* transformo cada uno de los cuatro caracteres leidos al valor
entero que le corresponde en notacion hexadecimal
*)
case a of
'0'..'9' : x := ord(a) - ord('0');
'A'..'F' : x := ord(a) - ord('A') + 10;
end;
case b of
'0'..'9' : y := ord(b) - ord('0');
'A'..'F' : y := ord(b) - ord('A') + 10;
end;
case c of
'0'..'9' : z := ord(c) - ord('0');
'A'..'F' : z := ord(c) - ord('A') + 10;
end;
case d of
'0'..'9' : t := ord(d) - ord('0');
'A'..'F' : t := ord(d) - ord('A') + 10;
end;
(* calculo el decimal correspondiente y despliego el resultado *)
decimal := x*16*sqr(16) + y*sqr(16) + z*16 + t;
writeln('El equivalente decimal es: ',decimal);
end.
Temas similares
» Soluciones lección 011
» Soluciones lección 005
» Soluciones lección 021
» Soluciones lección 007
» Soluciones lección 009
» Soluciones lección 005
» Soluciones lección 021
» Soluciones lección 007
» Soluciones lección 009
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.