virtualword
Te invitamos a registrarte para poder acceder a todo el contenido gratuito que esta comunidad provee.

Saludos Wink

Soluciones lección 006

Ir abajo

Soluciones lección 006

Mensaje  Kyshuo Ayame el Jue Nov 14, 2013 6:09 pm

Soluciones seleccionadas para los ejercicios propuestos en la lección 6.

====================================================================================

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.
avatar
Kyshuo Ayame
Admin

Mensajes : 105
Fecha de inscripción : 14/11/2012
Edad : 29

Ver perfil de usuario http://virtualworld.foroargentina.net

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.