Viết chương trình nhập mảng n-1 n 100 phần tử số nguyên dương các giá trị trong mảng không quá 1000
Show Khách Hãy nhập câu hỏi của bạn vào đây
Dưới đây là một vài câu hỏi có thể liên quan tới câu hỏi mà bạn gửi lên. Có thể trong đó có câu trả lời mà bạn cần!
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 This entry is part 39 of 69 in the series Học C Không Khó 90 / 100 Mảng 1 chiều là cấu trúc dữ liệu đầu tiên và cũng là cấu trúc dữ liệu đơn giản & phổ biến nhất. Mảng 1 chiều hay tiếng anh là One-Dimensional Array là bài viết đầu tiên trong loạt bài viết hướng dẫn về cấu trúc dữ liệu tại Blog Nguyenvanhieu.vn. Hi vọng series này cung cấp cho các bạn những kiến thức bổ ích về phần kiến thức cấu trúc dữ liệu. Bài viết hôm nay sẽ trình bày về mảng 1 chiều. Sau bài học này, bạn có thể ghé thăm bài học “Bài tập mảng 1 chiều có lời giải” để luyện tập kiến thức nhé. Hoặc bạn có thể tự luyện tập trực tuyến nhiều bài tập khác website Luyện Code Online. 1. Lý thuyết về mảng 1 chiềuMảng là một tập hợp tuần tự các phần tử có cùng kiểu dữ liệu và các phần tử được lưu trữ trong một dãy các ô nhớ liên tục trên bộ nhớ. Các phần tử của mảng được truy cập bằng cách sử dụng “chỉ số”. Mảng có kích thước N sẽ có chỉ số từ 0 tới N – 1. Ví dụ, với N = 5, khi đó chỉ số mảng(tiếng anh là index) sẽ có giá trị từ 0 tới 4(5-1) tương ứng với 5 phần tử. Các phần tử trong mảng được truy cập bằng cách sử dụng array_name[index]. Hãy xem xét mảng sau, kích thước của mảng là 5. Nếu bạn muốn truy cập giá trị 12, bạn có thể truy cập bằng cách gọi arr[1]. 2. Khai báo mảng 1 chiềuCú pháp khai báo mảng 1 chiều khác nhau với từng ngôn ngữ lập trình. Chẳng hạn, trong C/C++, việc khai báo mảng cần 2 tham số sau:
Một ví dụ khai báo mảng trong C/C++: Đây là cách khai báo mảng tĩnh; cách khác là khai báo động kích thước vừa đủ dùng. Đối với mảng động, kích thước mảng sẽ tăng lên khi số lượng phần tử mảng tăng lên vượt qua kích thước cũ. 3. Khởi tạo mảng 1 chiềuMảng có thể được khởi tạo ngay tại thời điểm khai báo mảng hoặc khởi tạo sau khi khai báo. Cú pháp để khởi tạo mảng trong khi khai báo là:
Một ví dụ khai báo kèm khởi tạo mảng trong C/C++:
Mảng cũng có thể được khởi tạo sau khi khai báo xong, bằng cách gán giá trị cho từng phần tử của mảng sử dụng chỉ số:
Ví dụ trên C/C++:
4. Các thao tác với mảng 1 chiềuMột thao tác đơn giản nhất và hay sử dụng nhất đó là việc lặp qua tất cả các phần tử của mảng theo cách sau:
Một ví dụ trên ngôn ngữ C:
Để cho code chúng ta được tối ưu hơn, sau đây tôi xin chia mỗi chức năng thành 1 hàm riêng biệt: 4.1. Thao tác nhập mảng 1 chiềuHàm này nhận vào các đối số là mảng kiểu nguyên a, và số lượng phần tử n. Hàm không trả về giá trị gì nên có kiểu là void.
4.2. Thao tác xuất mảng 1 chiềuTương tự như hàm nhập, hàm XuatMang cũng nhận vào mảng kiểu nguyên a và số lượng phần tử n. Hàm có giá trị trả về là kiểu void.
4.3. Chức năng tìm kiếm trong mảng 1 chiềuVẫn nhận vào các đối số như 2 hàm nhập và xuất, và nhận thêm một đối số khác nữa là giá trị cần tìm kiếm v. Tuy nhiên, hàm này sẽ trả về chỉ số đầu tiên mà giá trị tại đó giá trị bằng với v. Nếu không có giá trị nào thỏa mãn, hàm trả về giá trị -1.
Đây là một hàm thực hiện tìm kiếm tuyến tính có độ phức tạp O(n). Bằng cách duyệt qua từng phần tử của mảng để kiểm tra. Full source code và lời gọi hàm trong hàm main:
Chạy thử chương trình:
5. Bài tập thực hànhBài tập mảng cơ bảnCho kích thước và các phần tử của mảng A. Hãy in các phần tử của mảng A theo thứ tự ngược lại. Input:
Output:
Ràng buộc:
Bài tập mảng nâng caoMột số vấn đề có vẻ khó nhưng thực chất chúng rất đơn giản. Hôm này Admin Hiếu gặp khó khăn với bài toán truy vấn phạm vi. Anh ấy có một mảng 1 chiều cứa các giá trị nhị phân 0 và 1. Có 2 kiểu truy vấn: 0 L R: Kiểm tra số được hình thành từ L tới R là số chẵn hay lẻ. Số được hình thành từ L tới R là giá trị thập phân của các số nhị phân từ L tới R kết hợp lại. 1 X: Đổi giá trị nhị phân tại chỉ số thứ X. Input:
Ouput:
Ràng buộc:
Giải thích: Truy vấn đầu tiên là 1 2, do đó ta đổi giá trị tại chỉ số mảng 2 từ 1 thành 0, khi đó mảng mới là: 1 0 0 1 0. Truy vấn thứ 2 là 0 1 4, khi đó 01102 = 02^0 + 12^1 + 1*2^2 = 610 là số chẵn; Do đó, đáp án là EVEN. Lưu ý: Các bạn nộp bài tập xuống mục bình luận của bài học. Admin sẽ chữa bài và đánh giá lời giải giúp các bạn. |