Bài tập Pascal tin học 11 – Tính tổng với mảng 1 chiều đơn giản

Bài tập Pascal tin học 11 – Tính tổng với mảng 1 chiều đơn giản

Hôm nay đọc được một cái đề Pascal tin học 11 với 2 câu hỏi khá thú vị nhưng nhiều người giải đáp quá lằng nhằng và khó hiểu nên mình làm lại bài tập này và đăng lên đây cho mọi người cùng tham khảo. Bài này liên quan đến bài tập mà mình đã ví dụ trước đó nên các bạn xem lại mảng 1 chiều để biết cách sử dụng mảng 1 chiều khi làm bài nha. Trong bài này sẽ đưa ra một số ví dụ về tính tổng trên mảng 1 chiều đơn giản và các bạn sẽ có thể nắm được một cách dễ dàng.

Bài tập Pascal tin học 11 - Tính tổng với mảng 1 chiều đơn giản

 

Bài tập tính tổng với mảng 1 chiều

Bài toán 1: Nhập vào mảng 1 chiều từ bàn phím chỉ chứa được 100 phần tử có giá trị kiểu nguyên. Tính tổng các giá trị là số chẵn sau đó in ra màn hình.

Bài tập này mình cũng đã hướng dẫn trong mảng 1 chiều về cách tìm số chẵn. Cách làm như sau, xây dựng Function TongChan(Var A:Arr100;Var N:Integer):Integer; Trong đó A:Arr100 là mảng 1 chiều có kích thước 100 phần tử và N là số phần tử của mảng mà bạn đưa vào. 

1. Tạo biến S:=0 để lưu tổng chẵn ban đầu bằng 0.

2. Duyệt từ phần tử A[i] đầu tiên đến A[N] kiểm tra nếu chia dư cho 2 bằng 0 => chẵn thì S:=S+A[i].

Đơn giản chỉ có vậy thôi và dưới đây là Function của bài tập này.

Function TongChan(Var A:Arr100;Var N:Integer):Integer;
Var i,S:integer;
Begin
     S:=0;
     For i:=1 to N do
     Begin
        If(A[i] mod 2 = 0) then
        S:=S+A[i];
     End;
     TongChan:=S; {return giá trị tổng S}
End;




Nếu như bạn muốn tính tổng các số lẻ có trong mảng 1 chiều chỉ cần sửa đoạn If(A[i] mod 2 = 0) thenthành If(A[i] mod 2 = 1) then là sẽ thành hàm tính tổng các số lẻ.

Bài toán 2: Cho người dùng nhập mảng 1 chiều biết mảng chỉ chứa được 100 phần tử số nguyên dương. Hãy tính tổng của mảng đều chia hết cho 4 và in kết quả ra màn hình.

Bài tập tương tự như bài ở trên các bạn chỉ cần thay đoạn If(A[i] mod 2 = 0) then thành If(A[i] mod 4 = 0) then là đã có thể sử dụng lại chương trình.

Tổng các số chia hết cho 4 trong mảng 1 chiều


Nếu như có các bài toán tương tự bắt chúng ta tính tổng của các số chia hết cho 3, cho 5, cho 6 cho 7,… thì chúng ta làm sao đây? không thể ngồi viết hàng loạt các chương trình con để tính cho từng bài tập được mà các bạn chỉ cần tạo ra một chương trình con duy nhất có thể sử dụng cho tất cả các trường hợp như sau.

Chương trình đây đủ cho các bạn

Program BTMang1C;
Uses crt;
Const Max = 100;
Type Arr100=array[1..Max] of integer;
Var X,N:integer;
    A:Arr100;
{//Thu tuc nhap mang 1c}
Procedure NhapMang1C(Var A:Arr100;Var N:integer);
Var i:integer;
Begin
     Write('Nhap chieu dai cua mang: ');
     Readln(N);
     For i:=1 to N do
     Begin
          Write('Nhap gt phan tu thu a[‘,i,’]=');
          Readln(A[i]);
     End;

 

 

End;
{//Thu tuc xuat mang 1C}
Procedure XuatMang1C(Var A:Arr100; Var N:integer);
Var i:integer;
Begin
     For i:= 1 to N do
         Write(A[i]:5);
     Writeln;
End;
{//Ham tinh tong so chan}
Function TongChan(Var A:Arr100;Var N:Integer):Integer;
Var i,S:integer;
Begin
     S:=0;
     For i:=1 to N do
     Begin
        If(A[i] mod 2 = 0) then
        S:=S+A[i];
     End;
     TongChan:=S;
End;
 {//Ham tinh tong cac so chia het cho X}
Function TongChiaHetChoX(Var A:Arr100;Var N, X:Integer):Integer;
Var i,S:integer;
Begin
     S:=0;
     For i:=1 to N do
     Begin
        If(A[i] mod X = 0) then
        S:=S+A[i];
     End;
     TongChiaHetChoX:=S;
End;

{//Phan than chuong trinh}
Begin

     Clrscr;
     NhapMang1C(A,N);
     XuatMang1C(A,N);
     Writeln('Tong cac so chan: ',TongChan(A,N));
     Write('Nhap vao so X can tinh tong'); Readln(X); 
     {//Nhap vao so X ma ban muon tinh tong chia het cho X
        //Vi du X = 3 => Tinh tong chia het cho 3
     }
     Writeln('Tong cac so chia het cho ',X,'=> S:=',TongChiaHetChoX(A,N,X));
     Readln;
End.

Share this post:

Recent Posts

Leave a Comment