Logic error code java

giờ nó lại bị mất giá trị cuối

cái mảng a chưa đc khai báo lại giờ làm nào để khai báo lại mảng a với giá trị n mới vậy bác ơi…

Khai báo hẳn lên thành n+1 (hay khai hẳn lên n+9) đi. Rõ ràng bạn biết độ dài cuối cùng của mảng là n+1 cơ mà.

ơ là nào??? cái mảng cũ của em nó chỉ có 5 phần tử, giờ em dịch nó đi 1 phần tử nên nó mấy luôn cái giá trị a[n -1], ôi rối quá rồi

Bạn tìm được vị trí giữa i và i+1 để chèn phần tử x vào. Mảng a đang từ

a[0] a[1] ... a[i] a[i+1] ... a[n-1]

sẽ trở thành

a[0] a[1] ... a[i] x a[i+1] ... a[n-1]

Điều này đồng nghĩa với việc

a[i+1] = x
a[i+2] = a[i+1]  // phàn tử a[i+1] bị tiến lên 1 ô
a[i+3] = a[i+2]  // tương tự
...
a[n] = a[n-1]

Lúc này mảng a sẽ có n+1 phần tử (a có n phần tử, thêm 1 phần tử nữa thì a có mấy phần tử đây?).

không, em chạy từ dưới lên chứ chạy kia thì tất cả nó đều nhận giá trị của x hết. vì k thể for(j = n) được nên nó bị mất giá trị a[n-1]

x > a[i] thì rõ ràng a[i] != x rồi còn gì nữa :expressionless:

Khai mảng n+1 phần tử và n++ chưa?

à cái đấy xóa rồi :v

chưa, thì mới đang hỏi bác khai mảng mới như nào. a[] = new a[n] không đc

Khai ngay ở đầu a[] = new a[n+1] là khai mảng với n+1 phần tử rồi còn gì nữa.

1 Like

hù, cuối cùng cũng xong 1 phần. nãy nhầm, cứ nghĩ thêm như thế thì tí mình lại nhập hơn 1 giá trị a[i], :v dù sao cám ơn bác đã thông não, mới học nên nhiều chỗ k hiểu mong bác bỏ qua :V

Tạo 1 void để sắp xếp Array theo thứ tự từ bé đến lớn là xong, add số x vào rồi dùng void đấy sắp xếp lại là dc :slight_smile: Đó là cách của mk :slight_smile:

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