Pagini recente » Cod sursa (job #1110804) | Cod sursa (job #1486907) | Cod sursa (job #2560250) | Cod sursa (job #2567178) | Cod sursa (job #860634)
Cod sursa(job #860634)
program flip;
uses crt;
type matrice=array[1..20,1..20] of integer;
var
m:matrice;
S,Saux,Sl,Scom,Snou:integer;
i,j,n,l,curr,k,c,curr1:byte;
fi,fo:text;
x:array[1..20] of integer;
procedure tip(var m:matrice;l,c:byte);
var
i,j:integer;
begin
for i:=1 to l do
begin
for j:=1 to c do
write(fo,M[i,j]:3);
writeln(fo);
end;
end;
begin
clrscr;
assign(fi,'Flip.in');
reset(fi);
readln(fi,l,c);
for i:=1 to l do
for j:=1 to c do
read(fi,M[i,j]);
close(fi);
assign(fo,'Flip.out');
rewrite(fo);
s:=0;
for i:=1 to l do
for j:=1 to c do
S:=S+M[i,j];
writeln('Suma actuala ', s);
curr:=1;
writeln('Suma dupa comutarea liniilor+coloanelor(unde e necesar):');
delay(6000);
{Comutare linii}
while curr<l do
begin
n:=0;
Sl:=0;
Saux:=0;
for j:=1 to c do
begin
Sl:=Sl+M[curr,j];{Cresc suma pe linia curr}
inc(n); {Cresc capacitatea sirului X}
x[n]:=-M[curr,j];{Sirul cu indice N primeste opusul elem de pe linia matricei}
end;
SAUX:=0;
for i:=1 to n do
Saux:=Saux+x[i];
if Saux>=Sl then
begin
for k:=1 to n do
M[curr,k]:=x[k];
end
else inc(curr);
end;
curr1:=1;
while curr1<c do
begin
n:=0;
Sl:=0;
Saux:=0;
for j:=1 to l do
begin
Sl:=Sl+M[j,curr1];{Cresc suma pe coloana curr1}
inc(n); {Cresc capacitatea sirului X}
x[n]:=-M[j,curr1];{Sirul cu indice N primeste opusul elem de pe coloana matricei}
end;
SAUX:=0;
for i:=1 to n do
SAUX:=SAUX+x[i];
if Saux>=Sl then
begin
for k:=1 to n do
M[k,curr1]:=x[k];
end
else inc(curr1);
end;
Snou:=0;
for i:=1 to l do
for j:=1 to c do
Snou:=Snou+m[i,j];
writeln('Noua suma este ', snou);
writeln('Matricea noua comutata...');
tip(m,l,c);
close(fo);
readln;
end.