Program suite_arith;
Uses crt;
Type
mat = array[1..10,1..10] Of integer;
fdat = file Of integer;
Var
v : mat;
f : fdat;
l,m : integer;
//**************************************
Procedure remplirF(Var f:fdat; v:mat; l,c:integer);
Var
i, j,d : integer;
Begin
assign(f,'Fnombres.dat');
rewrite(f);
For i:=1 To l Do
For j:=1 To (c Div 2) Do
Begin
d := abs(v[i,j]-v[i,c-j+1] );
write(f,d);
End;
End;
//**************************************
Procedure affichesuite(Var f:fdat; l,p,r:integer);
Var
d,k : integer;
Begin
reset(f);
seek(f,p-1);
For k:=1 To l Do
Begin
read(f,d);
write(d:3,', ');
End;
writeln(' est une suite arithmétique de raison= ',r);
End;
//**************************************
Procedure affiche(Var f: fdat);
Type
dat = Record
p,long,raison : integer;
End;
Var
d1,d2,r,i,j,k,pinit : integer;
t : array[1..30] Of dat;
Begin
reset(f);
read(f,d1);
read(f,d2);
r := (d2-d1);
l := 2;
pinit := 0;
i := 1;
k := 1;
While (Not(eof(f))) Do
Begin
d1 := d2;
read(f,d2);
k := k+1;
If (k=filesize(f)-1) Or (d2-d1<>r) Then
Begin
With t[i] Do
Begin
p := pinit;
long := l;
raison := r;
End;
If (k=filesize(f)-1) Then
t[i].long := l+1;
r := d2-d1;
l := 2;
i := i+1;
pinit := k;
End
Else
l := l+1;
End;
For k:=1 To i Do
With T[k] Do
If (long>2) Then
affichesuite(f,long,p,raison);
End;
//**************************************
Procedure affichemat(v:mat;l,c:integer);
Var
i,j : integer;
Begin
For i:=1 To l Do
Begin
For j:=1 To c Do
write(v[i,j]:5);
writeln;
End;
End;
//**************************************
Procedure remplirM(Var v :mat; Var l,c:integer);
Var
i,j : integer;
Begin
For i:=1 To l Do
For j:=1 To c Do
Begin
write('V[',i,',',j,']: ');
readln(v[i,j]);
End;
End;
//**************************************
Begin
Repeat
write('Saisir le nombre de lignes: ');
readln(l);
write('saisir le nonbre de colonnes: ');
readln(m);
Until (l In [3..10]) And (m In [3..10]) And (m Mod 2=0);
remplirM(v,l,m);
remplirf(f,v,l,m);
clrscr;
affichemat(v,l,m);
affiche(f);
close(f);
End.
Inscription à :
Publier les commentaires (Atom)