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

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


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

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

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 (в зависимости от мощности компьютера).

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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