Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

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.

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 16:50 21-07-2012
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru