Bài tập về Mảng

mọi người giúp e với ạ em làm nhưng ko in ra đc kq chèn
chèn một số mà không thay đổi thứ tự sắp xếp

#include<bits/stdc++.h>
using namespace std;
void nhap(double a[], int n){
    for(int i=0; i<n; i++){
        cin>>a[i];
    }
}
void sapXep(double a[], int n) {
	int i, j;
	for(i = 0; i < n - 1; i++) {
		for(j = n - 1; j > i; j--) {
			if(a[j] < a[j - 1]) {
				int t = a[j];
				a[j] = a[j - 1];
				a[j - 1] = t;
	}}}}
int timViTri(double a[], int n, double x) {
	if(x < a[0]) {
		return 0;
	}
	if(x > a[n-1]) {
		return n;
	}
	int i;
	for(i = 0; i < n; i++) {
		if(a[i] >= x) {
			return i;
	}}}
void chenx(double a[], int n, double x, int k){
     
    for(int i=n-1;i>k;i--){
        a[i]=a[i-1];    
    }
    a[k]=x;
}
void xuat(double a[], int n){
    for(int i=0;i<=n;i++){
        cout<<a[i]<<" ";
    }
} 
int main(){
    double a[1000];
    int n; cin>>n;
    double x;
    nhap(a,n);
    sapXep(a, n);
    cin>>x;
    int v = timViTri(a, n, x);
    chenx(a,n,v,x);
    xuat(a,n);
    return 0;
}

Bạn truyền sai vị trí của 2 tham số cuối ở hàm chenx.

2 Likes

làm sao để in thêm cả số cuối nữa nhỉ mình in bị mất giá trị cuối

1 Like

Mình nghĩ là hàm chèn sau khi chèn xong thì phải tăng kích thước xuất n ra chứ

2 Likes

mình thử tăng n +1 chỗ xuất mà ko ra cậu tăng chỗ nào đấy

Ở cái hàm chenx ấy , vòng lặp for int i = n mới đúng .Vì vd bạn có 4 số , chèn thêm 1 là 5, thì i phải = 5 ( 1 ô trống ) để dồn phần tử lên và trống ở k để chèn vào

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