akaGM
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору const NUM_DATA_POINTS = 5000; NUM_LAYERS = 2000; type TDATA = array[1..NUM_DATA_POINTS] of double; TLAYERDATA = array[1..NUM_LAYERS] of double; var numPoints: integer; zCoords, {zInt,} Density, DensityBars: TDATA; thickness: TLAYERDATA; delta: TLAYERDATA; ///////////////////////////////////////////////////////////////// var barPoints: integer; // = num points per bar numBars: integer; restBarPoints: integer; procedure getBarParams; begin writeln('numPoints = ', numPoints); write('barPoints (> 1) = '); readln(barPoints); if (barPoints <= 1) then begin writeln('barPoints <= 1'#13#10'changed to 2'); barPoints := 2; end; { write('numBars = '); readln(numBars); restBars; } // barPoints := 2; // numBars := numPoints - 1; // intervals numBars := pred(numPoints) div pred(barPoints); restBarPoints := pred(numPoints) mod pred(barPoints); if (restBarPoints > 0) then inc(numBars); // num of bars vs num of averaged discretization points writeln('barPoints = ', barPoints); writeln('numBars = ', numBars); end; procedure makeBarDensity; { in: barPoints numBars = f(barPoints) } var i, nP, nB, dP: integer; sum: double; begin nP := 1; nB := 1; dP := pred(barPoints); while (nP <= numPoints - dP) do begin sum := 0.0; for i := nP to (nP + dP) do sum := sum + Density[i]; // model thickness[nB] := zCoords[nP + dP] - zCoords[nP]; delta[nB] := sum / barPoints; // and stepwise profile for i := nP to (nP + dP) do DensityBars[i] := delta[nB]; inc(nP, dP); inc(nB); end; // do the rest if (restBarPoints > 0) then begin nP := numPoints - restBarPoints; writeln('---'); writeln('nP=', nP); sum := 0.0; for i := nP to numPoints do begin writeln(i); sum := sum + Density[i]; end; writeln('---'); // model thickness[numBars] := zCoords[numPoints] - zCoords[nP]; delta[numBars] := sum / succ(restBarPoints); //??? // and stepwise profile for i := nP to numPoints do DensityBars[i] := delta[numBars]; end; end; {} // main begin readDensityProfile; getBarParams; makeBarDensity; writeBarDensity; end. |