Nhập vào mảng N số nguyên gồm 20 phần tử tính và in ra màn hình tổng các phần tử của mảng

1. Pascal Nhập xuất và tính tổng các phần tử trong mảng

Nhập xuất và tính tổng các phần tử trong mảng.

Ví dụ: A:        1   5   6   7   4 

Kết quả:          Tong S = 23

Hướng dẫn: Để giải quyết bài toán cần phải đảm bảo các vấn đề:

-  Nhập mảng, có thể xây dựng thành hàm để đóng gói và sử dụng lại. Các thao tác theo yêu cầu:

(1) Nhập số N.

(2) Tiến hành lặp (từ 0 đến N-1) và nhập cho các giá trị Ai trong mảng.

Lưu ý: N phải được vào truyền theo dạng tham biến (tức là &N)

-  Xuất mảng. Công việc đơn giản là sử dụng voøng lặp từ 0 đến N-1 để in ra các giá trị Ai cho mảng. Sau đó, Writeln  xuống dòng.

-   Hàm tính tổng các phần tử cho một mảng A

+ Khai báo và khởi tạo toång S là 0.

+ Sử dụng một vòng lặp (từ 0 đến N-1 để duyệt qua tất cả các giá trị Ai) để tính cộng dồn giá trị của Ai vào tổng S.

-  Viết thân chöông trình chính với nội dung dùng để kiểm tra kết quả thực hiện của hàm.

+ Khai báo mảng A có tối đa 20 phần tử và biến N chỉ số lượng phần tử của A.

+ Gọi hàm nhập mảng để nhập mảng A, với N phần tử.

+ Gọi hàm xuất mảng A, với N phần tử.

+ In giá trị của tổng các phần tử bằng cách truyền trực tiếp giá trị trả về của việc tính tổng cho Writeln(……)

+ Gọi hàm Readln( ) trước khi kết thúc  để dừng lại xem kết quả.

Chương trình:

2. Một số 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.

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) then thà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.

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

Ví dụ 1 : Tính trung bình 10 số nguyên nhập vào từ bàn phím, bạn sẽ khai báo 10 biến: a, b, c, d, e, f, g, h, i, j có kiểu int và lập thao tác nhập cho 10 biến này như sau:

       printf("Nhap vao bien a: ");

       scanf("%d", &a);

      10 biến bạn sẽ thực hiện 2 lệnh trên 10 lần, sau đó tính trung bình:

      (a + b + c + d + e + f + g + h + i + j)/10

       Điều này chỉ phù hợp với n nhỏ, còn đối với n lớn thì khó có thể thực hiện được. Vì vậy, khái niệm mảng được sử dụng.

Khai báo

Ví dụ 2 : int ia[10]; với int là kiểu của mảng, ia là tên mảng, 10 là số phần tử của mảng, tức mảng ia có tối đa 10 phần tử

Ý nghĩa: Khai báo một mảng số nguyên gồm 10 phần tử, mỗi phần tử có kiểu int.

Các phần tử của mảng ia được mô tả như sau:

Nhập vào mảng N số nguyên gồm 20 phần tử tính và in ra màn hình tổng các phần tử của mảng
Mảng 10 phần tử nguyên

Từ ví dụ 2 ta có cú pháp khai báo mảng như sau:

Tên_kiểu tên_biến[spt];

Diến giải:

- Tên_kiểu là tên  của kiểu dữ liệu mà bạn muốn khai báo cho mảng

- Tên_biến là tên của mảng mà bạn muốn khai báo

- Spt: là số phần tử tối đa của mảng mà bạn muốn khai báo hay còn gọi là kích thức của mảng

 Tham chiếu đến từng phần tử mảng

Sau khi mảng được khai báo, mỗi phần tử trong mảng đều có chỉ số để tham chiếu. Chỉ số bắt đầu từ 0 đến n-1 (với n là kích thước mảng). Trong ví dụ 2, ta khai báo mảng 10 phần tử thì chỉ số bắt đầu từ 0 đến 9.

Nhập vào mảng N số nguyên gồm 20 phần tử tính và in ra màn hình tổng các phần tử của mảng
Mảng được đánh số bắt đầu từ 0 

Như vậy, để truy xuất đến phần tử thứ i trong mảng ia ta viết ia[i], trong đó i chỉ được phép nhận một trong các giá trị từ 0 đến 9 vì mảng ia được khia báo chỉ có 10 phần tử

Nhập dữ liệu cho mảng

Mảng là một dãy các phần tử có cùng kiểu dữ liệu, việc nhập dữ liệu cho từng phần tử của mảng cũng giống như nhập dữ liệu cho biến thông thường

Ví dụ 3

for (i = 0; i < 10; i++) //vòng for có giá trị i chạy từ 0 đến 9

{

printf("Nhap vao phan tu thu %d: ", i + 1);

scanf("%d", &ia[i]);

}

Ví dụ 4: Viết chương trình nhập vào n số nguyên. Tính và in ra trung bình cộng.

#include <stdio.h>

#include <conio.h>

void main(void)

{

int ia[50], i, in, isum = 0;

printf("Nhap vao gia tri n: ");

scanf("%d", &in);

//Nhap du lieu vao mang

for(i = 0; i < in; i++)

{

printf("Nhap vao phan tu thu %d: ", i + 1);

scanf("%d", &ia[i]); //Nhap gia tri cho phan tu thu i

}

//Tinh tong gia tri cac phan tu

for(i = 0; i < in; i++)

       isum += ia[i]; //cong don tung phan tu vao isum

printf("Trung binh cong: %.2f\n", (float) isum/in);

getch();}

Ví dụ 5: Có 4 loại tiền 1, 5, 10, 25 và 50 đồng. Hãy viết chương trình nhập vào số tiền sau đó cho biết số số tiền trên gồm mấy loại tiền, mỗi loại bao nhiêu tờ

#include <stdio.h>

#include <conio.h>

#define MAX 5

void main(void)

{

int itien[MAX] = {50, 25, 10, 5, 1}; //Khai bao va khoi tao mang voi 5 phan tu

int i , isotien, ito;

printf("Nhap vao so tien: ");

scanf("%d", &isotien); //Nhap vao so tien

for (i = 0; i < MAX; i++)

{

ito = isotien/itien[i]; //Tim so to cua loai tien thu i

printf("%4d to %2d dong\n", ito, itien[i]);

isotien = isotien%itien[i]; //So tien con lai sau khi da loai tru cac loai tien da co

}

getch();

}

Đọc dữ liệu từ mảng

Việc đọc dữ liệu của mảng chúng ta cần chỉ rõ là cần đọc dữ liệu của phần tử thứ mấy trong mảng

Ví dụ 5:

for(i = 0; i < 10; i++)

printf("%3d ", ia[i]);

Sử dụng biến mảng

Ngoài kiểu int, bạn có thể khai báo mảng kiểu char, float, double…

Ví dụ 6: char cloai[20]; float ftemp[10];

Cách tham chiếu, nhập dữ liệu, đọc dữ liệu thực hiện như trên.

Bài tập thực hành.

Xây dựng các hàm để thực hiện các công việc sau

- Hàm Khoi_tao cho phép nhập vào một mảng gồm n phần tử số nguyên

- Hàm In_xuôi và hàm In_nguoc cho phép in mảng ra màn hình theo thứ tự xuôi và ngược

- Hàm Tim_max và hàm Tim_min để tìm giá trị nhỏ nhất và lớn nhất của mảng

- Hàm Tinh_tong cho phép Tính tổng các giá trị trong mảng

- Hàm Tinh_tong_duong và hàm Tinh_tong_am cho phép tính tổng các phần tử có giá trị dương và âm trong mảng

- Hàm Sap_xep_tang và hàm Sap_xep_giam để sắp xếp mảng theo thứ tự tăng dần và giảm dần

- Xây dựng chương trình chính gồm 1 menu như sau:

----------------------------------------------------

MENU CHUONG TRINH

---------------------------------------------------

1: Khoi tao mang

2: In mang ra man hinh

3: In mang dao nguoc ra man hinh

4: Tim gia tri max cua mang

5: Tim gia tri min cua mang

6: Tinh tong

7: Tinh tong cac phan tu duong

8: Tinh tong cac phan tu am

9: Sap xep tang dan

10 Sap xep giam dan

11: Thoat

Moi ban chon so tuong ung:

Khi người sử dụng chọn 1 số tương ứng của mục tương ứng của menu thì gọi đến hàm tương ứng đó để thực hiện

Gợi ý:

- Xây dựng tất cả các hàm tương ứng với yêu cầu của đề bài

- Xây dựng thêm hàm có tên gọi là inmenu để in ra menu như yêu cầu

- Viết hàm main, đầu tiên là gọi hàm inmenu, tiếp đến dùng lệnh switch theo mẫu

switch (ichon){

            case 1: gọi hàm khoi tạo mảng

                        break;

            case 2: gọi hàm in mảng ra màn hình

                        break;            …

case 10: gọi hàm sắp xếp giảm dần

}

Lưu ý, chương trình chỉ đóng lại khi người sử dụng chọn số 11 (dùng vòng lặp bao bên ngoài lệnh switch, điều kiện dừng khi người sử dụng nhấn số 11).

Ví dụ có video:

Viết chương trình C/C++ nhập vào một mảng n số nguyên sau đó tính tổng các số chia hết cho 3 trong mảng. Tính tổng của các số nằm trong khoảng [10,20]


Bài tập có lời giải:

         1. Viết chương trình C++nhập 10 giá trị nguyên, sau đó tìm giá trị lớn nhất, nhỏ nhất, tìm giá trị có tầnsuất xuất hiện nhiều nhất, sắp xếp mảng theo thứ tự tăng dần, giảm dần và hiểnthị kết quả.

2. Viết một chương trình C++ để hiển thị một menu cho phép người dùng lựa chọnhoặc quan sát tất cả bản ghi của sinh viên hoặc chỉ quan sát các bản ghi của mộtsinh viên cụ thể bởi lựa chọn id của sinh viên đó.

3. Viết chương trình C++ để hiển thị một bảng các số như yêu cầu đề bài sau:

1

2

3

4

5

6

7

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25


           4. Viết chương trình C++ để nhập và hiển thị một ma trận có kích thước là 5x5,trong đó: các phần tử trên đường chéo được điền giá trị 0, các phần tử của tamgiác dưới đường chéo được điền các giá trị -1, và ở tam giác trên là được điền với các giá trị 1.
          5. Viết chương trình C++ để tính tổng mỗi hàng, mỗi cột của một ma trận có kíchcỡ n x m, và nếu là ma trận vuông thì tính tổng đường chéo.
          6. Viết chương trình C++ để nhập và hiển thị tam giác Pascal.  hàng đầu tiên và thứ hai được thiếtlập là 1. Bắt đầu từ hàng thứ ba trở đi, mỗi phần tử là tổng của phần tử ngaytrên nó và phần tử bên trái của phần tử ngay trên đó.
         7. Viết chương trình C++ để nhập 10 số nguyên trong một mảng một chiều, sau đósắp xếp và in mảng đó theo thứ tự tăng dần.
         8. Viết chương trình C++ để nhập một ma trận vuông 4x4, tính tổng các phần tửtrên đường chéo và sau đó in kết quả.

----------------------------------------------------------------------------------------------------------------

Download bài giải ở đây.