Перевод программы с Pascal на C#
Формулировка задачи:
Помогите плз!!! Надо перевести этот код pascal в С#.
далее...
KT*T=600 KU=200. uses crt,graph; CONST MaxT=15; MaxU=100; MaxV=100; MaxRB=100; MaxH=100; Type MassVetType=array[1..MaxV] of integer; Var U1,U2:MassVetType; M:Array [1..MaxV div 2,1..MaxV div 2] of Integer; P:MassVetType; i,j,CH,CRB,CE,CC,CR,CT,CD,CU,CV,KT,KU:integer; Impulse,IC,Peredat,InputU,OutputU:byte; CheckOnly:byte; TR :array[1..MaxT]of record TTP :byte; B,E,K :integer; end; TTE,MFTE,CBEO,RUE,TAU,TTK,MFTK,CBKO,RUK, TAUU,B,Bu,TTD,MFTD,CBDO,RUD,TAUD:real; RB,RK,RD:real; Level0,Level1:real; KFrontF,KBackF:real; KInU,KOutU:byte; Method:byte; MDU,M1,M2, TT, TIMP,TSAD, H, HP,TP,TK:real; UR:array [1..MaxRB] of real; C:array [1..MaxRB] of real; R:array [1..MaxH] of real; F: Text; Chr:Char; Strg:String[7]; SUR_N:integer; UR_N:array [1..10] of integer; SUH_N:integer; UH_N:array [1..10] of integer; GRPH:boolean; PROCEDURE READDATA ; begin KT:=60;KU:=40; M1:=0.05; M2:=0.001; TTE:=2.2E-8; TTK:=1.7E-6; TTD:=9.0E-8; MFTE:=0.033; MFTK:=0.036; MFTD:=0.034; CBEO:=3.4E-2; CBKO:=4.0E-2; CBDO:=4.0E-2; B:=100; Bu:=1; TAU:=2.0E-1; TAUU:=6.2E-1; TAUD:=6.0E-1; RUE:=1.0E3; RUK:=1.0E3; RUD:=1.0E3; RB:=0.1; RK:=0.012; RD:=0.1; GRPH:=true; HP:=0.01; Impulse:=0; TSAD:=30; TIMP:=30; Peredat:=0; IC:=0; KFrontF:=1; KBackF:=1; KInU:=50; KOutU:=20; Method:=2; CheckOnly:=0; Level1:=2.4; Level0:=0.4; Assign(F, ParamStr(1)); Reset(F); while not Eof(F) do begin Strg:=''; repeat read(F,Chr); Strg:=Strg+Chr; until (Chr='='); case Strg[1] of 'P':read(F,Peredat); 'O':read(F,OutputU); 'I':case Strg[2] of 'M':read(F,Impulse); 'N':read(F,InputU); 'C':read(F,IC); end; 'C':case Strg[2] of 'T':read(F,CT); 'D':read(F,CD); 'E':read(F,CE); 'H':read(F,CheckOnly); 'C':read(F,CC); 'R':read(F,CR); 'U':read(F,CU); 'V':read(F,CV); 'B':case Strg[3] of 'E':read(F,CBEO); 'K':read(F,CBKO); 'D':read(F,CBDO); end; '=':for j:=1 to CC do read(F,C[j]); end; 'M':case Strg[2] of '1':read(F,M1); '2':read(F,M2); 'E':read(F,Method); 'F':case Strg[4] of 'E':read(F,MFTE); 'K':read(F,MFTK); 'D':read(F,MFTD); end; end; 'B':case Strg[2] of '=':read(F,B); 'u':read(F,Bu); end; 'T':case Strg[2] of 'I':read(F,TIMP); 'S':read(F,TSAD); 'T':case Strg[3] of 'E':read(F,TTE); 'K':read(F,TTK); 'D':read(F,TTD); end; 'A':case Strg[4] of '=':read(F,TAU); 'U':read(F,TAUU); 'D':read(F,TAUD); end; 'K':read(F,TK); 'R':for j:=1 to CT+CD do begin readln(F); read(F,TR[j].TTP, TR[j].B, TR[j].E, TR[j].K); end; end; 'R':case Strg[2] of 'U':case Strg[3] of 'E':read(F,RUE); 'K':read(F,RUK); 'D':read(F,RUD); end; '=':for i:=1 to CR do read(F,R[i]); 'B':read(F,RB); 'K':read(F,RK); 'D':read(F,RD); end; 'U':for i:=1 to CV do begin readln(F); read(F,U1[i],U2[i]); end; 'E':for j:=1 to CE do read(F,UR[j]); 'K':case Strg[2] of 'I':read(F,KInU); 'O':read(F,KOutU); 'U':read(F,KU);{ U koefficient } 'T':read(F,KT);{ T koefficient } 'F':read(F,KFrontF); 'B':read(F,KBackF); end; 'S':case Strg[6] of 'R':begin read(F,SUR_N); for i:=1 to SUR_N do read(F,UR_N[i]); end; 'H':begin read(F,SUH_N); for i:=1 to SUH_N do read(F,UH_N[i]); end; end; 'L':case Strg[6] of '0':read(F,Level0); '1':read(F,Level1); end; 'G':begin read(F,i); if i=0 then GRPH:=false; end; 'H':read(F,HP); end; readln(F); end; close(F); clrscr; if ParamStr(2)<>'nowrite' then begin writeln('--- Исходные данные --- файл: ',ParamStr(1)); writeln(' CT=',CT,' CD=',CD,' CE=',CE,' CC=',CC,' CR=',CR,' CU=',CU,' CV=',CV); writeln('Ветви:'); for j:=1 to CV do write(' {',U1[j],',',U2[j],'}'); writeln; writeln('Транзисторы и диоды:'); for j:=1 to CT+CD do write('{',TR[j].TTP,TR[j].B,TR[j].E,TR[j].K,'}'); writeln; for j:=1 to CE do write(' E[',j,']=',UR[j]:1:1); writeln; for j:=1 to CC do write(' C[',j,']=',C[j]:1:3); writeln; for i:=1 to CR do write(' R[',i,']=',R[i]:3:3); writeln; writeln('TK=',TK:1:0,' KU=',KU,' KT=',KT,' M1=',M1:1:3,' M2=',M2:1:3); write('Выводимые напряжения '); if GRPH then writeln('(графически):') else writeln('(таблично):'); write('Ребер (',SUR_N,'):'); for i:=1 to SUR_N do write(' ',UR_N[i]); writeln; write('Хорд (',SUH_N,'):'); for i:=1 to SUH_N do write(' ',UH_N[i]); writeln; writeln('Шаг печати =',HP:1:3); writeln; writeln('Электрические параметры'); writeln('MFTE=',MFTE:1:3,' MFTK=',MFTK:1:3,' MFTD=',MFTD:1:3); writeln('B=',B:3:3,' Bu=',Bu:3:3); writeln('TTE=',TTE:1:6,' TTK=',TTK:1:6,' TTD=',TTD:1:6); writeln('TAU=',TAU:1:6,' TAUU=',TAUU:1:6,' TAUD=',TAUD:1:6); writeln('CBEO=',CBEO:1:6,' CBKO=',CBKO:1:6,' CBDO=',CBDO:1:6); write('RB=',RB:3:2,' RK=',RK:3:2,' RD=',RD:3:2); writeln('RUE=',RUE:3:2,' RUK=',RUK:3:2,' RUD=',RUD:3:2); readkey; clrscr; writeln('---------------Дополнительные параметры файл: ',ParamStr(1),' -----'); write('Импульсный режим - '); case Impulse=1 of true:writeln('включено.'); false:writeln('выключено.'); end; write('Режим передаточной функции - '); case Peredat=1 of true:begin writeln('включено.'); writeln('Шаг входного напряжения - ',KInU); writeln('Шаг выходного напряжения - ',KOutU); end; false:writeln('выключено.'); end; writeln('Время задержки - ',TSad:3:2,'нс.'); writeln('Длительность импульса - ',TImp:3:2,'нс.'); writeln('Тангенс наклона переднего фронта - ',KFrontF:3:3); writeln('Тангенс наклона заднего фронта - ',KBackF:3:3); writeln('Входное напряжение - ребро #',InputU); writeln('Выходное напряжение - ребро #',OutputU); write('Управляющее напряжение - '); case IC=1 of true: begin writeln('отрицательное'); writeln(' ноль: -',Level0:3:2,' В, единица: -',Level1:3:2,' В.'); end; false: begin writeln('положительное'); writeln(' ноль: ',Level0,' В, единица: ',Level1,' В.'); end; end; write('Метод интегрирования - '); case Method=1 of true: writeln('старый.'); false: writeln('новый.'); end; write('Коррекция дерева - '); case CheckOnly=1 of true: writeln('вручную'); false: writeln('автоматически'); end; readkey; clrscr; end; END;
Решение задачи: «Перевод программы с Pascal на C#»
textual
Листинг программы
MDU:=0; for i:=1 to CC do if MDU<abs(DUC[i]) then MDU:=abs(DUC[i]); case Method=1 of true: H:=M1/(M2+MDU); {старый метод с постоянными шагами} false: {новый метод с шагами переменной величины} if KL<>0 then begin while i<=CC do begin if ((DUC[i]>=0) and (RDU[i]>=0)) or ((DUC[i]<0) and (RDU[i]<0)) then begin i:=i+1; if i>CC then begin KL:=1; H:=M1/(M2+MDU) end; end else begin H:=M1/(2*M2+MDU+RMDU); i:=1;while i<=CC do begin S:=(DUC[i]*RDU[i])/(RDU[i]+DUC[i]); i:=i+1; end; KL:=0; end; end; end else begin KL:=1; H:=M1/(M2+MDU) end; end;{of case to Method selection} for i:=1 to CC do UR[i+CE]:=UR[i+CE]+H*DUC[i];{ UR[i+CE] ==> UC[i] } RMDU:=MDU; TT:=TT+H; LUp:=Level1/KFrontF; {проекция переднего фронта} LDown:=Level1/KBackF; {проекция заднего фронта} { UR[inputU]:=sin(TT);} if Impulse=1 then begin {формирование импульса} if TT>TSAD then UR[InputU]:=( (TT-TSAD)*KFrontF+Level0);{передний фронт} if (TT>=TSAD+LUp) and (TT<TSad+LUp+TImp){верхний уровень} or (UR[InputU]>Level1) then UR[InputU]:=Level1; if (TT>=TSAD+TImp+LUp) then UR[InputU]:=KBackF*(-TT+TSAD+TIMP+Level0+LUp+LDown); {задний фронт} if (TT>(TImp+TSad+LUp+LDown)) or (abs(UR[InputU])<Level0) then UR[InputU]:=Level0; {нулевой уровень} if TT>TSAD then if IC=1 then UR[InputU]:=-UR[InputU]; end; KSH:=KSH+1; if TT>=TP then if GRPH then begin {writeln('T=',TT,' H=',H,' U[C2]=',UR[5]);} j:=9; if {(UR[InputU]<1.5*Level1) and} (Peredat=1) and (TT>TSAD-5) then begin putpixel(round(320+abs(UR[InputU]*KInU)),420-abs(round(abs(UR[OutputU])*KOutU)),13); {30 - шаг по оси U, 30 - по оси Т} end; for i:=1 to SUR_N do begin putpixel(round(20+TT*KT),240-round(UR[UR_N[i]]*KU),j); j:=j+1; end; for i:=1 to SUH_N do begin putpixel(round(20+TT*KT),240-round(UH[UH_N[i]]*KU),j); j:=j+1; end; TP:=TP+H; end else begin write(' ',TT:3:3,' | '); write(F,' ',TT:3:3,' | '); for i:=1 to SUR_N do begin write(UR[UR_N[i]]:1:3,' | '); write(F,UR[UR_N[i]]:1:3,' | '); end; for i:=1 to SUH_N do begin write(UH[UH_N[i]]:1:3,' | '); write(F,UH[UH_N[i]]:1:3,' | '); end; writeln; writeln(F); TP:=TP+HP; end; until (TT>=TK) or (TT*KT>=639) or keypressed; if not GRPH then end; {=========P R O G R AM=========} BEGIN READDATA; CorrectTree; TR2Polusnik(U1,U2,CU,CV);{ changes CU } ChooseNormalTree({input}CU,CV,U1,U2,{output}CRB,CH,P); CreateM(CRB,CH); Solution; END.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д