#1 20.06.06 06:13
для тех кто хоть немного знает С и 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
#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

