275/ Xóa tất cả số chính phương trong mảng.
Trang 1}
}
}
}
voi d Tr onMang(int a[], int b[], int c[], int na, int nb, int &nc) {
nc = na + nb;
sapxe p(a,na); //Sap xe p tang mang A
sapxe p(b,nb); //Sap xe p tang mang B
int vta=0,vtb=0;
for (i nt i =0;i<nc;i++)
{
if (vta < na && vtb < nb)
{
if (a[vta] < b[vtb])
{
c[i] = a[vta];
vta++;
}
else
{
c[i] = b[vtb];
vtb++;
}
}
else if (vtb == nb)
{
c[i] = a[vta];
vta++;
}
else
{
c[i] = b[vtb];
vtb++;
}
}
}
265/ Cho 2 mảng tăng Hãy trộn thành 1 mảng giảm dần voi d sapxe p(int a[],int n)
{
for (i nt i =0;i<n;i++)
{
for (int j=i +1;j<n;j++)
{
if (a[i]>a[j])
{
int te mp=a[i];
a[i] = a[j];
a[j]=te mp;
}
}
}
}
voi d Tr onMang(int a[], int b[], int c[], int na, int nb, int &nc) {
nc = na + nb;
sapxe p(a,na); //Sap xe p tang mang A
sapxe p(b,nb); //Sap xe p tang mang B
int vta=na-1, vtb=nb-1;
for (i nt i =0;i<nc;i++)
{
if (vta >= 0 && vtb >= 0)
{
if (a[vta] > b[vtb])
{
c[i] = a[vta];
vta ;
Trang 2}
else
{
c[i] = b[vtb];
vtb ;
}
}
else if (vtb < 0)
{
c[i] = a[vta];
vta ;
}
else
{
c[i] = b[vtb];
vtb ;
}
}
}
Kĩ thuật thêm
266/ Thêm 1 ptử x vào mảng tại vị trí k
voi d the mgiatri(int a[], i nt &n, i nt x, int k)
{
for (i =n; i>k; i )
{
a[i] = a[i -1];
}
a[k] = x;
n++;
}
267/ Hàm nhập mảng sao cho khi nhập xong thì giá trị trong mảng sắp xếp giảm dần voi d nhapmang(int a[], int &n)
{
printf("Nhap mang 1 chieu\n");
printf("Nhap n : "); scanf("% d",&n);
while (n<=1 )
{
printf("Nhap l ai n : " );
scanf("% d",&n);
}
int i,j,k;
for (i =0; i <n; i++)
{
printf("\tNhap a[% d] : ", i);
scanf("% d",&a[i]);
for (j=0; j<i;j++)
{
if (a[i]>a[j])
{
int te mp = a[i];
for (k = i; k>j; k )
{
a[k] = a[k-1];
}
a[j] = te mp;
bre ak;
}
}
}
}
268/ Hãy tạo mảng b từ mảng a các giá trị 0,1 để mảng có tính chẵn lẻ
269/ Thêm x vào trong mảng tăng nhưng vẫn giữ nguyên tính tăng của mảng
voi d ChenXMang Tang(int a[], int &n, int x)
Trang 3{
int i,j;
for (i =0; i <n;i ++)
{
if (x>a[i])
{
int te mp = x;
for (k = n; k>i ; k )
{
a[k] = a[k-1];
}
a[i] = te mp;
bre ak;
}
}
n++;
}
270/ Nhập mảng sau khi nhập xong đã tự sắp xếp tăng dần voi d nhapmang(int a[], int &n)
{
printf("Nhap mang 1 chieu\n");
printf("Nhap n : "); scanf("% d",&n);
while (n<=1 )
{
printf("Nhap l ai n : " );
scanf("% d",&n);
}
int i,j,k;
for (i =0; i <n; i++)
{
printf("\tNhap a[% d] : ", i);
scanf("% d",&a[i]);
for (j=0; j<i;j++)
{
if (a[i]>a[j])
{
int te mp = a[i];
for (k = i; k>j; k )
{
a[k] = a[k-1];
}
a[j] = te mp;
bre ak;
}
}
}
}
Kĩ thuật xóa
271/ Xóa các ptử có chỉ số k trong mảng
voi d Xoavitri(int a[], i nt &n, int k)
{
for(int i=k; i<n;i++)
{
a[i] = a[i +1];
}
n ;
}
272/ hãy xóa tất cả số lớn nhất trong mảng các số thực voi d xoavitri(float a[], int &n, int k)
{
for (i nt i =k; i<n; i ++)
{
Trang 4a[i] = a[i +1];
}
n ;
}
float lonnhat(float a[], int n)
{
fl oat max = a[0];
for (i nt i =1; i<n ; i++)
{
max=(max<a[i ])?a[i]:max; }
retur n max;
}
voi d xoamang(fl oat a[], int &n)
{
fl oat max = lonnhat(a,n);
for (i nt i =0; i<n; i++)
{
if (a[i]==max)
{
xoavi tri(a,n,i ); i ;
}
}
}
273/ Xóa tất cả số âm trong mảng voi d xoavitri(float a[], int &n, int k) {
for (i nt i =k; i<n; i ++)
{
a[i] = a[i +1];
}
n ;
}
voi d xoamang(fl oat a[], int &n)
{
for (i nt i =0; i<n; i++)
{
if (a[i]<0 )
{
xoavi tri(a,n,i ); i ;
}
}
}
274/ Xóa tất cả số chẵn trong mảng voi d xoavitri(float a[], int &n, int k) {
for (i nt i =k; i<n; i ++)
{
a[i] = a[i +1];
}
n ;
}
voi d xoamang(fl oat a[], int &n)
{
for (i nt i =0; i<n; i++)
{
if (a[i]% 2==0)
{
xoavi tri(a,n,i ); i ;
}
}
}
Trang 5275/ Xóa tất cả số chính phương trong mảng voi d xoavitri(int a[], i nt &n, int k)
{
for (i nt i =k; i<n; i ++)
{
a[i] = a[i +1];
}
n ;
}
int sochinhphuong(int n)
{
int a = (int)s qrt(n);
if (a* a == n)
{
retur n 1;
}
retur n 0;
}
voi d xoamang(int a[], int &n)
{
for (i nt i =0; i<n; i++)
{
if (sochinhphuong(a[i])==1) {
xoavi tri(a,n,i );
i ;
}
}
}
276/ Xóa tất cả các ptử trùng với x
voi d xoavi tri(fl oat a[], int &n, float k)
{
for (int i=k; i <n; i++)
{
a[i ] = a[i+1];
}
n ;
}
voi d xoamang(float a[], int &n, fl oat x)
{
for (int i=0; i <n; i++)
{
if (a[i] ==x)
{
xoavi tri(a,n,i );
i ;
}
}
}
277/ Xóa tất cả số nguyên tố trong mảng voi d xoavi tri(int a[], int &n, int k)
{
for (int i=k; i <n; i++)
{
a[i] = a[i +1];
}
n ;
}
int songuyento(int n)
{
for (int i=2; i <n; i++)
{
if (n% i==0)
re turn 0;
}
Trang 6return 1 ;
}
voi d xoamang(int a[], int &n)
{
for (int i=0; i <n; i++)
{
if (a[i]>=2)
{
i f (songuye nto(a[i ])==1)
{
xoavitri(a,n,i);
i ;
}
}
}
}
278/ xóa tất cả ptử trùng nhau trong mảng và chỉ giữ lại duy nhất 1 ptử voi d xoavitri(int a[], i nt &n, int k)
{
for (i nt i =k; i<n; i ++)
{
a[i] = a[i +1];
}
n ;
}
voi d xoamang(int a[], int &n)
{
for (i nt i =0; i<n-1; i++)
{
for(int j=i+1 ; j<n;j++)
{
if (a[i]==a[j])
{
xoavi tri(a,n,j);
j ;
}
}
}
}
279/ Xóa tất cả ptử xuất hiên nhiều hơn 1 lần trong mảng
voi d xoavitri(int a[], i nt &n, int k)
{
for (int i=k; i <n; i++)
{
a[i] = a[i+1];
}
n ;
}
voi d xoamang(int a[], int &n)
{
for (int i=0; i <n-1; i++)
{
for (int test = 0,j=i+1; j<n;j++) // xóa ptử tại j
{
if (a[i]==a[j])
{
xoavi tri(a,n,j);
j ;
test=1;
}
}
if (test == 1)
{
xoavi tri(a,n,i); //Xóa luôn chính nó
Trang 7}
}
}
Kĩ thuật xử lý mảng
280/ Hãy đưa số 1 về đầu mảng
voi d DoiCho(int a[], int n, int k)
{
for(int i = k ; i>0; i )
{
a[i] = a[i -1];
}
a[0] = 1;
}
voi d duaMotve dau(int a[], int n)
{
for (i nt i =0; i<n; i++)
{
if (a[i] == 1)
{
DoiCho(a,n,i); // vi tri i
}
}
}
281/ Hãy đưa chẵn về đầu, lẻ về cuối, ptử 0 nằm giữa mảng voi d duachanve dau(int a[], int k)
{
int tam = a[k];
for(int i = k ; i>0; i )
{
a[i] = a[i -1];
}
a[0] = tam;
}
voi d dua0(int a[], int k, int vi trichancuoi)
{
for(int i = k ; i>vi trichancuoi; i )
{
a[i] = a[i -1];
}
a[vi trichancuoi] = 0;
}
voi d sapxe p(int a[], int n)
{
int i;
int vitrichanc uoi ;
for (i =0; i <n; i++)
{
if (a[i] % 2 == 0 && a[i]!=0)
{
duac hanve dau(a,i); // vi tri i
}
}
for (i =0; i <n; i++)
{
if (a[i]% 2!=0)
{
vi trichancuoi = i;
bre ak;
}
}
for (i ; i<n; i ++)
{
if (a[i] == 0 )
{
Trang 8dua0(a,i,vitrichanc uoi); // vi tri i }
}
}
282/ Đưa các số chia hết cho 3 về đầu mảng voi d DoiCho(int a[], int n, int k)
{
int tam = a[k];
for(int i = k ; i>0; i )
{
a[i] = a[i -1];
}
a[0] = tam;
}
voi d c hiahetchoba(int a[], int n)
{
for (i nt i =0; i<n; i++)
{
if (a[i] % 3 == 0)
{
DoiCho(a,n,i); // vi tri i
}
}
}
283/ Đảo ngược mảng ban đầu
voi d hoanvi(i nt &a, int &b)
{
int tam = a;
a = b;
b =tam;
}
voi d DaoMang(int a[], int n)
{
for (i nt i =0,j=n-1; i<j; i++,j )
{
hoanvi (a[i],a[j]);
}
}
284/ Đảo ngược thứ tự các số chẵn trong mảng voi d hoanvi(i nt &a, int &b)
{
int tam = a;
a = b;
b =tam;
}
voi d daoc han(int a[], int n)
{
for (i nt i =0; i<n-1; i++)
{
for (int j = i+1 ; j<n; j++)
{
if (a[j]% 2==0 &&a[i] % 2 == 0) {
hoanvi (a[i],a[j]); }
}
}
}
285/ Đảo ngược thứ tự số dương trong mảng voi d hoanvi(i nt &a, int &b)
{
int tam = a;
a = b;
Trang 9b =tam;
}
voi d daoduong(int a[], i nt n)
{
for (i nt i =0; i<n-1; i++)
{
for (int j = i+1 ; j<n; j++)
{
if (a[j]>0 && a[i]> 0)
{
hoanvi (a[i],a[j]);
}
}
}
}
286/ Dịch trái xoay vòng các ptử trong mảng
voi d dichtr ai(int a[], int n)
{
int tam = a[0];
for (i nt i =0; i<n-1; i++)
{
a[i]=a[i+1];
}
a[n-1]= tam;
}
287/ Dịch phải xoay vòng các ptử trong mảng
voi d dichphai (int a[], int n)
{
int tam = a[n-1];
for (i nt i =n-1; i>0; i )
{
a[i]=a[i-1];
}
a[0]= tam;
}
288/Hãy xuất ptử trong mảng theo yêu cầu: chẵn vàng, lẻ trắng voi d c olor (int a)
{
HANDLE mau;
mau = Ge tStdHandle(STD_OUTPUT_ HANDLE);
SetConsole TextAttri bute(mau,a);
}
voi d XuatChanVang Le Trang(int a[], int n)
{
for (i nt i =0; i<n; i++)
{
if (a[i]% 2==0)
{
col or(14);
printf("% 4d",a[i]);
}
else
{
col or(7);
printf("% 4d",a[i]);
}
}
}
289/ Xuất mảng: chẵn nằm trên 1 hàng, lẻ nằm hàng tiếp theo voi d c hanlehaihang(int a[], int n)
{
for (i nt i =0; i<n; i++)
Trang 10{
if (a[i]% 2==0)
{
printf("% 4d",a[i]);
}
}
printf("\n\t");
for (i =0; i <n; i++)
{
if (a[i]% 2!=0)
{
printf("% 4d",a[i]);
}
}
}
290/ Đảo ngược thứ tự số chẵn và lẻ trong mảng nhưng giữ vị trí tương đối
voi d hoanvi(i nt &a, int &b)
{
int tam = a;
a = b;
b =tam;
}
voi d daonguocc hanle(int a[], int n)
{
int i, j;
for (i =0; i <n; i++)
{
for(j=i +1; j<n; j++)
{
if (a[i]% 2==0 && a[j]% 2 == 0)
hoanvi (a[i],a[j]);
else if (a[i]% 2!=0 && a[j]% 2!=0)
hoanvi (a[i],a[j]);
}
}
}
291/ Biến đổi mảng bằng cách thay giá trị max = giá trị min và ngc lại
voi d mi nmax(int a[], int n, int &max, int &min)
{
max=a[0];
min=a[0];
for (i nt i =1; i<n; i++)
{
max=(max<a[i ])?a[i]:max;
min=(min>a[i])?a[i]:min;
}
}
voi d biendoi(int a[], int n, int max, int min)
{
for(int i=0; i<n; i ++)
{
if (a[i]==max)
{
a[i]=min;
}
else if (a[i]==min)
{
a[i]=max;
}
}
}
292/ Biến đổi mảng bằng cách thay tất cả ptử trong mảng bằng số nguyên gần nó nhất voi d thaysogannhat(fl oat &n)
{
Trang 11int phannguyen = (int) (n) ;
fl oat phanle = n - phannguye n;
if (phanle <=0.5)
{
n = (fl oat)phannguye n; }
else {
n = (fl oat)phannguye n + 1; }
} voi d biendoi(float a[], int n) { for (i nt i =0; i<n; i++) {
thaysogannhat(a[i]); }
} Kĩ thuật xử lý mảng con 293/ Liệt kê tất cả các mảng con voi d lietkecon(int a[], int n) { int ChieuDai; for (i nt i =0; i<n; i++) {
for (ChieuDai = 1; ChieuDai<=n; ChieuDai ++) {
for(int j=i; j<ChieuDai; j++) {
printf("% 4d", a[j]); }
printf("\n");
}
}
} 294/ Liệt kê mảng con có độ dài lớn hơn 2 ptử voi d lietkecon(int a[], int n) { int ChieuDai; for (i nt i =0; i<n; i++) {
for (ChieuDai = 3+i; ChieuDai<=n; ChieuDai++) {
for(int j=i; j<ChieuDai; j++) {
printf("% 4d", a[j]); }
printf("\n");
}
}
} 295/ Liệt kê dãy con tăng dần int ktramangtang (int b[], i nt nb) { for(int i=0; i<nb-1 ; i++) {
if (b[i ]>b[i+1 ]) retur n 0; }
retur n 1;
}
voi d xuatmangcon(int b[], int nb)
Trang 12{
for(int i=0; i<nb; i++)
{
printf("% 4d", b[i]);
}
printf("\n");
}
voi d lietkecontang(int a[], int n)
{
int ChieuDai;
int b[100], nb;
for (i nt i =0; i<n; i++)
{
for (ChieuDai = 1; ChieuDai<=n; ChieuDai ++) {
nb=0;
for(int j=i; j<ChieuDai; j++)
{
b[nb]=a[j];
nb++;
}
if (ktramangtang(b,nb)==1)
{
xuatmangcon(b,nb);
}
}
}
}
296/ Liệt kê dãy con tăng và chứa giá trị lớn nhất int lonnhat(int a[], int n)
{
int max = a[0 ];
for (i nt i =1; i<n; i++)
{
max = max<a[i]?a[i]:max;
}
retur n max;
}
int ktramangtang (int b[], i nt nb)
{
for(int i=0; i<nb-1 ; i++)
{
if (b[i ]>b[i+1 ])
retur n 0;
}
retur n 1;
}
voi d xuatmangcon(int b[], int nb)
{
for(int i=0; i<nb; i++)
{
printf("% 4d", b[i]);
}
printf("\n");
}
int ktrac omax(int b[], i nt nb,i nt max)
{
for (i nt i =0; i<nb;i++)
{
if (b[i ]==max)
{
retur n 1;
}
}
retur n 0;
}
voi d lietkecontang(int a[], int n, int max)