mang 1 chieu-3

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++)

{

}

n--;

}

a[i ] = a[i+1];

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++)

{

}

n--;

}

a[i] = a[i +1];

int s onguyento(int n)

{

for (int i=2; i <n; i++)

{

if (n% i==0)

re turn 0;

}

return 1 ;

}

voi d xoamang(int a[], int & n)

{

for (int i=0; i <n; i++)

{

if (a[i]>=2)

{

i f (s onguye 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 ++)

{

}

n--;

}

a[i] = a[i +1];

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++)

{

}

n--;

}

a[i] = a[i+1];

voi d xoamang(int a[], int &n)

{

for (int i=0; i <n -1; i++)

{

for (int tes t = 0,j=i+1; j<n;j++) // xóa ptử tại j

{

if (a[i]==a[j])

{

xoavi tri(a,n,j);

j--;

tes t=1;

}

}

if (tes t == 1)

{

xoavi tri(a,n,i); //Xóa luôn chính nó

}

}

}

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 s apxe 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 )

{

dua0(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;

b =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_O UTP UT_ HANDLE); SetCons ole 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)

{

}

els e

{

}

}

}

col or(14);

printf("% 4d",a[i]);

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++)

{

if (a[i]% 2==0)

{

printf("% 4d",a[i]);

}

}

printf("

\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]);

els e if (a[i]% 2!=0 && a[j]% 2!=0)

hoanvi (a[i],a[j]);

}

}

}

291/ B iế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;

}

els e if (a[i]==min)

{

a[i]=max;

}

}

}

292/ B iế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 thays ogannhat(fl oat &n)

{

int phannguyen = (int) (n) ;

fl oat phanle = n - phannguye n;

if (phanle <=0.5)

{

}

els e

{

}

}

n = (fl oat)phannguye n;

n = (fl oat)phannguye n + 1;

voi d biendoi(float a[], int n)

{

for (i nt i =0; i<n; i++)

{

thays ogannhat(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("

");

}

}

}

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("

");

}

}

}

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)

{

for(int i=0; i<nb; i++)

{

printf("% 4d", b[i]);

}

printf("

");

}

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("

");

}

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)

{

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)

{

if (ktrac omax(b,nb,max)==1)

{

xuatmangcon(b,nb);

}

}

}

}

}

297/ Tính tổng từng mảng con tăng .

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(" % d ", b[i]);

}

}

intt tongmangc on(int b[], i nt nb)

{

intt s =0;

for (i nt i =0; i<nb; i++)

{

s = s + b[i];

}

retur n s ;

}

voi d lietkecontang(int a[], int n)

{

int chieudaicon, b[100], nb, tong ;

for (i nt i =0; i<n; i++)

{

for (chieudaicon = 1+i; chieudaic on<=n; c hieudaicon++)

{

for(int j=i; j<chieudaicon; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramangtang(b,nb)==1)

{

xuatmangcon(b,nb);

tong = tong mangcon(b,nb);

printf("\tTong mang nay: % .2f

", tong);

}

}

}

}

298/ Đế m mảng con tăng có độ dài lớn hơn 1 .

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 De mc ontang(int a[], int n)

{

int chieudaicon, b[100], nb;

int de m=0;

for (i nt i =0; i<n; i++)

{

for (chieudaicon = 2+i; chieudaic on<=n; c hieudaicon++)

{

for(int j=i; j<chieudaicon; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramangtang(b,nb)==1)

{

de m++;

}

}

}

printf("

Tong s o mang c an ti m: % d

", de m);

}

299/ Liệt kê dãy con toàn dương và độ dài lớn hơn 1 .

int ktramang duong(fl oat b[], int nb)

{

for(int i=0; i<nb; i++)

if (b[i ]<0)

retur n 0;

retur n 1;

}

voi d xuatmangcon(fl oat b[], int nb)

{

for(int i=0; i<nb; i++)

printf(" % .2f ", b[i]);

printf("

");

}

voi d lietkecontang(float a[], int n)

{

int chieudaicon;

fl oat b[100];

int nb;

for (i nt i =0; i<n; i++)

{

for (chieudaicon = 2+i; chieudaic on<=n; c hieudaicon++)

{

for(int j=i; j<chieudaicon; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramang duong(b,nb)==1)

xuatmangcon(b,nb);

}

}

}

300/ Đế m mảng con giảm .

int ktramanggiam(float b[], int nb)

{

for(int i=0; i<nb-1 ; i++)

{

if (b[i ]<b[i+1 ])

retur n 0;

}

retur n 1;

}

voi d De mc ongiam(fl oat a[], int n)

{

int chieudaicon;

fl oat b[100];

int nb;

int de m=0;

for (i nt i =0; i<n; i++)

{

for (chieudaicon = 1+i; chieudaic on<=n; c hieudaicon++)

{

nb=0;

for(int j=i; j<chieudaicon; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramanggiam(b,nb)==1)

de m++;

}

}

printf("

Tong s o mang c on giam c an ti m: % d

", de m);

}

301/ Cho biết mảng a có phải là mảng con trong mảng b ko?

int Ktr a(i nt a[], int b[], i nt na, int nb)

{

int i,j,tes t = 0;

for (i =0; i <nb; i++)

{

if (b[i ]==a[0])

{

int h = i;

for (tes t=1, j=0; j<na;j++,h++)

{

if (a[j] != b[h])

{

tes t = 0;

bre ak;

}

}

if (tes t == 1)

retur n tes t; // Mảng a l à c on mảng b

}

}

retur n tes t;

}

302/ Đế m số lần xuất hiệ n mảng a trong mảng b .

int De m(int a[], int b[], int na, int nb)

{

int i,j,tes t,de m=0;

for (i =0; i <nb; i++)

{

if (b[i ]==a[0])

{

int h = i;

for (tes t=1, j=0; j<na;j++,h++)

{

if (a[j] != b[h])

{

tes t = 0;

bre ak;

}

}

if (tes t == 1)

de m++;

}

}

retur n de m;

}

303/ Dãy con toàn dương dài nhất .

voi d DayConToanDuongDaiNhat(int a[], i nt n)

{

int i,l,k,tes t,vt,pt=0;

for (i =0;i<n;i++)

{

for (l=i; l <=n;l++)

{

for (tes t = 1,k=0; k<l ; k++)

{

if (a[k]<0)

{

tes t = 0; break;

}

}

if (tes t == 1)

{

if (pt<k)

{

pt=k;

vt=i ;

}

}

}

}

printf("

Day c on duong dai nhat: ");

for (vt; vt<pt; vt++)

printf("% 4d",a[vt]);

}

304 * Cho mảng a, số nguyê n M.Tìm 1 mảng con s ao cho tổng các ptử bằng M .

voi d Tong MangConB ang M(int a[], int n,int m)

{

int i,l,k,s =0;

for (i =0;i<n;i++)

{

for (l=i; l <=n;l++)

{

for (k=0; k<l ; k++)

s +=a[k];

if (s == m)

{

printf("

Day c on co tong ptu bang M: ");

for (k=0; k<l ; k++)

printf("% 4d",a[k]);

}

}

}

}

305 * Tìm dãy con toàn dương có tổng lớn nhất .

voi d DayConToanDuong TongLonNhat(int a[], int n)

{

int i,l,k,s =0,Stam=0,tes t,vt,pt;

for (i =0;i<n;i++)

{

for (l=i; l <=n;l++)

{

for (tes t=1,k=0; k<l ; k++)

{

Stam+=a[k];

if (a[k]<0)

{

tes t = 0; break;

}

}

if (tes t == 1)

{

if (Stam>s )

{

s = Stam;

vt = i;

pt = k;

}

}

}

}

printf("

Day c on duong co tong lon nhat: ");

for (vt; vt<pt; vt++)

printf("% 4d",a[vt]);

}

306/ Tìm mảng con có tổng lớn nhất .

voi d DayConTong LonNhat(int a[], int n)

{

int i,l,k,s =0,Stam=0,vt,pt;

for (i =0;i<n;i++)

{

for (l=i; l <=n;l++)

{

for (k=0; k<l ; k++) Stam+=a[k];

if (Stam>s )

{

s = Stam;

vt = i;

pt = k;

}

}

}

printf("

Day c on co tong l on nhat: ");

for (vt; vt<pt; vt++)

printf("% 4d",a[vt]);

}

Xây dựng mảng

307/ Tạo mảng b chỉ chứa giá trị lẻ từ mảng a .

voi d TaoMangB(i nt a[], int n)

{

int b[100], nb=0;

for (i nt i =0; i<n;i ++)

{

if (a[i]% 2!=0)

{

b[nb] = a[i];

nb++;

}

}

xuatmang(b,nb);

}

308/ Tạo mảng b chỉ chứa giá trị âm từ mảng a .

voi d TaoMangB(i nt a[], int n)

{

int b[100], nb=0;

for (i nt i =0; i<n;i ++)

{

if (a[i]<0 )

{

b[nb] = a[i];

nb++;

}

}

xuatmang(b,nb);

}

309/ Tạo mảng b s ao cho b[i] = tổng các ptử lận cận với a[i] trong mảng a .

voi d TaoMangB(i nt a[], int n)

{

int b[100], nb=0;

for (i nt i =0; i<n;i ++)

{

if (i==0)

b[nb] = a[i +1];

els e if (i==n-1)

b[nb] = a[i-1 ];

els e

nb++;

}

b[nb] = a[i-1 ] + a[i+1];

xuatmang(b,nb);

}

310/ Tạo mảng b chỉ chứa số nguyê n tố từ mảng a .

int SoNguyenTo(i nt a)

{

if (a<=1 )

retur n 0;

for (i nt i =2; i<a; i++)

if (a% i==0)

retur n 0;

retur n 1;

}

voi d TaoMangB(i nt a[], int n)

{

int b[100], nb=0;

for (i nt i =0; i<n;i ++)

{

if (SoNguyenTo(a[i])==1)

{

b[nb] = a[i];

nb++;

}

}

xuatmang(b,nb);

}

----------Hế t Mảng 1 chiề u --------

B ài tổng hợp nâng cao chút của mảng 1 chiề u

311/ Tạo 1 mảng ngẫu nhiê n và xuất ra dãy con tăng dần dài nhất. Nế u 2 dãy con tăng dài bằng

nhau thì xuất dãy con tăng đầu tiê n .

#include <s tdio.h>

#include <s tdli b.h>

#include <ti me.h>

voi d NhapMang(i nt a[], int &n)

{

n = r and()% 10;

for (i nt i =0; i<n; i++)

a[i] = r and()% 50;

}

voi d XuatMang(i nt a[], int n)

{

for (i nt i =0; i<n; i++)

printf("% 4d",a[i]);

}

voi d Ti mDayConTangDan(int a[], int n, int &Vi TriBatDau, int & ViTri Ke tThuc )

{

int Vi TriBatDauTam =0, ViTri Ke tThuc Tam=0;

int De m =0, De mTam = 0;

for (Vi Tri KetThuc Tam = 0; ViTri Ke tThuc Tam<n; ViTri KetThuc Tam++)

{

if (a[Vi Tri KetThuc Tam] <= a[ViTri Ke tThuc Tam+1])

{

}

els e

{

De mTam++;

if (De mTam>De m)

{

Vi TriBatDau = Vi TriBatDauTam;

Vi Tri KetThuc = Vi Tri KetThucTam; De m = De mTam;

}

Vi TriBatDauTam = Vi Tri KetThucTam + 1 ; De mTam = 0;

}

}

}

voi d XuatDayCon(int a[], int Vi TriBatDau, int ViTri Ke tThuc )

{

for(int i=Vi TriBatDau; i<=Vi Tri KetThuc; i++)

pri ntf("% 4d",a[i]);

}

voi d main()

{

s rand((uns igned)ti me(NULL));

int n,a[100];

NhapMang (a,n); //Nh ập mảng ngẫu nhiên printf("Mang ngau nhien duoc tao: "); XuatMang(a,n);

printf("

");

//Tì m dãy c on tăng dài nh ất

int Vi TriBatDau = -1, ViTri Ke tThuc = -1; TimDayConTangDan(a,n,Vi TriBatDau,Vi Tri KetT huc);

//Xu ất dãy con tăng với 2 biến Vi TriBatDau, Vi Tri KetThuc

printf("Day c on tang dai nhat: "); XuatDayCon(a,ViTriBatDau,ViTri Ke tThuc );

}

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: