FECHAS [Foros-FIUBA::Wiki]
[[FECHAS]]
 
FECHAS

El programa permite calcular la diferencia entre dos fechas, expresando la misma en años, meses y dias.
Tiene un error cuando el dia de salida es en el mes de febrero.

{Seccion declarativa}
 
program Fechas;
{programa que calcula el tiempo entre dos fechas}
{expresado en dias, meses y años}
{permite controlar cuanto tiempo trabajo un empleado}
 
{definicion de recursos}
 
uses
 
crt,dos;
 
 
var
di,mi,ai,de,me,ae:integer; {dia, mes y año de ingreso/egreso}
dt,mt,at:integer; {dias, meses y años trabajados}
dfeb:integer; {dias de febrero}
diasmi:integer; {dias del mes de ingreso}
diast,mesest,anost:char;
{seccion algoritmica}
 
begin
 
{ingreso de datos}                      
 
	clrscr;                 
	writeln('Hola, ingrese la fecha de ingreso con el siguiente formato y presione enter');
	writeln('dd mm aaaa');
	readln(di,mi,ai);
	writeln('muy bien, ahora ingrese la fecha de egreso del mismo modo y presione enter');
	readln(de,me,ae);
 
{resolucion}
 
	if (mi=2)
	then
       		if (ai mod 4=0)
       		then
          			if (ai mod 100=0) and (ai mod 400<>0)
           			then
           			dfeb:=28
           			else
           			dfeb:=29
       		else
       		dfeb:=28;
 
 
	at:=abs(ae-ai);
	mt:=abs(me-mi);
	dt:=abs(de-di)+1;
 
 
	if (mi>=me)
   	then
       		begin
           	at:=at-1;
           	mt:=(12-mi)+me;
           	if di>de
              		then
              		begin
              		mt:=mt-1;
              		case mi of
               			1,3,5,7,8,10,12:diasmi:=31;
               			2:diasmi:=dfeb;
               			4,6,9,11:diasmi:=30;
               		end;
 
               	dt:=(diasmi-di)+de+1;
             	end;
	end;
 
 
 
	if (di>de) then
           if (ai=ae) or (mi<me) then
   	   	begin
       		mt:=mt-1;
       		case mi of
       			 1,3,5,7,8,10,12:diasmi:=1;
               		 2:diasmi:=dfeb;
               		 4,6,9,11:diasmi:=30;
                end;
 
       		dt:=(diasmi-di)+de+1;
       end;
 
 
	if mt>=12
   	then
	begin
   		at:=at+1;
   		mt:=mt-12;
        end;
 
 
{epilogo}
{exhibicion de resultados}
 
	if at=0 then
           if mt=0 then
              begin
              clrscr;
              writeln('La persona en cuestion trabajo ',dt,' dia/s');
              readln;
              end
           else
              begin
              clrscr;
              writeln('La persona en cuestion trabajo ',dt,' dia/s y ',mt,' mes/es');
              readln;
              end
         else
             if mt=0 then
                begin
                clrscr;
                writeln('La persona en cuestion trabajo ',dt,' dia/s y ',at,' a¤o/s');
                readln;
                end
             else
                 begin
                 clrscr;
                 writeln('La persona en cuestion trabajo ',dt,' dia/s, ',mt,' mes/es y ',at,' a¤o/s');
                 readln;
          end
end.
RAICES

El programa calcula las raices de una función cuadrática por el metodo de aproximaciones
sucesivas. Se pide el ingreso de los coeficientes de la funcíón, el intervalo de busqueda
y la presición deseada. Funciona perfectamente.

{Seccion declarativa}
{Objetivo del programa}
   Program Calculo_de_raices;
   {El programa permite calcular las raices simples de la funcion
   f=a2x^2+a1x+a0 por metodo de aproximaciones sucesivas}
{Definicion de recursos}
   Uses
     Crt;
   Var
     a {limite inferior}, b {limite superior}: Real;
     p {paso de busqueda}, pr {presicion deseada}: Real;
     c {resultado parcial}, d {resultado parcial}: Real;
     e {resultado parcial}, f {resultado parcial}: Real;
     g {resultado parcial}: Real;
     a2,a1,a0:Real; {coeficientes de la funcion}
     preg:char; {busqueda de otra raiz}
 
   Function fx(x:real):real;
	begin
	fx:=a2*x*x+a1*x+a0
	end;
 
{Seccion algoritmica}
{Desarrollo de la solucion}
   Begin
   {Prologo}
       {Limpieza de pantalla}
          ClrScr;
       {Presentacion del programa}
        {Escribir titulo en pantalla}
          Writeln('Calculo de raices simples de f=a2x^2+a1x+a0');
          Writeln;
          Writeln('El programa realiza el calculo de raices simples');
          Writeln('de la funcion f=a2x^2+a1x+a0 por aproximacion sucesiva.');
       {Obtencion de datos}
          Writeln;
	  Writeln('Ingrese los coeficientes de la funcion separados por un');
	  Writeln('espacio y presione enter "a2 a1 a0"');
          Readln(a2,a1,a0);
	  Writeln;
          Writeln('Ingrese el limite inferior del intervalo');
          Write('deseado para buscar raices: ');
          Readln(a);
          Writeln;
          Writeln('Ingrese el limite superior del intervalo');
          Write('deseado para buscar raices: ');
          Readln(b);
          Writeln;
          Writeln('Ingrese el paso de busqueda requerido: ');
          Readln(p);
          Writeln;
          Writeln('Ingrese precision en el calculo de las raices: ');
          Readln(pr);
          Writeln;
      {Resolucion}
          a:= a-p;
          Repeat
            a:= a+p;
            c:= fx(a);
            d:= a;
            d:= d+p;
            e:= fx(d);
          Until (c*e<0) or (d>b);  {Obtencion del intervalo <=pr}
            If d>b    {Caso que no existen raices}
              Then
                Begin
                  Writeln;
                  Writeln('No hay raices de la funcion en el intervalo de busqueda');
                  Writeln;
                  Writeln('Presione Enter para volver a la pantalla de edicion');
                  Readln;
                End
              Else
                Begin
                   Repeat                     {Acotacion del intervalo en mitades}
                      c:= fx(a);
                      e:= fx(d);
                      f:= (a+d)/2;
                      g:= fx(f);
                        If g*c<0
                          Then
                            Begin
                              d:= f;
                            End
                          Else
                            Begin
                              a:= f;
                            End
                   Until (Abs(g)<=pr) or (Abs(c)<=pr) or (Abs(e)<=pr);
 
      {Epilogo}
         {Exhibicion del resultado en pantalla}
                 Write('La raiz es: ', F:2:6);
                 Write(#241, Pr:1:6);
                 Writeln;
                 Readln;
                 Write('¨Desea buscar otra raiz? s/n  ');
                 Readln(preg);
                 Writeln;
                 If preg='s' then
                    Begin
                    a:=f;
                    Repeat
                          a:= a+p;
                          c:= fx(a);
                          d:= a;
                          d:= d+p;
                          e:= fx(d);
                    Until (c*e<0) or (d>b);  {Obtencion del intervalo <=pr}
                          If d>b    {Caso que no existen raices}
                             Then
                             Begin
                             Writeln;
                             Writeln('No hay raices de la funcion en el intervalo de busqueda');
                             Writeln;
                             Writeln('Presione Enter para volver a la pantalla de edicion');
                             Readln;
                             End
                          Else
                             Begin
                             Repeat       {Acotacion del intervalo en mitades}
                             c:= fx(a);
                             e:= fx(d);
                             f:= (a+d)/2;
                             g:= fx(f);
                                 If g*c<0
                                    Then
                                    Begin
                                    d:= f;
                                    End
                                 Else
                                    Begin
                                    a:= f;
                                    End
                             Until (Abs(g)<=pr) or (Abs(c)<=pr) or (Abs(e)<=pr);
 
      {Epilogo}
         {Exhibicion del resultado en pantalla}
                 Write('La otra raiz es: ', F:2:6);
                 Writeln(#241, Pr:1:6);
                 Writeln;
                 Writeln('No hay mas raices');
                 Writeln;
                 Writeln('Gracias por utilizar el programa');
                 Readln;
 
                          End
                 End
                 Else
                     Writeln('Gracias por utilizar el programa');
                     Readln;
 
 
 
 
                 End;
 
End.
materias/75/01/tp1_practica_jrey.txt · Última modificación: 2006/09/16 02:10 por jacobiano
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki