Bài tập về mảng trong C++

dạ mọi người cho e hỏi, ở hàm chen ấy ạ em muốn chèn phần tử vào mảng ban đầu khi chưa qua hàm sắp xếp thì làm như nào ạ. Em thấy toàn chèn phần tử vào mảng đã qua sắp xếp!!

#include<iostream>

using namespace std;

void nhap(int arr[], int &n) {
	do{
		cout << "Nhap vao so nguyen n (1 <= n <= 20): ";
		cin >> n;
		if(n < 1 || n > 20) {
			cout << "\nn khong hop le, vui long nhap lai!!" << endl;
		}
	}while(n < 1 || n > 20);
	
	cout << "Nhap vao mang so nguyen A[] co " << n << " phan tu: ";
	for(int i = 0; i < n; i++) {
		cin >> arr[i];
	}
}

void xuat(int arr[], int n) {
	cout << "Mang vua nhap la: ";
	for(int i = 0; i < n; i++) {
		cout << arr[i] << " ";
	} 
}

void sapxep(int arr[], int n) {
	for (int i = 0; i < n; i++) {
		for (int j = i+1; j < n; j++) {
			if(arr[i] > arr[j]) {
				int temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
	}
	cout << "\nMang A[] theo chieu tang dan la: ";
		for(int i = 0; i < n; i++) {
			cout << arr[i] << " ";
		}
}

void chen(int arr[], int n, int k, int x) {
	cout << "\nNhap so nguyen x: "; cin >> x;
	do{
		cout << "nhap so nguyen k (1 <= k <= n): ";
		cin >> k;
		if(k < 1 || k > n) {
			cout << "\nk khong hop le, vui long nhap lai!!" << endl;
		}
	}while(k < 1 || k > n);
	
	for (int i = n; i >= k+1; i--) {
		arr[i] = arr[i-1];
	}
	arr[k] = x;
	n++;
	cout << "Day moi khi chen la: ";
	for (int i = 0; i < n; i++) {
		cout << arr[i] << " ";
	}
}
int main() {
	int n, k, x;
	int arr[1000];
	nhap(arr, n);
	xuat(arr, n);
	sapxep(arr, n);
	chen(arr, n, k, x);
	return 0;
}

Do chỉ có 1 mảng nên sẽ chỉ thấy mảng đã sắp xếp, nên cần tạo thêm mảng nữa để lưu bản sao.

4 Likes

dạ vâng, em cảm ơn ạ.

Với mảng đã sắp xếp: tìm vị trí k để chèn sao cho mảng vẫn giữ đúng thứ tự rồi chèn vào vị trí k.
Với mảng chưa sắp xếp: chèn vào vị trí k cho trước.
Nên tính ra là bạn biết làm việc khó mà không làm được việc dễ á :thinking:

3 Likes

e nghĩ khi dùng hàm chen thì nó sẽ dùng luôn cái mảng đã sắp xếp ở trước nó

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?