Các bài toán về mảng 1 chiều

59 views
Skip to first unread message

tienph...@gmail.com

unread,
Feb 1, 2013, 8:14:42 PM2/1/13
to thcsthait...@googlegroups.com

tienph...@gmail.com

unread,
Feb 18, 2013, 7:10:43 PM2/18/13
to thcsthait...@googlegroups.com, tienph...@gmail.com

Bài 5: Cho bảng số liệu thống kê ban đầu có a1, a2, a3, …, an giá trị (với n là số các giá trị của dấu hiệu n<100). Hãy lập bảng tần số, tính số trung bình cộng làm tròn 2 chữ số thập phân, tìm mốt của dấu hiệu.

Dữ liệu: Tệp văn bản f5.inp:

- Dòng đầu ghi n

- Dòng tiếp theo ghi các giá trị a1 a2 a3 … an. Mỗi giá trị cách nhau một khoảng trắng.

Kết quả: Ghi ra tệp văn bản f5.out:

- Dòng đầu ghi các giá trị khác nhau mỗi giá trị cách nhau một khoảng trắng.

- Dòng tiếp theo ghi tần số tương ứng

- Dòng tiếp theo ghi số trung bình cộng

- Dòng tiếp theo ghi mốt của dấu hiệu

Ví dụ:

f5.inp

  

f5.out

20

4 8 9 7 6 5 5 8 5 6

2 8 7 9 6 8 4 3 2 5

 

2 3 4 5 6 7 8 9

2 1 3 4 3 2 4 2

6.05

5 8


On Saturday, February 2, 2013 8:14:42 AM UTC+7, tienph...@gmail.com wrote:

tienph...@gmail.com

unread,
Feb 18, 2013, 7:12:13 PM2/18/13
to thcsthait...@googlegroups.com, tienph...@gmail.com
Lời giải Bài 5 tham khảo
type mang100=array[1..100] of integer;

var
f:text;
a,b,ts:mang100;
n,m,i,tsmax,nts:integer;
procedure input(var a:mang100; var n:integer);
        var
                f:text;
                i:integer;
        begin
                assign(f,'thongke.inp');
                reset(f);
                read(f,n);
                for i:=1 to n do
                        read(f,a[i]);
                close(f);
        end;
procedure swap(var a,b:integer);
     var tam:integer;
     begin
        tam:=a;
        a:=b;
        b:=tam;
     end;
procedure sapxeptang(var a:mang100; n:integer);
   var
        i,j:integer;
   begin
        for i:=1 to n-1 do
            for j:=i+1 to n do
                if a[i]>a[j] then
                    swap(a[i],a[j]);
   end;
procedure khacnhau(a:mang100; n:integer; var b:mang100; var m:integer);
     var
        i:integer;
     begin
        sapxeptang(a,n);
        m:=1;
        b[m] :=a[1];
        for i:=2 to n do
            if a[i]<>a[i-1] then
                begin
                        m:=m+1;
                        b[m]:=a[i];
                end;
     end;
function dem(x:integer;a:mang100; n:integer):integer;
        var
                i:integer;
        begin
            dem:=0;
            for i:=1 to n do
                if a[i]=x then
                    dem:=dem+1;
        end;
procedure tanso(a:mang100; n:integer; var ts:mang100; var m:integer);
        var
                i:integer;
        begin
                khacnhau(a,n,b,m);
                for i:=1 to m do
                        ts[i]:=dem(b[i],a,n);
        end;

function max(a:mang100; n:integer):integer;
     var
        i:integer;
     begin
           max:=a[1];
           for i:=2 to n do
                if a[i]>max then
                   max:=a[i];

     end;

begin
        input(a,n);
        khacnhau(a,n,b,m);
        assign(f,'thongke.out');
        rewrite(f);

        {Ghi gia tri khac nhau vao file thongke.out}
        for i:=1 to m do
                write(f,b[i],' ');

        {Ghi tan so vao file thongke.out}
        writeln(f);
        tanso(a,n,ts,nts);
        for i:=1 to nts do
                write(f,ts[i],' ');

        {Ghi tan so vao file thongke.out}
        tsmax:=max(ts,m);
        writeln(f);
        for i:=1 to m do
                if ts[i]=tsmax then
                        write(f,b[i],' ');
        close(f);
end.
Reply all
Reply to author
Forward
0 new messages