Em muốn hỏi thứ tự khai báo biến trong c++ có ảnh hưởng đến kết quả chương trình không ạ ? Trước kia em cứ nghĩ trước khi dùng khai báo là được nhưng nay em làm bài gặp 1 vấn đề :(( nếu em khai báo biến vitrixoa ngay từ đầu hàm main thì chương trình trả về kết quả đúng, còn nếu khai báo biến vitrixoa trước khi nhập thì chương trình trả về kết quả sai ạ…Các bác giải thích giúp em với ạ…Dưới là code của em ạ:
//Chèn mảng,Xóa mảng
#include <iostream>
using namespace std;
void nhapmang(int a[], int n)
{
for(int i=0;i<n;i++)
cin>>a[i];
}
void xuatmang(int a[],int n)
{
for(int i =0;i<n;i++) cout<<a[i]<<"\t";
}
void chen(int a[],int &n,int vitri,int socanchen)
{
int i;
for(i=n;i>=vitri;i--)// n = 5 thì có 4 vị trí 0 1 2 3 4, i bắt đầu từ n là 5 nghĩa là có thêm 1 phần tử
{
a[i] = a[i-1];
}
a[vitri] = socanchen;
n++;
}
void xoa(int a[],int &n, int vitrixoa)
{
for(int i = vitrixoa;i<=n;i++)
a[i] = a[i+1];
n--;//Quên không giảm n sẽ không giảm số lượng phần tử và xuất hiện phần tử thưà
}
int main()
{
int i,n;
int vitrixoa;
cout<<"So luong phan tu: n = ";
cin>>n;
int a[n];
cout<<"Nhap lan luot tung phan tu:\n";
nhapmang(a,n);
cout<<"Mang da nhap la:\n";
xuatmang(a,n);
int vitrichen;
cout<<"\nvitrichen = ";
cin>>vitrichen;
int socanchen;
cout<<"So can chen = ";
cin>>socanchen;
chen(a,n,vitrichen,socanchen);//&n hay n ???
cout<<"Mang sau khi chen la: "<<endl;
xuatmang(a,n);
cout<<"vitrixoa = ";
cin>>vitrixoa;
xoa(a,n,vitrixoa);
cout<<"Mang sau khi xoa la: "<<endl;
xuatmang(a,n);
return 0;
}