Перевод программы с 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы