vohuuhau ----unlimited----
Tổng số bài gửi : 790 Bình chọn : 1382 Join date : 07/01/2010 Age : 38 Đến từ : Thiên đường cỏ xanh ^_^
| Tiêu đề: Tổng hợp mảng 1 chiều C++ Wed May 06, 2015 5:22 pm | |
| - Code:
-
// LAM VIEC VOI MANG 1 CHIEU #include<iostream> #include<math.h> using namespace std; // nhap mang void hoandoi(int &a,int &b); void xoavitri(int a[], int &n, int pos); void nhapmang(int a[],int &n) { int i; cout<<"Nhap so phan tu:"; cin>>n; for (i=0;i<n;i++) { cout<<"a["<<i+1 <<"]= " ; cin>>a[i]; } } // xuat mang void xuatmang(int a[],int n) { for (int i=0;i<n;i++) { cout<<a[i] <<" "; } } //sap xep theo kieu noi bot void sx_tang(int a[], int n) //BubleSort { // duyet gia tri cac phan tu dau tien den ke cuoi //duyet them gia tri cac phan tu chay tu cuoi den ke dau // neu ta thay phan tu nao lon hon phan tu cuoi thi doi cho for(int i = 0; i<n-1; i++) for(int j = n-1; j>i; j--) if(a[j]<a[j-1]) hoandoi(a[j],a[j-1]); } // kiem tra so nguyen to neu la so nguyen to thi tra kq=1 int ktnguyento(int n) { int i; int m; /*muon chuong trinh chay nhanh ta chi can tinh dum may mot so phep toan don gian nhu n=2 va n=3 la cac so nguyen to */ if(n == 2 || n == 3) return 1; // doi vo nhung uoc so cua 2 voi 3 deu khong phai la so nguyen to if (n == 1||n % 2 == 0||n % 3 == 0) return 0; //gan m bang ham can truoc khi vao vong lap //nham muc dich de vong lap chay nhanh hon // vi khi khong gan thi moi khi lap la goi ham lan nua m = (int)sqrt(n); //i chay tu 5 va da loai nhung uoc so cua 2 va 3 voi i+6 for(i=5;i<=m;i=i+6) if(n % i == 0 || n % (i+2) == 0) return 0; return 1; } // chen mot phan tu tai vi tri pos va gia tri chen la x void chenmang(int a[],int &n,int pos, int &x) { cout<<"Nhap vi tri chen: "; cin>>pos; cout<<"Nhap gia gia tri chen: "; cin>>x; // pos gan cho pos-1 vi trong c bat dau tu phan tu 0 pos=pos-1; //gan pos la mot vi tri trong mang for (int i=n;i>=pos;i--) a[i]= a[i-1]; // neu pos la vi tri nam ngoai mang if(pos>n) pos =n; a[pos]=x; //tang n len mot n++; } //Ham xoa tai vi tri pos void xoavitri(int a[], int &n, int pos) { cout << "\n Nhap vi tri can xoa: "; cin>> pos; // vi tri trong c bat dau tu 0 nen ta phai giam 1 de logic pos=pos-1; // xoa tai vi tri pos va day cac gia tri ve ben phai roi // giam n for (int i = pos; i < n-1 ; i++) a[i] = a[i+1]; n--; } void xoavitri1(int a[], int &n, int pos) { // vi tri trong c bat dau tu 0 nen ta phai giam 1 de logic // xoa tai vi tri pos va day cac gia tri ve ben phai roi // giam n for (int i = pos; i < n-1 ; i++) a[i] = a[i+1]; n--; } // hoan doi vitri 2 so void hoandoi(int &a,int &b) { int t; t=a; a=b; b=t; } /* ham tach chan le pt_le so phan tu le tuong pt_chan la so phan tu chan */ void tach_chan_le(int a[],int n,int chan[],int &pt_chan,int le[],int &pt_le) { // koi dau gia tri cho cac phan tu chan le neu la chan cho vao mang chan // va tang pt chan len doi voi le thi nguoc lai pt_le=pt_chan =0; for (int i=0; i<n;i++) if(a[i]%2==0) chan[pt_chan++]=a[i]; else le[pt_le++] =a[i]; } // Ham max int hammax(int a[],int n) { // Gan mot bien max bang phan tu dau lam linh canh //roi duyet tu phan tu thu hai cho den het mang //neu co phan tu nao lon hon max thi ta gan max cho phan tu do int max=a[0]; for (int i=1; i<n;i++) if(max<a[i]) max=a[i]; return max; }
// HAM TIM SO NHO NHAT CO TRONG MANG int hammin(int a[],int n) { int min=a[0]; for(int i=0;i<n;i++) if(a[i]<min) min=a[i]; return min; } // HAM TACH SO AM void ham_mang_am(int a[],int n,int am[],int &ptam) { ptam=0; for(int i=0; i<n;i++) if(a[i]<0) am[ptam++]=a[i]; } //HAM TIM SO AM LON NHAT CO TRONG MANG int ham_am_max(int a[],int n) { int temp[100],k=0; for (int i=0; i<n;i++) if(a[i]<0) temp[k++]=a[i]; if (k!=0) return hammax(temp,k); return 0; } //HAM TIM SO NGUYEN TO LON NHAT CO TRONG MANG int songuyento_max(int a[],int n) { int temp[100],k=0; for (int i=0; i<n;i++) if(ktnguyento(a[i])==1) temp[k++]=a[i]; if (k!=0) return hammax(temp,k); return 0; } //HAM CHO MANG TOAN CHAN void mang_chan(int a[],int na,int b[],int &nb) { for(int i=0;i<na;i++) if(a[i]%2==0) b[nb++]=a[i]; } //HAM CHO MANG TOAN le void mang_le(int a[],int na,int le[],int &nb) { for(int i=0;i<na;i++) if(a[i]%2!=0) le[nb++]=a[i]; } // HAM KIEU TRA TOAN CHAN bool Kt_mang_toan_chan(int a[],int n) { int i; for (i=0;i<n;i++) if(a[i]%2!=0) return false; return true; } // HAM KIEM TRA MANG TOAN LE bool Kt_mang_toan_le(int a[],int n) { int i; for (i=0;i<n;i++) if(a[i]%2==0) return false; return true; } //HAM KIEM TRA MANG TOAN SO NGUYEN TO bool kt_toan_nguyento(int a[],int n) { int i; for (i=0;i<n;i++) if( ktnguyento(a[i]==0)) return false; return true; } // DEM SO TRONG MANG CO BAO NHIEU SO CHIA HET CHO 4 MA KHONG CHIA HET CHO 5 int dem_4_no5(int a[],int n) { int i,dem=0; for(i=0;i<n;i++) if(a[i]%4==0 && a[i]%5!=0) dem++; return dem; } // TONG CAC SO NGUYEN TO CO TRONG MANG int tong_nguyento(int a[],int n) { int i,s=0; for(i=0;i<n;i++) if(ktnguyento(a[i])==1) s+=a[i]; return s; } // TIM VI TRI DAU TIEN LA SO NGUYEN TO CO TRONG MANG int tim_vt_nguyento(int a[],int n) { int i,vt=-1; for(i=0;i<n;i++) if(ktnguyento(a[i])==1) { vt=i; return vt; } return vt; } // XOA TAT CA CAC PHAN TU SO NGUYEN TO TRONG MANG void xoa_nguyento_mang(int a[],int &n) { int vt=tim_vt_nguyento(a,n); while(vt!=-1) { xoavitri1(a,n,vt); vt=tim_vt_nguyento(a,n); } } //CHEN SO 0 VAO sau SO NGUYEN TO void chen_0_nguyento(int a[],int n) { for(int i=0;i<n;i++) if(ktnguyento(a[i])==1) a[i]*=10; } // SUA CAC SO NGUYEN TO TRONG MANG THANH SO 0 void sua_nguyento_thanh0(int a[],int n) { for(int i=0;i<n;i++) if(ktnguyento(a[i])==1) a[i]=0; }
//HAM CHINH int main() { int a[100],c[100],b[100],n,i,dem,max,pos,x,ptchan,ptle,maxto; nhapmang(a,n); cout<<"Mang ban dau"<<endl; xuatmang(a,n); /* xoa_nguyento_mang(a,n); cout<<endl; xuatmang(a,n);
maxto =songuyento_max(a,n); maxto ==0?cout<<"\n khong co so nguyen to ":cout<<"\n so nguyen to lon nhat la:"<<maxto ;
tach_chan_le(a,n,c,ptchan,b,ptle); cout <<"\n Phan tu chan: "; xuatmang (c,ptchan); cout <<"\n Phan tu le: "; xuatmang (b,ptle); cout<<"\n Sap xep tang: "; sx_tang(a,n); xuatmang(a,n); dem=0; max=0; //liet ke so nguyen to cout<<"\n Cac so nguyen to co trong mang: "; for(i=0;i<n;i++) { if(ktnguyento(a[i])==1) { cout<<a[i]<<" "; dem++; if(max<a[i]) max=a[i]; } } cout<<"\n Chen mang : \n"; chenmang(a,n,pos,x); xuatmang(a,n); cout<<"\n Xoa mang : \n"; xoavitri(a,n,pos); xuatmang(a,n); */ system("pause"); }
|
|