Читать m груп(2≤m≤10) по n штук(4≤n≤50) в групе вещественвених чисел в фиксированом формате(k позиций (6≤k≤15) отводится под все число і l позиций (3≤l≤9) отводится под дробную часть). В каждой групе вычислить количество цыфр положительных чисел. Написать подпрограмы (функции или/и процедури) для вычисления и проверок указанных свойств, чтения и вывода чисел — Pascal(Паскаль)

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.

Leave a Comment

9 + 1 =