Admins Thái Thượng Hoàng
Tổng số bài gửi : 336 Age : 35 Đến từ : cát bụi Registration date : 03/04/2008
| Tiêu đề: XỬ LÝ MẢNG 1 CHIỀU Sun May 18, 2008 10:05 pm | |
| - Code:
-
/* Chuong trinh xu ly mang 1 chieu - Nhap mang - Xuat mang - Them 1 PTu vao mang - Xoa 1 phan tu trong mang - tim kiem - Sap Xep - So Nguyen To */ #include<conio.h> #include<stdio.h> #include<math.h> #define max 20 //Dinh Nghia Mang Chua Toi Da 20 Phan Tu //=========================================== //Khai Bao cac Prototype void NhapDS (int a[], int n); void XuatDS (int a[], int n); void Them1PTu(int a[], int *n, int vt, int x); void Xoa1PTu(int a[], int *n, int vt); int TimKiem (int a[], int n, int x); void SapXep (int a[], int n); void InSNTo (int a[], int n); int KTSNTo (int x); int KTTinhDX (int a[], int n); //kiem tra tinh doi xung int XetTinhTangGiam (int a[], int n);
//.......... void main() { int a[max], n, kt, vt; int x; char ch; clrscr(); do { clrscr(); printf("\n\tCHUONG TRINH XU LY MANG 1 CHIEU !"); printf("\n\tNhap So PTu Trong Mang : "); scanf ("%d", &n); printf("\n\tNhap Noi Dung Cac Phan Tu Trong Mang !\n"); NhapDS (a, n); //================================== printf("\n\tMang Nhap Vao La !\n\t"); XuatDS (a, n); getch(); //================================== //Tim Kiem printf("\n\tTim Kiem 1 PTu Trong DS !"); printf("\n\tNhap NDung PTu can Tim : "); scanf("%d", &x); kt = TimKiem (a, n, x); if (kt == -1) printf("\n\tKhong TThay PTu Co NDung %d Trong DS !", x); else printf("\n\tTThay PTu Co NDung %d Tai Vi Tri %d Trong DS !", x, kt); getch();
//================================== //Them 1PTu vao DS clrscr(); printf("\n\tThem 1 PTu vao DS !"); printf("\n\tMang Truoc Khi Them !\n\t"); XuatDS (a, n); printf("\n\tNhap VTri Can Them (0 => %d) : ", n); scanf ("%d", &vt); if (vt < 0 || vt > n) printf("\n\tVi Tri Them Khong Hop Le !"); else { printf("\n\tNhap NDung can Them X : "); scanf("%d", &x); Them1PTu (a, &n, vt, x); printf("\n\tMang Sau Khi Them !\n\t"); XuatDS (a, n); } getch(); //================================== //Xoa 1PTu Trong DS clrscr(); printf("\n\tXoa 1 PTu Trong DS !"); printf("\n\tMang Truoc Khi Xoa !\n\t"); XuatDS (a, n); printf("\n\tNhap VTri Can Xoa (0 -> %d) : ", n - 1); scanf ("%d", &vt); if (vt < 0 || vt >= n) printf("\n\tVi Tri Xoa Khong Hop Le !"); else { Xoa1PTu (a, &n, vt); printf("\n\tMang Sau Khi Xoa !\n\t"); XuatDS (a, n); } getch();
//================================== //In Cac PTu Trong Mang La SNT clrscr(); printf("\n\tIn Cac PTu Trong Mang La SNT !"); printf("\n\tMang Hien Tai La !\n\t"); XuatDS (a, n); printf("\n\tCac Phan Tu La SNTo !\n\t"); InSNTo (a, n); getch(); //================================== //Kiem Tra Tinh DX Cua mang clrscr(); printf("\n\tKiem Tra Tinh Doi Xung Cua Mang !"); printf("\n\tmang Hien tai La !\n\t"); XuatDS (a, n); kt = KTTinhDX (a, n); if (kt == 0) printf("\n\tmang Tren Khong Doi Xung !"); else printf("\n\tmang Tren Doi Xung !"); getch(); //================================== //Xet Tinh tang Giam Cua mang clrscr(); printf("\n\tXet Tinh Tang Giam Cua Mang !"); printf("\n\tMang Hien tai La !\n\t"); XuatDS (a, n); kt = XetTinhTangGiam (a, n); if (kt == 0) printf("\n\tMang Tren Khong Tang Khong Giam !"); if (kt == 1) printf("\n\tMang Tren la Mang Tang !"); if (kt == 2) printf("\n\tMang Tren la Mang Giam !"); getch(); //================================== //SapXep printf("\n\tSap Xep Mang Theo Thu Tu Tang Dan !\n\t"); printf("\n\tMang Truoc Khi Sap Xep !\n\t"); XuatDS (a, n); SapXep (a, n); printf("\n\tMang Sau Khi Sap Xep !\n\t"); XuatDS (a, n); getch(); printf("\n\tBan Co Tiep Tuc Khong (C/K) ?"); ch = getch(); }while ((ch == 'c') || (ch == 'C')); getch(); } //============================================ //Cai Dat Cac Ham //================================== void NhapDS (int a[], int n) { int i; for (i = 0; i < n; i++) { printf("\n\tNhap PTu A[%d] : ",i); scanf("%d", &a[i]); } } //================================== void XuatDS (int a[], int n) { int i; for (i = 0; i < n; i++) printf("%7d",a[i]); } //================================== void Them1PTu(int a[], int *n, int vt, int x) { int i; if (*n == max) printf("\n\tMang Day Khong Them Duoc !"); else if ((vt < 0) || (vt > *n)) printf("\n\tVi Tri Them Khong Hop Le !"); else { //Doi cac PTu Tu Cuoi Den VT Them Le 1 VT for (i = *n; i> vt; i--) a[i] = a[i-1]; a[vt] = x; *n = *n + 1; } } //================================== void Xoa1PTu(int a[], int *n, int vt) { int i; if (*n == 0) printf("\n\tMang Rong Khong Xoa Duoc !"); else if ((vt < 0) || (vt >= *n)) printf("\n\tVi Tri Xoa Khong Hop Le !"); else { //Doi cac PTu Tu VT Xoa Den Cuoi Xuong 1 VTri for (i = vt + 1; i < *n; i++) a[i - 1] = a[i]; *n = *n - 1; } } //================================== int TimKiem (int a[], int n, int x) { int i; i = 0; while ((i < n) && (a[i] != x)) i++; if (i < n) return i; //TThay return -1; //Khong TThay } //================================== void SapXep (int a[], int n) { int i, j, tam; for (i = 0; i < n-1; i++) for (j = i+ 1; j < n; j++) if (a[i] > a[j]) { tam = a[i]; a[i] = a[j]; a[j] = tam; } } //================================== /*In Cac Phan Tu La SNT : SNT La So Chi Chia Het Cho 1 va Chinh No Cach 2 - Tac vu Kien Tra So N Co Phai la SNT Khong : Cach Lam Viec + Ta Lan Luoc Chia So No Cho Cac So (L) Tu 2 -> Can Bac hai Cua N .. neu truong hop so sanh bang xay ra thi so dang xet la SNT .. nguoc lai so dang xet khong phai la SNT */ int KTSNTo (int x) { int k, l; if (x >= 2) { k = (int) sqrt (x); l = 2; while ((l <= k) && (x % l != 0)) l++; if (l > k) return 1;//la SNT return 0;// Khong La SNTo } return 0;// Khong La SNTo } //================================== //In Cac Phan Tu La So Nguyen To void InSNTo (int a[], int n) { int i, kt; for (i = 0; i < n; i++) { kt = KTSNTo (a[i]); if (kt == 1) //a[i] la SNT printf("%7d", a[i]); } }
//Hoac ta Co The Viet Ham In SNTo Nhu Sau void InSNTo1 (int a[], int n) { int i, l, k; for (i = 0; i < n; i++) if (a[i] >= 2) { k = (int) sqrt (a[i]); l = 2; while ((l <= k) && (a[i] % l != 0)) l++; if (l > k) printf("%7d", a[i]); //a[i] la SNTo } }
//================================== int KTTinhDX (int a[], int n) { int i; for (i = 0; i < n/2; i++) if (a[i] != a[n - i - 1]) return 0; //Khong DX return 1; //Doi Xung } //================================== int XetTinhTangGiam (int a[], int n) { int i; char kt = 'F', kt1 = 'F'; for (i = 0; i < n - 1; i++) if (a[i] > a[i + 1]) kt = 'T'; else if (a[i] != a[i + 1]) kt1 = 'T'; if (((kt == 'T') && (kt1 == 'T')) || ((kt == 'F') && (kt1 == 'F'))) return 0; //mang Khong Tang Khong Giam if ((kt = 'T') && (kt1 == 'F')) return 1; //mang giam if ((kt = 'F') && (kt1 == 'T')) return 2; //mang tang }
Được sửa bởi Admins ngày Mon May 19, 2008 7:19 pm; sửa lần 1. | |
|
huynhvohoangphu Tể Tướng
Tổng số bài gửi : 4 Registration date : 11/04/2008
| Tiêu đề: Re: XỬ LÝ MẢNG 1 CHIỀU Mon May 19, 2008 7:26 am | |
| bai nay thay vay ma tum lum wa ha | |
|