Cho dãy a gồm n số nguyên từ a1, a2...an (n<=300) và số nguyên k nhập từ bàn phím. a.Viết chương trình đếm số lượng các số trong dãy lớn hơn k viết kết quả vào file BT1.OUT...

Cho dãy a gồm n số nguyên từ a1, a2...an (n<=300) và số nguyên k nhập từ bàn phím.
  • Viết chương trình đếm số lượng các số trong dãy lớn hơn k viết kết quả vào file BT1.OUT
  • Tính tổng của các phần tử chia hết cho k và viết kết quả ra màn hình
Bài tập này được giải như sau:
program codevodoi;
uses crt;
var fo:text;
    S,k,n:integer;
    i,d:byte;
    a:array[0..300] of integer;
begin
    assign(fo,'BT1.OUT');
    rewrite(fo);
    write('Nhap so luong phan tu: ');
    readln(n);
    for i:=1 to n do
        begin
            write('Nhap so thu ',i,' :');
            readln(a[i]);
        end;
    write('Nhap so k: ');
    readln(k);
    { Câu a }
    d:=0;
    for i:=1 to n do
        if a[i] > k then d:=d+1;
    write(fo,'So luong phan tu lon hon k la ',d);
    close(fo);
    {Câu b}
    S:=0;
    for i:=1 to n do 
        if a[i] mod k = 0 then S:=S+a[i];
    writeln('Tong cua cac phan tu chia het cho k la ',S);
end.
Bài này cũng có thể được viết ngắn gọn hơn như sau:
program codevodoi;
uses crt;
var fo:text;
    l,S,k,n:integer;
    i,d:byte;
begin
    assign(fo,'BT1.OUT');
    rewrite(fo);
    write('Nhap so k: ');
    readln(k);

    write('Nhap so luong phan tu: ');
    readln(n);

    d:=0;
    S:=0;
    for i:=1 to n do
        begin
            write('Nhap so thu',i);
            readln(l);
            { Câu a }
            if l > k then d:=d+1;
            { Câu b }
            if l mod k = 0 then S:=S+l;
        end;
    
    write(fo,'So luong phan tu lon hon k la ',d);
    close(fo);
    writeln('Tong cac phan tu chia het cho k la ',S);
    readln;
end.
Ngoài ra còn nhiều cách giải khác tối ưu hơn và nếu gặp thắc mắc hoặc cần góp ý, giải đáp. Các ông có thể để lại bình luận😋