2 Rockie Есть светлые мысли? Переделала задачу с Pascal на C#, но почему-то она не идет, перепробовала разные методы, а она не в какую. Может Вы увидите ошибку.
Pascal
| Код | Program var_9_6; const kol_el=20; var matrix: array [1..kol_el,1..kol_el] of integer; har_stolb: array [1..kol_el] of integer; summa,est_otr,vremen,h_stolb,i,i2,j,n,m,ii,jj: integer;
begin
writeln('Vvedite razmernost matrici:'); write('Kolich strok n=');readln(n); write('Kolich stolbcov m=');readln(m);
for i:=1 to n do for j:=1 to m do begin write('matrix[',i,',',j,']=');readln(matrix[i,j]); end;
writeln; writeln('Ishodnaja matrica...'); for i:=1 to n do begin writeln; for j:=1 to m do begin write(matrix[i,j],' '); end; end;
{vijasnim i sravnivaem kriterii v kagdom stolbce}
writeln;
for i:=1 to m do begin h_stolb:=0; for j:=1 to n do begin { writeln('i=',i, 'j=',j); writeln('matrix[',j,',',i,']=',matrix[j,i],' '); } if (frac(matrix[j,i]/2)<>0) and (matrix[j,i]<0) then h_stolb:=abs(h_stolb+matrix[j,i]);
end; har_stolb[i]:=h_stolb; end; writeln;
write('Harakter massiv: '); for i:=1 to m do write(har_stolb[i],' ');
writeln; for i:=1 to m-1 do begin for i2:=1 to m-1 do begin if har_stolb[i2]>har_stolb[i2+1] then begin vremen:=har_stolb[i2]; har_stolb[i2]:=har_stolb[i2+1]; har_stolb[i2+1]:=vremen; for j:=1 to n do begin vremen:=matrix[j,i2]; matrix[j,i2]:=matrix[j,i2+1]; matrix[j,i2+1]:=vremen; end; end; end; end;
writeln;
for i:=1 to n do begin writeln; for j:=1 to m do begin write(matrix[i,j],' '); end; end;
writeln; writeln('Summa gde est otricat: '); for i:=1 to m do begin est_otr:=0; for j:=1 to n do begin if matrix[j,i]<0 then est_otr:=1; end; summa:=0; if est_otr=1 then begin for j:=1 to n do summa:=summa+matrix[j,i]; end; write(summa,' '); end; writeln; writeln('End....');
readln;
end.
|
А вот переделанная на C#:
| Код | using System;
namespace ConsoleApplication2 { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { const d=5; int [,] mt; mt=new int[d,d]; int[] hr=new int[20]; int s,v,h,st,i,e,i2,j,n,m,ii,jj; Console.WriteLine("введите"); for (i=1;i<n;++i) { for (j=1;j<m;++j) { mt[i,j]=i+j+1; Console.Write("mt["+i+","+j+"]="); } Console.WriteLine(); Console.WriteLine("Исходная матрица"); for (i=1;i<n;i=i+1) { for (j=1;j<m;j=j+1) { Console.Write(mt[i,j] ); } } Console.WriteLine(); for (i=1;i<m;++i) { for (j=1;j<n;++j) { if ((mt[j,i]%2!=0)&(mt[j,i]<0)) h=0; h=Math.Abs(h+mt[j,i]);
} hr[i]=h; } Console.WriteLine(); Console.Write("Характеристики массива:"); for (i=1;i<m;i=i+1) { Console.Write(hr[i] ); } Console.WriteLine(); for (i=1;i<m-1;i++) { for (i2=1;i2<m-1;i2++) { if (hr[i2]>hr[i2+1]) v=hr[i2]; hr[i2]=hr[i2+1]; hr[i2+1]=v; for (j=1;j<n;j++) { v=mt[j,i2]; mt[j,i2]=mt[j,i2+1]; mt[j,i2+1]=v; } } } Console.WriteLine; for (i=1;i<n;i++) { for (j=1;j<m;j++) { Console.Write(mt[i,j] ); } } Console.WriteLine(); Console.WriteLine("Сумма где есть отрицательные:"); for (i=1;i<m;i++) { for (j=1;j<n;j++) { e=0; if (mt[j,i]<0) e=1; } s=0; if (e==1) { for (j=1;j<n;j=j+1) { s=s+mt[j,i]; } } Console.Write(s); } Console.WriteLine(); Console.WriteLine("END..."); Console.ReadLine();
} } } }
|
|