public PhanSo Cong(PhanSo a, PhanSo b) { PhanSo kq = new PhanSo(); kq.tu = a.tu * b.mau + b.tu * a.mau; kq.mau = a.mau * b.mau; return(kq); }
public static void RutGon(PhanSo a) { int d; d = UCLN(Math.Abs(a.tuSo), a.mauSo); a.mauSo /= (int)d; a.tuSo /= (int)d; }
public void Nhap() { Console.Write("Nhap vao chieu dai mang "); len = int.Parse(Console.ReadLine()); for (int i = 0; i < len; i++) { a[i] = new PhanSo(); a[i].Nhap(); } }
public static PhanSo Tru(PhanSo a, PhanSo b) { PhanSo kq = new PhanSo(); QuyDong(a, b); kq.tuSo = a.tuSo - b.tuSo; kq.mauSo = a.mauSo; RutGon(kq); return(kq); }
/// <summary> /// Hàm tính tổng các phân số trong mảng /// </summary> /// <returns>Tổng</returns> public PhanSo Tong() { PhanSo tong = new PhanSo(0, 1); for (int i = 0; i < length; i++) { tong = tong + a[i]; } return(tong); }
public void NhapNgauNhien() { Console.Write("Nhap vao chieu dai mang "); len = int.Parse(Console.ReadLine()); Random r = new Random(); for (int i = 0; i < len; i++) { a[i] = new PhanSo(r.Next(10), r.Next(10)); } }
public static void QuyDong(PhanSo a, PhanSo b) { int d; RutGon(a); RutGon(b); d = BCNN(a.mauSo, b.mauSo); a.tuSo *= (d / a.mauSo); b.tuSo *= (d / b.mauSo); a.mauSo = b.mauSo = d; }
public static PhanSo Nhan(PhanSo a, PhanSo b) { PhanSo kq = new PhanSo(); RutGon(a); RutGon(b); kq.tuSo = a.tuSo * b.tuSo; kq.mauSo = a.mauSo * b.mauSo; RutGon(kq); return(kq); }
/// <summary> /// Hàm chèn phân số tại vị trí cho trước vào mảng /// </summary> /// <param name="x">Phân số cần chèn</param> /// <param name="vt">Vị trí cần chèn</param> /// <returns></returns> public bool Chen_VT(PhanSo x, int vt) { if (vt < 0 || vt > length) { return(false); } List <PhanSo> kq = a.ToList(); kq.Insert(vt, x); a = kq.ToArray(); length++; return(true); }
/// <summary> /// Hàm xóa tất cả các phân số x có trong mảng /// </summary> /// <param name="x">Phân số cần xóa</param> /// <returns>Thực hiện thành công hay không</returns> public bool Xoa_x(PhanSo x) { int[] kq = Tim_VTx(x); if (kq.Length != 0) { for (int i = kq.Length - 1; i >= 0; i--) { Xoa_VT(kq[i]); } return(true); } return(false); }
/// <summary> /// Hàm tìm vị trí của phân số x trong mảng /// </summary> /// <param name="x">Phân số cần tìm</param> /// <returns>Mảng vị trí của x</returns> public int[] Tim_VTx(PhanSo x) { List <int> kq = new List <int>(); for (int i = 0; i < length; i++) { //if(a[i].tuSo == x.tuSo && a[i].mauSo == x.mauSo) if (a[i] == x) { kq.Add(i); } } return(kq.ToArray()); }
/// <summary> /// Hàm sắp xếp mảng theo chiều giảm tử /// </summary> public void SapXep_GiamTu() { for (int i = 0; i < length - 1; i++) { for (int j = i + 1; j < length; j++) { if (a[i].tuSo < a[j].tuSo) { PhanSo t = a[j]; a[j] = a[i]; a[i] = t; } } } }
/// <summary> /// Hàm sắp xếp mảng theo chiều tăng mẫu số /// </summary> public void SapXep_TangMau() { for (int i = 0; i < length - 1; i++) { for (int j = i + 1; j < length; j++) { if (a[i].mauSo > a[j].mauSo) { PhanSo t = a[j]; a[j] = a[i]; a[i] = t; } } } }
/// <summary> /// Hàm tìm giá trị nhỏ nhất có trong mảng /// </summary> /// <returns>Giá trị nhỏ nhất</returns> public PhanSo Tim_Min() { PhanSo min = a[0]; for (int i = 1; i < length; i++) { //if (SoSanh_2PS(min, a[i]) > 0) if (min > a[i]) { min = a[i]; } } //RutGon(); return(min); }
/// <summary> /// Hàm tìm giá trị lớn nhất có trong mảng /// </summary> /// <returns>Giá trị lớn nhất</returns> public PhanSo Tim_Max() { PhanSo max = a[0]; for (int i = 1; i < length; i++) { //if (SoSanh_2PS(max, a[i]) < 0) if (max < a[i]) { max = a[i]; } } //RutGon(); return(max); }
public PhanSo TimMax() { PhanSo max = new PhanSo(int.MinValue, 1); for (int i = 0; i < len; i++) { float x = a[i].tu / a[i].mau; float y = max.tu / max.mau; if (x > y) { max = a[i]; } } return(max); }
/// <summary> /// Hàm sắp xếp mảng theo chiều giảm /// </summary> public void SapXep_Giam() { for (int i = 0; i < length - 1; i++) { for (int j = i + 1; j < length; j++) { //if (SoSanh_2PS(a[i], a[j]) < 0) if (a[i] < a[j]) { PhanSo t = a[j]; a[j] = a[i]; a[i] = t; } } } RutGon(); }
public static PhanSo Chia(PhanSo a, PhanSo b) { PhanSo kq = new PhanSo(); RutGon(a); RutGon(b); int tu, mau; tu = a.tuSo * b.mauSo; mau = a.mauSo * b.tuSo; if (mau < 0) { tu = -tu; mau = -mau; } kq.tuSo = tu; kq.mauSo = Math.Abs(mau); RutGon(kq); return(kq); }
public PhanSo Nhan(PhanSo a) { return(Nhan(this, a)); }
public PhanSo Cong(PhanSo b) { // lay this + b return(Cong(this, b)); }
public PhanSo Tru(PhanSo a) { return(Tru(this, a)); }
/// <summary> /// Hàm chèn phân số x vào cuối mảng /// </summary> /// <param name="x">Phân số cần chèn</param> public void Chen_Cuoi(PhanSo x) { a[length] = x; length++; }
public PhanSo Cong(PhanSo a) { return(Cong(this, a)); }
/// <summary> /// Trả về giá trị của phân số /// </summary> /// <param name="a">Phân số</param> /// <returns></returns> public static float Tinh_GT(PhanSo a) { return((float)a.tuSo / a.mauSo); }
public void Chen(PhanSo x) { a[len] = x; len++; }
/// <summary> /// Tạo phân số mới giống phân số tham chiếu /// </summary> /// <param name="PhanSo">Phân số tham chiếu</param> public PhanSo(PhanSo a) { tuSo = a.tuSo; mauSo = a.mauSo; }
public PhanSo Chia(PhanSo a) { return(Chia(this, a)); }
public static PhanSo operator ++(PhanSo a) { PhanSo one = new PhanSo(1); return(a + one); }
public static PhanSo operator --(PhanSo a) { PhanSo one = new PhanSo(1); return(a - one); }
static void Main(string[] args) { MangPhanSo ds = new MangPhanSo(); MangPhanSo mangAm = new MangPhanSo(); MangPhanSo mangDuong = new MangPhanSo(); MangPhanSo mangKQ = new MangPhanSo(); int tuSo, mauSo, a; PhanSo x = new PhanSo(); int[] kq = new int[100]; while (true) { Console.Clear(); Console.WriteLine("Nhap {0} : Thoat khoi chuong trinh", (int)Menu.Thoat); Console.WriteLine("Nhap {0} : Nhap mot mang phan so tu tap tin", (int)Menu.Nhap_File); Console.WriteLine("Nhap {0} : Nhap mot mang phan so bang tay", (int)Menu.Nhap_Tay); Console.WriteLine("Nhap {0} : Dem so phan so am trong mang", (int)Menu.Dem_Am); Console.WriteLine("Nhap {0} : Dem so phan so duong trong mang", (int)Menu.Dem_Duong); Console.WriteLine("Nhap {0} : Dem phan so co tu la x trong mang", (int)Menu.Dem_TuX); Console.WriteLine("Nhap {0} : Dem phan so co tu la y trong mang", (int)Menu.Dem_TuY); Console.WriteLine("Nhap {0} : Tim phan so am lon nhat", (int)Menu.Max_Am); Console.WriteLine("Nhap {0} : Tim phan so am nho nhat", (int)Menu.Min_Am); Console.WriteLine("Nhap {0} : Tim phan so duong lon nhat", (int)Menu.Max_Duong); Console.WriteLine("Nhap {0} : Tim phan so duong nho nhat", (int)Menu.Min_Duong); Console.WriteLine("Nhap {0} : Tim tat ca cac phan so am trong mang ", (int)Menu.Tim_Am); Console.WriteLine("Nhap {0} : Tim tat ca cac phan so duong trong mang", (int)Menu.Tim_Duong); Console.WriteLine("Nhap {0} : Tim tat ca vi tri cua phan so x trong mang", (int)Menu.Tim_VTx); Console.WriteLine("Nhap {0} : Tim tat ca vi tri cua phan so am, duong trong mang", (int)Menu.Tim_VT_AmDuong); Console.WriteLine("Nhap {0} : Tong tat ca cac phan so am trong mang", (int)Menu.Tong_Am); Console.WriteLine("Nhap {0} : Tong cac phan so duong trong mang", (int)Menu.Tong_Duong); Console.WriteLine("Nhap {0} : Tong tat ca phan so co tu la x", (int)Menu.Tong_TuX); Console.WriteLine("Nhap {0} : Tong tat ca phan so co mau la x", (int)Menu.Tong_MauX); Console.WriteLine("Nhap {0} : Xoa mot phan so tai vi tri vt trong mang", (int)Menu.Xoa_VT); Console.WriteLine("Nhap {0} : Xoa phan so dau tien trong mang", (int)Menu.Xoa_Dau); Console.WriteLine("Nhap {0} : Xoa phan so cuoi cung trong mang", (int)Menu.Xoa_Cuoi); Console.WriteLine("Nhap {0} : Xoa phan so x trong mang", (int)Menu.Xoa_x); Console.WriteLine("Nhap {0} : Xoa tat ca phan so co tu la x", (int)Menu.Xoa_TuX); Console.WriteLine("Nhap {0} : Xoa tat ca phan so co mau la x", (int)Menu.Xoa_MauX); Console.WriteLine("Nhap {0} : Xoa tat ca phan so co gia tri giong phan so dau tien trong mang.", (int)Menu.Xoa_GiongDau); Console.WriteLine("Nhap {0} : Xoa tat ca phan so co gia tri giong phan so cuoi cung trong mang.", (int)Menu.Xoa_GiongCuoi); Console.WriteLine("Nhap {0} : Xoa tat ca cac phan so nho nhat ", (int)Menu.Xoa_Min); Console.WriteLine("Nhap {0} : Xoa cac phan tu tai cac vi tri (vi tri duoc luu trong mang)", (int)Menu.Xoa_NhieuVT); Console.WriteLine("Nhap {0} : Them mot phan so tai vi tri vt trong mang", (int)Menu.Chen_VT); Console.WriteLine("Nhap {0} : Them phan so dau tien trong mang", (int)Menu.Chen_Dau); Console.WriteLine("Nhap {0} : Xoa tat ca phan so am trong mang", (int)Menu.Xoa_Am); Console.WriteLine("Nhap {0} : Xoa tat ca phan so duong trong mang", (int)Menu.Xoa_Duong); Console.WriteLine("Nhap {0} : Sap xep phan so theo chieu tang, giam, tang theo mau, tu, giam theo mau tu", (int)Menu.SapXep); Console.Write("\nNhap so thu tu chuc nang: "); Menu menu = (Menu)int.Parse(Console.ReadLine()); switch (menu) { case Menu.Thoat: return; case Menu.Nhap_File: ds.NhapTuFile(); ds.RutGon(); ds.Xuat(); break; case Menu.Nhap_Tay: ds.Nhap(); ds.RutGon(); ds.Xuat(); break; case Menu.Dem_Am: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.WriteLine("Mang phan so am:"); mangAm = ds.MangAm(); mangAm.Xuat(); Console.WriteLine("Co {0} phan so am trong mang", mangAm.length); break; case Menu.Dem_Duong: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.WriteLine("Mang phan so duong:"); mangDuong = ds.MangDuong(); mangDuong.Xuat(); Console.WriteLine("Co {0} phan so duong trong mang", mangDuong.length); break; case Menu.Dem_TuX: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.Write("Nhap tu so can tim: "); tuSo = int.Parse(Console.ReadLine()); Console.WriteLine("Co {0} phan so co tu la {1} trong mang", ds.Tim_TuX(tuSo).length, tuSo); break; case Menu.Dem_TuY: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.Write("Nhap tu so can tim: "); tuSo = int.Parse(Console.ReadLine()); Console.WriteLine("Co {0} phan so co tu la {1} trong mang", ds.Tim_TuX(tuSo).length, tuSo); break; case Menu.Max_Am: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); mangAm = ds.MangAm(); Console.WriteLine("Mang phan so am:"); mangAm.Xuat(); Console.Write("Phan so am lon nhat cua mang la: {0}", mangAm.Tim_Max()); break; case Menu.Min_Am: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); mangAm = ds.MangAm(); Console.WriteLine("Mang phan so am:"); mangAm.Xuat(); Console.Write("Phan so am nho nhat cua mang la: {0}", mangAm.Tim_Min()); break; case Menu.Max_Duong: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); mangDuong = ds.MangDuong(); Console.WriteLine("Mang phan so duong:"); mangDuong.Xuat(); Console.Write("Phan so duong lon nhat cua mang la: {0}", mangDuong.Tim_Max()); break; case Menu.Min_Duong: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); mangDuong = ds.MangDuong(); Console.WriteLine("Mang phan so duong:"); mangDuong.Xuat(); Console.Write("Phan so duong nho nhat cua mang la: {0}", mangDuong.Tim_Min()); break; case Menu.Tim_Am: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); mangAm = ds.MangAm(); Console.WriteLine("Mang phan so am:"); mangAm.Xuat(); break; case Menu.Tim_Duong: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); mangDuong = ds.MangDuong(); Console.WriteLine("Mang phan so duong:"); mangDuong.Xuat(); break; case Menu.Tim_VTx: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.WriteLine("Nhap phan so x: "); x.Nhap_PhanSo(); kq = ds.Tim_VTx(x); if (kq.Length == 0) { Console.WriteLine("Khong ton tai phan so x o trong mang"); } else { Console.WriteLine("Vi tri phan so x la: "); for (int i = 0; i < kq.Length; i++) { Console.Write(kq[i] + "\t"); } } break; case Menu.Tim_VT_AmDuong: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); kq = ds.Tim_VT_Am(); Console.WriteLine("Mang vi tri cac phan so am: "); for (int i = 0; i < kq.Length; i++) { Console.Write(kq[i] + "\t"); } Array.Clear(kq, 0, kq.Length); kq = ds.Tim_VT_Duong(); Console.WriteLine(); Console.WriteLine("Mang vi tri cac phan so duong: "); for (int i = 0; i < kq.Length; i++) { Console.Write(kq[i] + "\t"); } break; case Menu.Tong_Am: Console.WriteLine("Mang hien hanh: "); ds.Xuat(); mangAm = ds.MangAm(); Console.WriteLine("Mang phan so am: "); mangAm.Xuat(); Console.WriteLine("Tong gia tri cua mang am la {0}", mangAm.Tong()); break; case Menu.Tong_Duong: Console.WriteLine("Mang hien hanh: "); ds.Xuat(); mangDuong = ds.MangDuong(); Console.WriteLine("Mang phan so duong: "); mangDuong.Xuat(); Console.WriteLine("Tong gia tri cua mang duong la {0}", mangDuong.Tong()); break; case Menu.Tong_TuX: Console.WriteLine("Mang hien hanh: "); ds.Xuat(); Console.Write("Nhap tu so x can tinh tong: "); mangKQ = ds.Tim_TuX(int.Parse(Console.ReadLine())); if (mangKQ.length == 0) { Console.WriteLine("Khong ton tai phan so co tu so la x"); } else { Console.WriteLine("Mang ket qua: "); mangKQ.Xuat(); Console.WriteLine("Tong gia tri cua mang ket qua la {0}", mangKQ.Tong()); } break; case Menu.Tong_MauX: Console.WriteLine("Mang hien hanh: "); ds.Xuat(); Console.Write("Nhap mau so x can tinh tong: "); mangKQ = ds.Tim_MauX(int.Parse(Console.ReadLine())); if (mangKQ.length == 0) { Console.WriteLine("Khong ton tai phan so co tu so la x"); } else { Console.WriteLine("Mang ket qua: "); mangKQ.Xuat(); Console.WriteLine("Tong gia tri cua mang ket qua la {0}", mangKQ.Tong()); } break; case Menu.Xoa_VT: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.Write("Nhap vi tri can xoa: "); if (ds.Xoa_VT(int.Parse(Console.ReadLine()))) { Console.WriteLine("Mang moi: "); ds.Xuat(); } else { Console.WriteLine("Vi tri can xoa khong hop le"); } break; case Menu.Xoa_Dau: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); ds.Xoa_VT(0); Console.WriteLine("Mang moi: "); ds.Xuat(); break; case Menu.Xoa_Cuoi: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); ds.Xoa_VT(ds.length); Console.WriteLine("Mang moi: "); ds.Xuat(); break; case Menu.Xoa_x: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.WriteLine("Nhap phan so x can xoa: "); x.Nhap_PhanSo(); if (ds.Xoa_x(x)) { Console.WriteLine("Mang moi: "); ds.Xuat(); } else { Console.WriteLine("Khong ton tai phan so x trong mang"); } break; case Menu.Xoa_TuX: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.Write("Nhap tu so x can xoa: "); tuSo = int.Parse(Console.ReadLine()); if (ds.Xoa_tuX(tuSo)) { Console.WriteLine("Mang moi: "); ds.Xuat(); } else { Console.WriteLine("Khong ton tai tu so x trong mang"); } break; case Menu.Xoa_MauX: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.Write("Nhap mau so x can xoa: "); mauSo = int.Parse(Console.ReadLine()); if (ds.Xoa_mauX(mauSo)) { Console.WriteLine("Mang moi: "); ds.Xuat(); } else { Console.WriteLine("Khong ton tai mau so x trong mang"); } break; case Menu.Xoa_GiongDau: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); ds.Xoa_GiongDau(); Console.WriteLine("Mang moi: "); ds.Xuat(); break; case Menu.Xoa_GiongCuoi: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); ds.Xoa_GiongCuoi(); Console.WriteLine("Mang moi: "); ds.Xuat(); break; case Menu.Xoa_Min: Console.WriteLine("Mang hien hanh: "); ds.Xuat(); Console.WriteLine("Phan so nho nhat trong mang la " + ds.Tim_Min().ToString()); Console.WriteLine("Mang moi: "); ds.Xoa_x(ds.Tim_Min()); ds.Xuat(); break; case Menu.Xoa_NhieuVT: Console.WriteLine("Mang hien hanh: "); ds.Xuat(); Console.Write("Nhap kich thuoc mang n can xoa: "); a = int.Parse(Console.ReadLine()); for (int i = 0; i < a; i++) { Console.Write("Nhap a[{0}] = ", i); kq[i] = int.Parse(Console.ReadLine()); } ds.Xoa_MangVT(kq, a); Console.WriteLine("Mang moi: "); ds.Xuat(); break; case Menu.Chen_VT: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.WriteLine("Nhap phan so x can chen: "); x.Nhap_PhanSo(); Console.Write("Vi tri phan so x can chen la: "); if (ds.Chen_VT(x, int.Parse(Console.ReadLine()))) { Console.WriteLine("Mang moi: "); ds.Xuat(); } else { Console.WriteLine("Vi tri can chen khong hop le"); } break; case Menu.Chen_Dau: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.WriteLine("Nhap phan so x can chen: "); x.Nhap_PhanSo(); ds.Chen_VT(x, 0); Console.WriteLine("Mang moi: "); ds.Xuat(); break; case Menu.Xoa_Am: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); if (ds.Xoa_Am()) { Console.WriteLine("Mang moi: "); ds.Xuat(); } else { Console.WriteLine("Mang khong ton tai phan so am"); } break; case Menu.Xoa_Duong: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); if (ds.Xoa_Duong()) { Console.WriteLine("Mang moi: "); ds.Xuat(); } else { Console.WriteLine("Mang khong ton tai phan so duong"); } break; case Menu.SapXep: Console.WriteLine("Mang hien hanh:"); ds.Xuat(); Console.WriteLine("Sap tang: "); ds.SapXep_Tang(); ds.Xuat(); Console.WriteLine("Sap tang tu so: "); ds.SapXep_TangTu(); ds.Xuat(); Console.WriteLine("Sap tang mau so: "); ds.SapXep_TangMau(); ds.Xuat(); Console.WriteLine("Sap giam: "); ds.SapXep_Giam(); ds.Xuat(); Console.WriteLine("Sap giam tu so: "); ds.SapXep_GiamTu(); ds.Xuat(); Console.WriteLine("Sap giam mau so: "); ds.SapXep_GiamMau(); ds.Xuat(); break; default: break; } Console.ReadKey(); } }