Официальный сайт студ.городка НГТУ
Программирование и БД » для тех кто хоть немного знает С и fortran 

#1  20.06.06 06:13

Set
Профиль

для тех кто хоть немного знает С и fortran

есть код на фортране

Код: fortran:

1     UP=1.
      UQ=0.
      DO 3 J=1,L2
      DO 2 I=J,NF,L // 2 УСЛОВИЯ ??
      IP=I+L2
      ..........
2     Q(I)=TQ
      RP=UP*WP-UQ*WQ
      RQ=UP*WQ+UQ*WP
3     UQ=RQ
      L=L/2
      IF (L.GE.2) GO TO 1
 
      DO 6 I=1,N1
      IF (I.GE.J) GO TO 4
      TP=P(J)
      ...........
4     L=N2
5     CONTINUE        
      IF (L.GE.J) GO TO 6
      J=J-L
      L=L/2
      GO TO 5
6     J=J+L
RETURN

надо получить код на С
у меня получилось так

Код: С:

m1:   UP=1.0;
      UQ=0.0;
      for(J=1;J<=L2;J++)
      {
        for(I=J;I<=NF;I++)
        {
         if(I>L)break;      // ??????
         IP=I+L2;
         ........
         Q[I-1]=TQ;
        }
      RP=UP*WP-UQ*WQ;
      RQ=UP*WQ+UQ*WP;
      UQ=RQ;
      }
      L=L/2;
      if(L>=2) goto m1;
 
      for(I=1;I<=N1;I++)
      {
       if(I>=J) goto m4;
       TP=P[J-1];
       ............
m4:    L=N2;
m5:                          // continue тут ???
       if(L>=J) goto m6;  
       J=J-L;
       L=L/2;
       goto m5;
m6:    J=J+L;
      }
return;

что тут неверно ??
просто фортран я знаю скорее понаслышке

Исправлено Set (20.06.06 08:07)

Offline

#2  20.06.06 10:37

Re: для тех кто хоть немного знает С и fortran

Какой у тебя должен быть результат С и fortran?

Offline

#3  20.06.06 14:18

Set
Профиль

Re: для тех кто хоть немного знает С и fortran

fortran - исходное
С должен получить

Offline

#4  20.06.06 14:30

Re: для тех кто хоть немного знает С и fortran

фортран не знаю, но на Си метки юзать - плохой стиль :)

Offline

#5  20.06.06 15:10

Set
Профиль

Re: для тех кто хоть немного знает С и fortran

да от меток избавиться недолго, главное точно перевести
ну так соответствуют коды или нет ???
если нет то как правильно ??

Offline

#6  22.06.06 13:30

Re: для тех кто хоть немного знает С и fortran

че сложного? у код ведь уже перет тобой!
а метки не юзай... лучьше так..

do
{
  UP=1.0;
  UQ=0.0;
  for (J=1; J<=L2; J++)
  {
    for (I=J; I<=NF; I+=L)
    {
      IP=I+L2;
      ........
      Q[i]=TQ;
    }
    RP=UP*WP-UQ*WQ;
    RQ=UP*WQ+UQ*WP;
    UQ=RQ;
  }
  L/=2;
} while (L >= 2)

for (I=1; I<=N1; I++)
{
  if (I < J)
  {
    TP=P[J];
    ........
  }
  L=N2;
  while (L < J) { J-=L; L/=2; }
  J+=L;
}

Offline

#7  22.06.06 13:36

Re: для тех кто хоть немного знает С и fortran

Set написал(а):

DO 2 I=J,NF,L // 2 УСЛОВИЯ ??

третий аргумент, значение инкремента типо +L

Offline

#8  22.06.06 23:53

Re: для тех кто хоть немного знает С и fortran

Есть транслятор с фортрана на си - f2c.
Если не имеет значения красота и чтабельность кода, можешь  использовать его.

Offline

Программирование и БД » для тех кто хоть немного знает С и fortran 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.070 сек.
Выполнено 11 запросов.