Bài toán nhập xuất mảng trong C/C++

0
12868
nhap xuat mang trong c

Nhập xuất mảng trong C C++ là một bài toán cơ bản, tương tác nhiều với mảng một chiều. Mảng la một phần kiến thức quan trọng, đừng bỏ lỡ nhé!

1. Giới thiệu bài toán

Nội dung của bài toán:

Viết hàm nhập/xuất mảng a các số nguyên có n phần tử từ bàn phím. Điều kiện giá trị của n phải thỏa mãn 1<n<100. Nếu không thỏa mãn yêu cầu nhập lại.

Đây là bài toán cơ bản áp dụng trực tiếp nhập xuất mảng trong ngôn ngữ C. Bài toán này đòi hỏi bạn đọc phải thành thạo để giải các bài toán ở mức khác.

2. Giải quyết bài toán

Để giải bài toán nhập xuất mảng này, bạn đọc cần nắm vững kiến thức về các câu lệnh in ra màn hình, nhập, xuất (printf, scanf), các vòng lặp như for, do, do while, . . . bên cạnh đó cần nắm được các toán tử cơ bản.

Ngoài ra nắm vững kiến thức về con trỏ và mảng một chiều sẽ giúp bạn hiểu bài toán này tốt hơn

2.1 Ý tưởng giải quyết bài toán

Bài toán chia làm 3 phần.

  • Phần nhập số phần tử của mảng
  • Phần hàm nhập
  • Phần hàm xuất

Để nhập vào số phần tử của mảng do số lần nhập không biết trước nên mình dùng câu lệnh do- while

Về hàm nhập và xuất mình dùng vòng for, nhập/xuất từng phần tử của mảng.

2.2 Code gợi ý nhập xuất mảng trong C

Phần nhập số phẩn tử của mảng, mình sử dụng câu lệnh do while như sau:

	do{

		printf("Nhap n: ");

		scanf("%d",&n);

	}

	while(n<2||n>99);

thực hiện hành động nhập vào n nếu n<2 và n>99 như vậy thì đảm bảo rằng mảng của mình sẽ đảm bảo điều kiện 1<n<100.

Phần hàm nhập:

void nhap(int a[], int &n){

	do{
		printf("Nhap n: ");

		scanf("%d",&n);

	}

	while(n<2||n>99);

	
	for(int i=0; i<n; i++){

		printf("a[%d]: ",i);

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

	}

}

ở đây mình cho luôn điều kiện nhập n vào trong hàm nhập.

Phần hàm xuất:

void xuat(int a[], int n){

	printf("Mang vua nhap la: \n");

	for(int i=0;i<n;i++){

		printf("%5d",a[i]);

	}

}

Lưu ý: (mình viết mỗi dòng code cách nhau một dòng trắng giúp cho việc nhìn của bạn dễ dàng hơn thôi nhé!)

Toàn bộ bài toán:

#include<stdio.h>
void nhap(int a[], int &n){.
	do{
		printf("Nhap n: ");
		scanf("%d",&n);
	}
	while(n<2||n>99);
	
	for(int i=0; i<n; i++){
		printf("a[%d]: ",i);
		scanf("%d",&a[i]);
	}
}

void xuat(int a[], int n){
	printf("Mang vua nhap la: \n");
	for(int i=0;i<n;i++){
		printf("%5d",a[i]);
	}
}
int main(){
	int a[100];
	int n;
	nhap(a,n);
	xuat(a,n);
	return 0;
}

3. Nhập xuất mảng trong C++

Về ý tưởng và cách giải bài toán vẫn vậy, chỉ khác một chút cấu trúc ngôn ngữ C và C++

#include<bits/stdc++.h>
using namespace std;
void nhap(int a[], int &n){
	do{
		cout<<("Nhap n: ");
		cin>>n;
	}
	while(n<2||n>99);
	for(int i=0; i<n; i++){
		cout<<"a["<<i<<"]: ";
		cin>>a[i];
	}
}

void xuat(int a[], int n){
	for(int i=0;i<n;i++){
		cout<<"  "<<a[i];
	}
}
int main(){
   int a[100];
   int n;
   nhap(a,n);
   cout<<"\nMang vua nhap: "<<endl;
   xuat(a,n);
   return 0;
}

Kết quả sau khi chạy chương trình phía trên:

mình test luôn cả điều kiện nhập n rồi đó :))

nhap xuat mang trong c 1

Các bạn tham khảo bài viết của mình, sau đó cố gắng tự viết ra những dòng code của riêng mình với tư tưởng của mình đã đưa ra nhé!

Các bạn có thể tham khảo video sau để hiểu cụ thể hơn:

Xem tiếp giải chi tiết bài toán tiếp theo

Xem lại tổng quan đề cương nhập môn lập trình

Tải về đề cương nhập môn lập trình.

Mọi vướng mắc trong quá trình làm bài tập, các lỗi .v.v. bạn đọc có thể comment đề admin hỗ trợ nhé!

Nội dung bài viết chỉ mang tính khách quan, rất mong nhận được đóng góp ý kiến của bạn đọc về thuật toán, cách trình bày v.v. để bài viết được hoàn thiện hơn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here