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

} } } } void TronMang(int a[], int b[], int c[], int na, int nb, int &nc) { nc = na + nb; sapxep(a,na); //Sap xep tang mang A sapxep(b,nb); //Sap xep tang mang B int vta=0,vtb=0; for (int 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 void sapxep(int a[],int n) { for (int i=0;i<n;i++) { for (int j=i+1;j<n;j++) { if (a[i]>a[j]) { int temp=a[i]; a[i] = a[j]; a[j]=temp; } } } } void TronMang(int a[], int b[], int c[], int na, int nb, int &nc) { nc = na + nb; sapxep(a,na); //Sap xep tang mang A sapxep(b,nb); //Sap xep tang mang B int vta=na-1, vtb=nb-1; for (int i=0;i<nc;i++) { if (vta >= 0 && vtb >= 0) { if (a[vta] > b[vtb]) { c[i] = a[vta]; vta ; } 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 . void themgiatri(int a[], int &n, int 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 . void nhapmang(int a[], int &n) { printf("Nhap mang 1 chieu\n"); printf("Nhap n : "); scanf("%d",&n); while (n<=1) { printf("Nhap lai 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 temp = a[i]; for (k = i; k>j; k ) { a[k] = a[k-1]; } a[j] = temp; break; } } } } 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 . void ChenXMangTang(int a[], int &n, int x) { int i,j; for (i=0; i<n;i++) { if (x>a[i]) { int temp = x; for (k = n; k>i; k ) { a[k] = a[k-1]; } a[i] = temp; break; } } n++; } 270/ Nhập mảng sau khi nhập xong đã tự sắp xếp tăng dần void nhapmang(int a[], int &n) { printf("Nhap mang 1 chieu\n"); printf("Nhap n : "); scanf("%d",&n); while (n<=1) { printf("Nhap lai 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 temp = a[i]; for (k = i; k>j; k ) { a[k] = a[k-1]; } a[j] = temp; break; } } } } Kĩ thuật xóa 271/ Xóa các ptử có chỉ số k trong mảng void Xoavitri(int a[], int &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 void xoavitri(float a[], int &n, int k) { for (int i=k; i<n; i++) { a[i] = a[i+1]; } n ; } float lonnhat(float a[], int n) { float max = a[0]; for (int i=1; i<n ; i++) { max=(max<a[i])?a[i]:max; } return max; } void xoamang(float a[], int &n) { float max = lonnhat(a,n); for (int i=0; i<n; i++) { if (a[i]==max) { xoavitri(a,n,i); i ; } } } 273/ Xóa tất cả số âm trong mảng . void xoavitri(float a[], int &n, int k) { for (int i=k; i<n; i++) { a[i] = a[i+1]; } n ; } void xoamang(float a[], int &n) { for (int i=0; i<n; i++) { if (a[i]<0) { xoavitri(a,n,i); i ; } } } 274/ Xóa tất cả số chẵn trong mảng . void xoavitri(float a[], int &n, int k) { for (int i=k; i<n; i++) { a[i] = a[i+1]; } n ; } void xoamang(float a[], int &n) { for (int i=0; i<n; i++) { if (a[i]%2==0) { xoavitri(a,n,i); i ; } } } 275/ Xóa tất cả số chính phương trong mảng . void xoavitri(int a[], int &n, int k) { for (int i=k; i<n; i++) { a[i] = a[i+1]; } n ; } int sochinhphuong(int n) { int a = (int)sqrt(n); if (a*a == n) { return 1; } return 0; } void xoamang(int a[], int &n) { for (int i=0; i<n; i++) { if (sochinhphuong(a[i])==1) { xoavitri(a,n,i); i ; } } } 276/ Xóa tất cả các ptử trùng với x . void xoavitri(float a[], int &n, float k) { for (int i=k; i<n; i++) { a[i] = a[i+1]; } n ; } void xoamang(float a[], int &n, float x) { for (int i=0; i<n; i++) { if (a[i] ==x) { xoavitri(a,n,i); i ; } } } 277/ Xóa tất cả số nguyên tố trong mảng . void xoavitri(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) return 0; } return 1; } void xoamang(int a[], int &n) { for (int i=0; i<n; i++) { if (a[i]>=2) { if (songuyento(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ử . void xoavitri(int a[], int &n, int k) { for (int i=k; i<n; i++) { a[i] = a[i+1]; } n ; } void xoamang(int a[], int &n) { for (int i=0; i<n-1; i++) { for(int j=i+1; j<n;j++) { if (a[i]==a[j]) { xoavitri(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 . void xoavitri(int a[], int &n, int k) { for (int i=k; i<n; i++) { a[i] = a[i+1]; } n ; } void 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]) { xoavitri(a,n,j); j ; test=1; } } if (test == 1) { xoavitri(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 . void DoiCho(int a[], int n, int k) { for(int i = k ; i>0; i ) { a[i] = a[i-1]; } a[0] = 1; } void duaMotvedau(int a[], int n) { for (int 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 . void duachanvedau(int a[], int k) { int tam = a[k]; for(int i = k ; i>0; i ) { a[i] = a[i-1]; } a[0] = tam; } void dua0(int a[], int k, int vitrichancuoi) { for(int i = k ; i>vitrichancuoi; i ) { a[i] = a[i-1]; } a[vitrichancuoi] = 0; } void sapxep(int a[], int n) { int i; int vitrichancuoi; for (i=0; i<n; i++) { if (a[i] %2 == 0 && a[i]!=0) { duachanvedau(a,i); //vi tri i } } for (i=0; i<n; i++) { if (a[i]%2!=0) { vitrichancuoi = i; break; } } for (i; i<n; i++) { if (a[i] == 0 ) { dua0(a,i,vitrichancuoi); //vi tri i } } } 282/ Đưa các số chia hết cho 3 về đầu mảng . void 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; } void chiahetchoba(int a[], int n) { for (int 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 . void hoanvi(int &a, int &b) { int tam = a; a = b; b =tam; } void DaoMang(int a[], int n) { for (int 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 . void hoanvi(int &a, int &b) { int tam = a; a = b; b =tam; } void daochan(int a[], int n) { for (int 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 . void hoanvi(int &a, int &b) { int tam = a; a = b; b =tam; } void daoduong(int a[], int n) { for (int 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 . void dichtrai(int a[], int n) { int tam = a[0]; for (int 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 void dichphai(int a[], int n) { int tam = a[n-1]; for (int 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 . void color (int a) { HANDLE mau; mau = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(mau,a); } void XuatChanVangLeTrang(int a[], int n) { for (int i=0; i<n; i++) { if (a[i]%2==0) { color(14); printf("%4d",a[i]); } else { color(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 . void chanlehaihang(int a[], int n) { for (int i=0; i<n; i++) { 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 . void hoanvi(int &a, int &b) { int tam = a; a = b; b =tam; } void daonguocchanle(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 . void minmax(int a[], int n, int &max, int &min) { max=a[0]; min=a[0]; for (int i=1; i<n; i++) { max=(max<a[i])?a[i]:max; min=(min>a[i])?a[i]:min; } } void 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 . void thaysogannhat(float &n) { [...]... lận cận với a[i] trong mảng a voi d TaoMangB(i nt a[], int n) { int b [10 0], nb=0; for (i nt i =0; i . 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 31 1 / 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. (i==n -1) b[nb] = a[i -1] ; else b[nb] = a[i -1] + a[i +1] ; nb++; } xuatmang(b,nb); } 31 0 / Tạo mảng b chỉ chứa số nguyên tố từ mảng a . int SoNguyenTo(int a) { if (a< =1) . (ktramangduong(b,nb)= =1) xuatmangcon(b,nb); } } } 30 0/ Đế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] ) return 0; } return 1;

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

TỪ KHÓA LIÊN QUAN

w