program test;
uses crt;
type TArOfVar = array [1..50,1..10] of Variant;
var
m,n,k,l,i,j,o : integer;
s: longint;
a: TArOfVar;
procedure mread(m: integer; n: integer; k:integer; l:integer; var a: TArOfVar);
begin
writeln('Введите числа:');
for i:=1 to m do
begin
for j:=1 to n do
begin
for o:=1 to k do
begin
if o=1 then
begin
a[i,j]:=readkey;
clrscr;
write(a[i,j]);
end;
if o=(k-l) then
begin
a[i,j]:=a[i,j]+'.';
clrscr;
write(a[i,j]);
end else
if o=k then
begin
a[i,j]:=a[i,j]+readkey;
clrscr;
write(a[i,j]);
readln;
end else
begin
a[i,j]:=a[i,j]+readkey;
clrscr;
write(a[i,j]);
end;
end;
end;
end;
end;
procedure print(m: integer; n: integer; k:integer; l:integer; a: TArOfVar);
begin
clrscr;
for i:=1 to m do
begin
for j:=1 to n do
begin
write(' ',real(a[i,j]):k:l);
end;
writeln;
end;
end;
function check(i: integer; j: integer; a: TArOfVar):boolean;
begin
if a[i,j]>0 then check:=true else
if a[i,j]<=0 then check:=false;
end;
procedure ob(i: integer; n: integer; a: TArOfVar; var s: longint);
var t1:real;
t2:integer;
begin
for j:=1 to n do
begin
if check(i,j,a) then
begin
if a[i,j]<1 then s:=s+1;
t1:=a[i,j];
if frac(t1)>0 then
begin
repeat
t1:=t1*10;
until(frac(t1)=0);
end;
t2:=trunc(t1);
repeat
t2:=t2 div 10;
s:=s+1;
until(trunc(t2)=0);
end;
end;
end;
begin
write('Введите к-ство груп чисел: m=');
readln(m);
write('Введите к-ство чисел в групе: n=');
readln(n);
write('Введите к-ство позицый под все число: k=');
readln(k);
write('Введите к-ство позицый под дробную часть: l=');
readln(l);
mread(m,n,k,l,a);
print(m,n,k,l,a);
for i:=1 to m do
begin
s:=0;
ob(i,n,a,s);
writeln('К-ство цыфр положительных чисел в ',i,'-й групе: ',s);
end;
end.