Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Нужна помощ плиз


Рекомендуемые сообщения

Помогите пожалуста необходимо переделать прогаму из паскаля на С++. Вдолгу неостанусь. Вот код

Procedure Effect( Var z:Vector; n:Integer );

Const k :LongInt=0; {Количество перестановок}

Var

p,d :Vector;

pm, dm,zpm : Integer;

i,m,w : Integer;

begin;

for i:=1 to n do begin z:=i; p:=i; d:=-1; end;

d[1]:=0;

m:=n+1;

z[0]:=m; z[n+1]:=m;

while m<>1 do begin

{ Печать перестановки }

k:=k+1; Write(f,k,' ) `);

for i:=l to n do Write(f,z,' `); WriteLn(f);

m: =n ;

while z [p [m] +d [m] ] >m do begin

d[m]:=-d[m]; m:=m-l; end;

pm:=p[m]; dm:=pm+d[m]; w:=z[pm];

z [pm] : =z [dm] ; z[dm]:=w;

zpm:=z[pm]; w:=p[zpm]; p[zpm]:=pm; p[m]:=w;

end;

end;{Effect}

Var {Main}

z :Vector;

n :Integer; {Длина перестановки}

Hour,Minute,Second,SeclOO :Word;

rHour,rMinute,rSecond,rSec100 :Word;

delta :LongInt;

begin

Assign(f,'Effect.in' ) ;

Reset(f); {Файл открыт для чтения}

ReadLn(f,n); {Чтение длины перестановки}

Close(f);

Assign(f,'Effect.out' ) ;

Rewrite(f); {Файл открыт для записи}

GetTime(Hour,Minute,Second,Sec100);

Effect(z,n);

GetTime(rHour,rMinute,rSecond,rSec1 00);

delta:=rHour-Hour;

delta:=delta*60+rMinute-Minute;

delta:=delta*60+rSecond-Second;

delta:=delta*100+rSec100-Sec100;

WriteLn(f,'Время счета=',delta div 100,'.',

delta mod 100,' сек') ;

Close(f);

end.

Ссылка на комментарий
Поделиться на другие сайты

bioshark:

#include<iostream>#include<fstream>  #include<ctime>using namespace std;ifstream infile("effect.in");ofstream outfile("effect.out", ios_base::out); void effect(int z[],int n){long k=0; int *p=new int[30],*d=new int[30]; int pm,dm,zpm,i,m,w; for(i=1;i<=n;i++)d[z[i]=p[i]=i]=-1; d[1]=0; z[0]=z[n+1]=m=n+1; while(m!=1){ k++; outfile<<k<<" ) "; for(i=1;i<=n;i++)outfile<<z[i]<<" "; outfile<<endl; m=n; while(z[p[m]+d[m]]>m){d[m]=-d[m];m--;} pm=p[m]; dm=pm+d[m]; swap(z[pm],z[dm]);zpm=z[pm]; w=p[zpm]; p[zpm]=pm; p[m]=w;}delete[]p; delete[]d; }main(){int n; int *z=new int[30]; float start=clock(); if(!infile){cout<<"Error of opening the file!"; getchar(); exit(1);} infile>>n; infile.close(); effect(z,n); delete[]z; float end=clock(); cout<<(end-start)/CLOCKS_PER_SEC<<endl; getchar();}

В файл effect.in для пробы советую для времени работы в несколько секунд записать число 9 или 10 (в зависимости от мощности компьютера).

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...