karlangadas

TP pc3 2015-1 pregunta2

Oct 30th, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.25 KB | None | 0 0
  1. program pregunta2;
  2. type TArrCoordenada = array [1..100000] of Real;
  3. var numSeg:Integer;
  4.     a,b,c,d,e,f,i1,i2,area,longitud: Real;
  5.     x,y: TArrCoordenada;
  6.  
  7. procedure DeterminarCoordenadas(a,b,c,d,e,f,i1,i2: Real;var x,y: TArrCoordenada;
  8.                                 numSeg: Integer);
  9. var i,numIntervalos: Integer;
  10.     tamIntervalo: Real;
  11. begin
  12.   //Calcular valores de los intervalos
  13.   for i:=1 to 1000 do begin
  14.     x[i]:=0; y[i]:=0;
  15.   end;
  16.   numIntervalos:=numSeg+1;
  17.   tamIntervalo:=(i2-i1)/numSeg;
  18.   x[1]:=i1;
  19.   for i:=2 to numIntervalos do begin
  20.     x[i]:=x[i-1]+tamIntervalo;
  21.   end;
  22.  
  23.   //Determinamos las coordenadas
  24.   for i:=1 to numIntervalos do begin
  25.     y[i]:=a*x[i]*x[i]*x[i]*x[i]*x[i]+b*x[i]*x[i]*x[i]*x[i]+c*x[i]*x[i]*x[i]+d*x[i]*x[i]+e*x[i]+f;
  26.   end;
  27. end;
  28.  
  29. function calcularArea(var x,y: TArrCoordenada;numSeg: Integer): Real;
  30. var i: Integer;
  31.     tamIntervalo,sumaArea,area: Real;
  32. begin
  33.   sumaArea:=0;
  34.   tamIntervalo:=(i2-i1)/numSeg;
  35.   for i:=1 to numSeg do begin
  36.     area:=(y[i]+y[i+1])/2*TamIntervalo;
  37.     sumaArea:=sumaArea+area;
  38.   end;
  39.   calcularArea:=sumaArea;
  40. end;
  41.  
  42. function calcularLongitud(var x,y: TArrCoordenada;numSeg: Integer):Real;
  43. var i: Integer;
  44.     sumaLong,long,tamIntervalo: Real;
  45. begin
  46.   sumaLong:=0;
  47.   tamIntervalo:=(i2-i1)/numSeg;
  48.   for i:=1 to numSeg do begin
  49.     long:=sqrt(sqr(y[i+1]-y[i])+sqr(TamIntervalo));
  50.     sumaLong:=sumaLong+long;
  51.   end;
  52.   calcularLongitud:=sumaLong;
  53. end;
  54.  
  55. procedure calcularAreaYLongitud(a,b,c,d,e,f,i1,i2: Real;var numSeg:Integer;
  56.                                 var x,y: TArrCoordenada;var area,longitud: Real);
  57.  
  58. var area1,area2: Real;
  59. begin
  60.   area1:=0;
  61.   area2:=0;
  62.   repeat
  63.     area1:=area2;
  64.     inc(numSeg);
  65.     DeterminarCoordenadas(a,b,c,d,e,f,i1,i2,x,y,numSeg);
  66.     area2:=calcularArea(x,y,numSeg);
  67.     longitud:=calcularLongitud(x,y,numSeg);
  68.   until (abs(area1-area2)<0.00001) or (numSeg>99998);
  69.   area:=area2;
  70. end;
  71.  
  72.  
  73. begin
  74.   writeln('Ingrese los valores para los coeficientes a,b,c,d,e,f:');
  75.   readln(a,b,c,d,e,f);
  76.   writeln('Ingrese los intervalos:');
  77.   readln(i1,i2);
  78.   numSeg:=0;
  79.   calcularAreaYLongitud(a,b,c,d,e,f,i1,i2,numSeg,x,y,area,longitud);
  80.   writeln('Area final: ',area:5:1);
  81.   writeln('Longitud final: ',longitud:5:1);
  82.   readln;
  83.  
  84. end.
Advertisement
Add Comment
Please, Sign In to add comment