1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuyên đề mảng 1 chiều phần 3 docx

19 748 10

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 288,23 KB

Nội dung

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 4

a[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 5

275/ 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 6

return 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 8

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;

Trang 9

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_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 11

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

Ngày đăng: 29/07/2014, 21:20

TỪ KHÓA LIÊN QUAN

w