Program S3;
Type
mat = array[1..24,1..24] Of integer;
tenreg = Record
nl,ICD,ICF : integer;
End;
tab = array [1..24] Of tenreg;
Var
L,C ,k : integer;
M : mat;
T : tab;
F : text;
Procedure remplir (Var L,c:integer ; Var M:mat);
Var
i,j : integer;
Begin
Repeat
write(' taper L:');
readln(l);
write(' taper c:');
readln(c);
Until (l In [3..24]) And (c In [3..24]);
For i:=1 To l Do
Begin
For j:=1 To c Do
Repeat
write('M[',i,',',j,']=');
readln(M[i,j]);
Until (m[i,j]<>0);
End;
End;
Procedure Somme (m:mat; lig,col,c:integer; Var Fin:integer);
Var
i,j,s : integer;
Begin
Fin := 0;
S := 0;
i := lig;
j := col;
Repeat
s := s+m[lig,j];
j := j+1;
Until (S=0) Or (j >c);
If (s=0) Then
fin := j-1;
End;
Procedure traitement (Var t:tab; m:mat; l,c:integer; Var k:integer );
Var
s,f,i,j : integer;
Begin
k := 0;
For i:=1 To l Do
Begin
For j:=1 To c Do
Begin
somme(m,i,j,c,f);
If (f<>0) Then
Begin
k := k+1;
T[k].Nl := i;
T[k].ICD := j;
T[k].ICF := f;
{ writeln(i,'#',j,'#',f);}
End;
End;
End;
End;
Function maximum ( t:tab; k:integer ) : integer;
Var
i,max : integer;
Begin
max := (T[1].ICF-T[1].ICD+1);
For i:=2 To k Do
Begin
If (T[i].ICF-T[i].ICD+1) > max Then
max := T[i].ICF-T[i].ICD+1;
End;
maximum := max;
End;
Procedure Stockage (Var F:text ; t:tab ; k:integer);
Var
max,i : integer;
chm,ligne1, ch,ch1,ch2,ch3 : string;
Begin
append(f);
max := maximum(t,k);
STR(max,chm);
ligne1 := ' Le nombre d''elements de la plus longue séquence ='+chm;
writeln(f,ligne1);
writeln(ligne1);
For i:=1 To k Do
Begin
If (T[i].ICF-T[i].ICD+1) = max Then
Begin
Str(T[i].nl,ch1);
Str(T[i].ICD,ch2);
Str(T[i].ICF,ch3);
ch := ch1+'#'+ch2+'#'+ch3;
writeln(f,ch);
writeln(ch);
End;
End;
Close(f);
End;
Begin
assign(f,'C:\long_Seq.txt');
rewrite(f);
remplir (l,c,m);
traitement (t,m,l,c,k);
stockage (f,t,k);
End.
Inscription à :
Publier les commentaires (Atom)