Bài tập 41 - 45

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Bài tập 41 - 45

Bài gửi  root on Mon Jan 24, 2011 5:49 am

Bài 41. Viết hàm tìm số lần xuất hiện của các phần tử trùng nhau (nếu có) trong mảng.
Bài 42. Viết hàm tách mảng số nguyên thành 2 mảng a (chứa các số nguyên chẵn) và mảng b (chứa các số nguyên lẻ)
Bài 43. Viết hàm tìm các số hữu tỉ trong danh sách.
Bài 44. Viết chương trình nhập vào một mảng gồm các phân số. (Nhập, Xuất Mảng)
Bài 45. Viết chương trình nhập vào một mảng gồm các phân số. Tối giản các phân số nhập vào và in mảng.

root
Admin

Tổng số bài gửi : 37
Join date : 03/01/2011
Age : 30
Đến từ : An Giang

Xem lý lịch thành viên http://www.huynhhai.co.cc

Về Đầu Trang Go down

Bài 44

Bài gửi  NanoShita on Mon Jan 24, 2011 11:59 pm

Bài 44. Viết chương trình nhập vào một mảng gồm các phân số. (Nhập, Xuất Mảng)
- Bài yêu cầu nhập và xuất mảng gồm các phân số (không phải là mảng các số nguyên).

- Nên đầu tiên, ta cần tạo 1 struct PhanSo gồm tử số và mẫu số.
Code:
        struct PhanSo
        {
            int tuSo; //Tử số
            int mauSo; //Mẫu số
        }
- Trong struct này ta viết thêm 2 hàm nhập và xuất
+ Hàm nhập
Code:
            /// <summary>
            /// Hàm Nhập tử số và mẫu số cho 1 phân số
            /// </summary>
            public void Nhap()
            {
                //Nhập tử số
                Console.Write("  + Nhap tu so: ");
                tuSo = int.Parse(Console.ReadLine());
                //Nhập mẫu số. Mẫu số phải khác 0
                do
                {
                    Console.Write("  + Nhap mau so: ");
                    mauSo = int.Parse(Console.ReadLine());
                } while (mauSo == 0);
            }
+ Hàm xuất
Code:
            /// <summary>
            /// Hàm xuất 1 phân số ra màn hình
            /// </summary>
            public void Xuat()
            {
                Console.Write("({0} / {1})", tuSo, mauSo);
            }
- Việc còn lại chỉ là tạo ra mảng các phân số, nhập mảng và xuất mảng.
Code
Code:
using System;

namespace Bai44
{
    class Program
    {
        /// <summary>
        /// Cấu trúc phân số
        /// --------------------------------
        /// Gồm 2 thành phần
        ///  + Tử số
        ///  + Mẫu số
        /// --------------------------------
        /// Có 2 hàm
        ///  + Hàm nhập
        ///  + Hàm xuất
        /// </summary>
        struct PhanSo
        {
            int tuSo; //Tử số
            int mauSo; //Mẫu số
            /// <summary>
            /// Hàm Nhập tử số và mẫu số cho 1 phân số
            /// </summary>
            public void Nhap()
            {
                //Nhập tử số
                Console.Write("  + Nhap tu so: ");
                tuSo = int.Parse(Console.ReadLine());
                //Nhập mẫu số. Mẫu số phải khác 0
                do
                {
                    Console.Write("  + Nhap mau so: ");
                    mauSo = int.Parse(Console.ReadLine());
                } while (mauSo == 0);
            }
            /// <summary>
            /// Hàm xuất 1 phân số ra màn hình
            /// </summary>
            public void Xuat()
            {
                Console.Write("({0} / {1})", tuSo, mauSo);
            }

        }
        /// <summary>
        /// Chương trình chính
        /// </summary>
        static void Main()
        {
            Console.Write("So phan so can nhap: ");
            int n = int.Parse(Console.ReadLine());
            /*
            * Tạo mảng phân số.
            * Có n phần tử.
            * Mỗi phần tử là 1 phân số.
            */
            PhanSo[] mangPhanSo = new PhanSo[n];
            /*
            * Nhập mảng phân số
            */
            Console.WriteLine("\nNhap cac phan so: \n");
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("\n - Nhap phan so thu {0}: ", i + 1);
                //Nhập tử số và mẫu số cho phân số thứ i
                mangPhanSo[i].Nhap();
            }
            /*
            * Xuất mảng phân số
            */
            Console.WriteLine("\nCac phan so vua nhap: \n");
            for (int i = 0; i < n; i++)
            {
                //Xuất phân số thứ i
                mangPhanSo[i].Xuat();
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

NanoShita

Tổng số bài gửi : 12
Join date : 12/01/2011
Age : 25
Đến từ : Long Xuyên, An Giang

Xem lý lịch thành viên

Về Đầu Trang Go down

Bài 45

Bài gửi  NanoShita on Tue Jan 25, 2011 12:25 am

Bài 45. Viết chương trình nhập vào một mảng gồm các phân số. Tối giản các phân số nhập vào và in mảng.
- Bài này tương tự như bài 44, chỉ thêm vào phần tối giản phân số.

- Để tối giản phân số ra viết thêm hàm tìm ước chung lớn nhất
Code:
        static int UCLN(int a, int b)
        {
            a = Math.Abs(a);
            b = Math.Abs(b);
            while (a != b)
                if (a > b)
                    a = a - b;
                else
                    b = b - a;
            return a;
        }
- Hàm tối giản phân số
Code:
            public void ToiGian()
            {
                if (tuSo != 0)
                {
                    int uocChung = UCLN(tuSo, mauSo);
                    tuSo = tuSo / uocChung;
                    mauSo = mauSo / uocChung;
                }//Nếu tử số bằng 0 thì không cần tối giản
            }
- Code đầy đủ
Code:
using System;

namespace Bai44
{
    class Program
    {
        static int UCLN(int a, int b)
        {
            a = Math.Abs(a);
            b = Math.Abs(b);
            while (a != b)
                if (a > b)
                    a = a - b;
                else
                    b = b - a;
            return a;
        }
        /// <summary>
        /// Cấu trúc phân số
        /// --------------------------------
        /// Gồm 2 thành phần
        ///  + Tử số
        ///  + Mẫu số
        /// --------------------------------
        /// Có 2 hàm
        ///  + Hàm nhập
        ///  + Hàm xuất
        ///  + Hàm tối giản phân số
        /// </summary>
        struct PhanSo
        {
            int tuSo; //Tử số
            int mauSo; //Mẫu số
            /// <summary>
            /// Hàm Nhập tử số và mẫu số cho 1 phân số
            /// </summary>
            public void Nhap()
            {
                //Nhập tử số
                Console.Write("  + Nhap tu so: ");
                tuSo = int.Parse(Console.ReadLine());
                //Nhập mẫu số. Mẫu số phải khác 0
                do
                {
                    Console.Write("  + Nhap mau so: ");
                    mauSo = int.Parse(Console.ReadLine());
                } while (mauSo == 0);
            }
            /// <summary>
            /// Hàm xuất 1 phân số ra màn hình
            /// </summary>
            public void Xuat()
            {
                Console.Write("({0} / {1})", tuSo, mauSo);
            }
            /// <summary>
            /// Hàm tối giản phân số
            /// </summary>
            public void ToiGian()
            {
                if (tuSo != 0)
                {
                    int uocChung = UCLN(tuSo, mauSo);
                    tuSo = tuSo / uocChung;
                    mauSo = mauSo / uocChung;
                }//Nếu tử số bằng 0 thì không cần tối giản
            }

        }
        /// <summary>
        /// Chương trình chính
        /// </summary>
        static void Main()
        {
            Console.Write("So phan so can nhap: ");
            int n = int.Parse(Console.ReadLine());
            /*
            * Tạo mảng phân số.
            * Có n phần tử.
            * Mỗi phần tử là 1 phân số.
            */
            PhanSo[] mangPhanSo = new PhanSo[n];
            /*
            * Nhập mảng phân số
            */
            Console.WriteLine("\nNhap cac phan so: \n");
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("\n - Nhap phan so thu {0}: ", i + 1);
                //Nhập tử số và mẫu số cho phân số thứ i
                mangPhanSo[i].Nhap();
            }
            /*
            * Tối giản các phân số trong mảng
            */
            for (int i = 0; i < n; i++)
            {
                mangPhanSo[i].ToiGian();
            }
            /*
            * Xuất mảng phân số sau khi tối giản
            */
            Console.WriteLine("\nCac phan so sau khi toi gian: \n");
            for (int i = 0; i < n; i++)
            {
                //Xuất phân số thứ i
                mangPhanSo[i].Xuat();
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

NanoShita

Tổng số bài gửi : 12
Join date : 12/01/2011
Age : 25
Đến từ : Long Xuyên, An Giang

Xem lý lịch thành viên

Về Đầu Trang Go down

Bài 42

Bài gửi  LoveIT on Tue Jan 25, 2011 8:31 pm

Bài 42: Viết hàm tách mảng số nguyên thành 2 mảng a (chứa các số nguyên chẵn) và mảng b (chứa các số nguyên lẻ)


Code:
static void TachMang(int [] Array,int n)
{
            //mảng phụ 
            int[] Chang = new int[n];      //chứa những phần tử chẵn (n phần tử)
            int[] Le = new int[n];          //chứa phần tử lẻ (n phần tử)
            int l = 0, m = 0;              //các chỉ số của mảng chẳng và mảng lẻ

            for (int k = 0; k < Array.Length; k++)
            {
                //nếu phần tử Array[k] là số chẳng
                if (Array[k] % 2 == 0)     
                {
                    Chang[l] = Array[k];    //gán vào mảng chẳng
                    l++;                    // tăng l để lưu giá trị phần tử kế
                }
                //phần tử Array[k] là số lẻ
                else
                {
                    Le[m] = Array[k];      //gán vào mảng lẻ
                    m++;                    // tăng m để lưu giá trị phần tử kế
                }
            }

            //xuất mảng các số chẵn
            Console.WriteLine();
            Console.Write("Mang so chang: ");
            for (int c = 0; c < l; c++)
                Console.Write(Chang[c] + "  ");

            Console.WriteLine();
            //xuất mảng các số lẻ
            Console.Write("Mang so le: ");

            for (int q = 0; q < m; q++)
                Console.Write(Le[q] + "  ");
            Console.WriteLine();
}

LoveIT

Tổng số bài gửi : 15
Join date : 16/01/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Bài tập 41 - 45

Bài gửi  Sponsored content Today at 9:57 pm


Sponsored content


Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết