Sửa 1 số bài C++ chuẩn bị thi giữa kỳ

Thảo luận trong 'C/C++' bắt đầu bởi integer, 27 Tháng ba 2011.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Viết chương trình nhập vào một mảng sinh viên, thông tin về mỗi sinh viên gồm: Hoten, tuoi, quequan. Sắp xếp mảng vừa nhập theo chiều tăng dần của chuỗi. Sau đó, xuất ra màn hình mảng sau khi đã sắp xếp.
    Mã:
    #include <iostream>
    #include <string.h>
    using namespace std;
    typedef struct
    {
        char ten[30];
        int tuoi;
        char que[50];
    } sinhvien;
    
    sinhvien sv[30];
    int n;
    void hoanvi(sinhvien a[1],sinhvien b[1])
    {
        sinhvien tmp[1];
        tmp[0]=a[0];
        a[0]=b[0];
        b[0]=tmp[0];
    }
    void sx()
    {
        char tmp[30];
        for(int i=0; i<n; i++)
        {
            int m=i;
            for(int j=i+1; j<n; j++)
                if(strcmp(sv[j].ten,sv[m].ten)<0)
                    m=j;
            if(m!=i)
                hoanvi(&sv[i],&sv[m]);
        }
    }
    void nhap()
    {
        for(int i=0; i<n; i++)
        {
            cout<<"\nTen: ";
            cin.getline(sv[i].ten,30);
            cout<<"\nTuoi: ";
            cin>>sv[i].tuoi;
            cin.ignore();
            cout<<"\nNoi sinh: ";
            cin.getline(sv[i].que,30);
        }
    }
    void xuat()
    {
        cout<<"\nTen \tTuoi \tNoi Sinh";
        for(int i=0; i<n; i++)
        {
            cout<<"\n"<<sv[i].ten<<"\t"<<sv[i].tuoi<<"\t"<<sv[i].que;
        }
    }
    main()
    {
        cout<<"\nNhap so sinh vien: ";
        cin>>n;
        cin.get();
        nhap();
        sx();
        xuat();
    }
    
    Cho hình chữ nhật dưới dạng cấu trúc gồm chiều dài và chiều rộng. Nhập vào một mảng các hình chữ nhật. Tính và xuất ra màn hình chu vi, diện tích tương ứng của mỗi hình.
    Mã:
    #include <iostream>
    using namespace std;
    typedef struct
    {
        float dai;
        float rong;
    }hcn;
    int chuvi(int dai,int rong)
    {
        return (dai+rong)*2;
    }
    int dientich(int dai,int rong)
    {
        return dai*rong;
    }
    main()
    {
        int n;
        cout<<"\nNhap so hinh: ";
        cin>>n;
        hcn h[n];
        for(int i=0;i<n;i++)
        {
            cout<<"\nHinh thu "<<i+1<<": ";
            cout<<"\nDai: ";
            cin>>h[i].dai;
            cout<<"\nRong: ";
            cin>>h[i].rong;
        }
        for(int i=0;i<n;i++)
        {
            cout<<"\nHinh thu: "<<i+1;
            cout<<"\nChu vi:\t\t "<<chuvi(h[i].dai,h[i].rong);
            cout<<"\nDien tich:\t "<<dientich(h[i].dai,h[i].rong);
        }
    }
    
    Cho phân số dưới dạng cấu trúc gồm 2 phần là tử số và mẫu số. Viết chương trình nhập vào 2 phân số. Tính và hiển thị ra màn hình tổng, hiệu, tích, thương của chúng sau khi đã rút gọn.
    Mã:
    #include <iostream>
    using namespace std;
    typedef struct
    {
        int tu;
        int mau;
    }phanso;
    //Rut gon
    int rutgon(phanso &a)
    {
        while(a.tu%a.mau==0 || a.mau%a.tu==0)
        {
            if(a.tu>=a.mau)
            {
                a.tu/=a.mau;
                a.mau/=a.mau;
            }
            else
            {
                a.mau/=a.tu;
                a.tu/=a.tu;
            }
            if(a.tu==1 || a.mau==1)
                break;
        }
    }
    //Cong
    void _add(phanso a,phanso b,phanso &c)
    {
        c.tu=(a.tu*b.mau)+(a.mau*b.tu);
        c.mau=(a.mau*b.mau);
    }
    //Tru
    void _sub(phanso a,phanso b,phanso &c)
    {
        c.tu=(a.tu*b.mau)-(a.mau*b.tu);
        c.mau=(a.mau*b.mau);
    }
    //Nhan
    void _mul(phanso a,phanso b,phanso &c)
    {
        c.tu=a.tu*b.tu;
        c.mau=a.mau*b.mau;
    }
    //Chia
    void _div(phanso a,phanso b,phanso &c)
    {
        c.tu=a.tu*b.mau;
        c.mau=a.mau*b.tu;
    }
    main()
    {
        phanso a,b,c;
        cout<<"Nhap phan so thu nhat:"<<"\nNhap tu so: ";
        cin>>a.tu;
        cout<<"\nNhap mau so: ";
        cin>>a.mau;
        cout<<"Nhap phan so thu hai:"<<"\nNhap tu so: ";
        cin>>b.tu;
        cout<<"\nNhap mau so: ";
        cin>>b.mau;
    
        /// xuat
        cout<<"\nPhan so thu nhat: \t"<<a.tu<<"/"<<a.mau;
        rutgon(a);
        cout<<"\nRut Gon:\t\t"<<a.tu<<"/"<<a.mau<<endl;;
    
    
        cout<<"\nPhan so thu hai : \t"<<b.tu<<"/"<<b.mau;
        rutgon(b);
        cout<<"\nRut gon : \t\t"<<b.tu<<"/"<<b.mau<<endl;
        _add(a,b,c);
        cout<<"\na+b\t"<<c.tu<<"/"<<c.mau;
        _sub(a,b,c);
        cout<<"\na-b\t"<<c.tu<<"/"<<c.mau;
        _mul(a,b,c);
        cout<<"\na*b\t"<<c.tu<<"/"<<c.mau;
        _div(a,b,c);
        cout<<"\na/b\t"<<c.tu<<"/"<<c.mau;
    }
    
    Cho số phức dưới dạng cấu trúc gồm có 2 phần là phần thực và phần ảo. Viết chương trình nhập vào 2 số phức bất kỳ. Tính và xuất ra màn hình kết quả tổng, hiệu, tích, thương của chúng
    Mã:
    #include <iostream>
    using namespace std;
    typedef struct
    {
        int rea;
        float vir;
    }cnum;
    int _add(cnum a,cnum b,cnum &c)
    {
        c.rea=(a.rea+b.rea);
        c.vir=(a.vir+b.vir);
    }
    int _sub(cnum a,cnum b,cnum &c)
    {
        c.rea=(a.rea-b.rea);
        c.vir=(a.vir-b.vir);
    }
    int _mul(cnum a,cnum b,cnum &c)
    {
        c.rea=(a.rea * b.rea)-(a.vir*b.vir);
        c.vir=(a.vir*(float)b.rea)+((float)a.rea * b.vir);
    }
    int _div(cnum a,cnum b,cnum &c)
    {
        c.rea=(float(a.rea*b.rea)+(a.vir*b.vir))/(float(b.rea*b.rea)+(b.vir*b.vir));
        c.vir=((a.vir*float(b.rea))-(float(a.rea)*b.vir))/(float(b.rea*b.rea)+(b.vir*b.vir));
    }
    main()
    {
        cnum a,b,c;
        cout<<"Nhap so thu 1"<<endl<<"Phan thuc: ";
        cin>>a.rea;
        cout<<"\nPhan ao: ";
        cin>>a.vir;
        cout<<"\nNhap so thu 2"<<endl<<"Phan thuc: ";
        cin>>b.rea;
        cout<<"\nPhan ao: ";
        cin>>b.vir;
        _add(a,b,c);
        cout<<"\na+b: "<<c.rea<<"+"<<c.vir<<"i";
        _sub(a,b,c);
        cout<<"\na-b: "<<c.rea<<"+"<<c.vir<<"i";
        _mul(a,b,c);
        cout<<"\na*b: "<<c.rea<<"+"<<c.vir<<"i";
        _div(a,b,c);
        cout<<"\na/b: "<<c.rea<<"+"<<c.vir<<"i";
    }
    
    - Tính số ngày đã qua kể từ đầu năm cho đến ngày hiện tại. Quy ước ngày được khai báo dưới dạng cấu trúc.
    - Nhập một ngày tháng năm dưới dang cấu trúc. Tính chính xác (kể cả năm nhuận) số ngày đã qua bắt đầu từ ngày 1/ 1/ 1 đến ngày vừa nhập.
    - Khai báo ngày tháng năm theo kiểu cấu trúc. Viết chương trình tính khoảng cách (số ngày) giữa 2 tháng bất kỳ
    - Viết chương trình nhập vào một ngày tháng năm bất kỳ. Xuất ra màn hình ngày đó là thứ mấy nếu ta xem ngày 1/ 1/ 1 là thứ 2.
    - Viết chương trình nhập vào 2 ngày nào đó của tháng bất kỳ của năm bất kỳ. Tính và hiển thị ra màn hình khoảng cách giữa 2 ngày đó là bao nhiêu ngày.
    Mã:
    #include <iostream>
    using namespace std;
    typedef struct
    {
        int day;
        int month;
        int year;
    } date_time;
    date_time today;
    ///kiem tra nam nhuan
    bool check_year(int year)
    {
        if((year%400==0)||(year%4==0 && year%100!=0))
            return true;
        else
            return false;
    }
    ///tra ve so ngay cua 1 nam
    int day_of_year(int year)
    {
        if(check_year(year)==true)
            return 366;
        else
            return 365;
    }
    ///tra ve so ngay cua 1 thang
    int day_of_month(int month,int year)
    {
        switch(month)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            return 30;
            break;
        case 2:
        {
            if(check_year(year)==true)
                return 29;
            else
                return 28;
        }
        break;
        default:
            return 0;
            break;
        }
    }
    ///tinh so ngay da qua tu dau nam nay. Khong tinh nam
    int time_until_now(int day,int month,int year)
    {
        if(day>31 || day < 1 || month > 12 || month < 1)
            return 0;
        int sum_month=0;
        for(int i=0; i<month; i++)
            sum_month+=day_of_month(i,year);
        return sum_month+day;
        ///tra ve so ngay + so ngay cua tung thang
    }
    ///tinh khoang cach giua 2 thang
    int time_between_month()
    {
        int max,min,m1,m2;
        cout<<"Enter two months : "<<endl;
        cin>>m1>>m2;
        m1>m2 ? (max=m1,min=m2):(max=m2,min=m1);
        cout<<"Day between two month: "<<time_until_now(0,max,1)-time_until_now(0,min,1)<<endl;
    
    }
    main()
    {
        int d,m,y;
        cout<<"Enter Day Month Year: "<<endl;
        cin>>today.day>>today.month>>today.year;
    
        ///so ngay da qua tu 1/1/1 tinh dem ngay thang nam vua nhap
        cout<<"Time until now: "<<time_until_now(today.day,today.month,today.year)<<endl;
        ///
    
        ///tinh so ngay cua tung nam tu nam 1 den nam ngay nhap vao
        int sum_year=0;
        for(int i=0; i<today.year; i++)
            sum_year+=day_of_year(i);
        ///
    
        ///so ngay trong nam nay + so ngay tu ngay 1 den dau nam nay
        cout<<"Time from 1/1/1: "<<sum_year+time_until_now(today.day,today.month,today.year)<<endl;
        ///
    
        ///nhap 2 thang bat ky, tra ve so ngay giua 2 thang
        time_between_month();
        ///
    
    }
    
    
    Sách được quản lý dựa trên các tiêu chí sau: Thể loại sách, tên sách, tác giả, nhà xuất bản, năm xuất bản, số lượng. Viết đoạn chương trình khai báo kiểu dữ liệu Sach dựa trên các tiêu chí trên.
    Mã:
    #include <iostream>
    using namespace std;
    typedef struct
    {
        char type_book[30];
        char name_book[100];
        char author[30];
        char publisher[100];
        int public_time;
        int quantity;
    }sach;
    sach cau4[10];
    main()
    {
        int n;
        cout<<"Nhap so sach: "<<endl;
        cin>>n;
        cin.ignore();
        for(int i=0; i<n; i++)
        {
            cout<<"Ten sach: "<<endl;
            cin.getline(cau4[i].name_book,100);
            cout<<"The loai: "<<endl;
            cin.getline(cau4[i].type_book,30);
            cout<<"Tac gia: "<<endl;
            cin.getline(cau4[i].author,30);
            cout<<"Nha xuat ban: "<<endl;
            cin.getline(cau4[i].publisher,100);
            cout<<"Nam xuat ban: "<<endl;
            cin>>cau4[i].public_time;
            cout<<"So luong: "<<endl;
            cin>>cau4[i].quantity;
        }
        for(int i=0;i<n;i++)
        {
            cout<<cau4[i].name_book<<endl;
            cout<<cau4[i].type_book<<endl;
            cout<<cau4[i].author<<endl;
            cout<<cau4[i].publisher<<endl;
            cout<<cau4[i].public_time<<endl;
            cout<<cau4[i].quantity<<endl;
        }
    }
    
    - Không dùng mảng, hãy nhập vào một dãy số nguyên sau đó xuất dãy ra màn hình theo thứ tự ngược lại.
    - Không dùng mảng, hãy nhập vào một dãy số nguyên sau đó in ra màn hình dãy đã được sắp xếp dãy theo chiều tăng (hoặc giảm) dần?
    Mã:
    #include<iostream>
    using namespace std;
    main()
    {
        int *p,n,i,a;
        cout<<"\nNhap n: ";
        cin>>n;
        cin.get();
        p=new int[n];
        cout<<"\nNhap pt: ";
        for(i=0; i<n; i++)
            cin>>*(p+i);
        cin.get();
        //in theo chieu nguoc lai
        cout<<"\nIn theo chieu nguoc lai"<<endl;
        for(i=n-1; i>=0; i--)
            cout<<p[i]<<endl;
        //sap xep noi bot
        /*
        cout<<"\nSap xep noi bot"<<endl;
        for(i=0;i<n;i++)
            for(int j=n-1;j>=i+1;j--)
                if(*(p+j)<*(p+j-1))
                   {
                       a=*(p+j);
                       *(p+j)=*(p+(j-1));
                       *(p+(j-1))=a;
                   }
        */
        //sap xep chon
        for(int i=0; i<=n; i++)
        {
            int m=i;
            for(int j=i+1; j<n; j++)
                if(*(p+j)<*(p+m))
                    m=j;
            if(m!=i)
            {
                int tmp=*(p+i);
                *(p+i)=*(p+m);
                *(p+m)=tmp;
            }
        }
        cout<<"Sort-->"<<endl;
        for(i=0; i<n; i++)
            cout<<*(p+i)<<"\t";
    
    }
    
    Dùng con trỏ, nhập giá trị vào cho một dãy các số thực. Sau đó, tìm và xuất ra màn hình phần tử lớn nhất và bé nhất có trong dãy.
    Mã:
    #include<iostream>
    using namespace std;
    main()
    {
        int n,a;
        float *p;
        cout<<"\nNhap n"<<endl;
        cin>>n;
        p=new float[n];
        for(int i=0;i<n;i++)
            cin>>*(p+i);
        for(int i=0;i<n;i++)
            for(int j=n-1;j>=i+1;j--)
                if(*(p+j)<*(p+j-1))
                {
                       a=*(p+j);
                       *(p+j)=*(p+(j-1));
                       *(p+(j-1))=a;
                }
        cout<<"\nMax: "<<p[n-1];
        cout<<"\nMin: "<<p[0];
    }
    
    Sử dụng con trỏ, nhập vào một dãy ký tự. Sau đó, tìm và thay thế các ký tự ‘a’ bằng ký tự ‘b’. Hiển thị ra màn hình dãy ký tự trước và sau khi thay thế.

    Mã:
    #include<iostream>
    #define max 1000
    using namespace std;
    main()
    {
        int n,j;
        char *p;
        p=new char[max];
        cout<<"\nNhap do dai n: ";
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>*(p+i);
        j=0;
        while(j<n)
        {
            cout<<*(p+j);
            j++;
        }
        cout<<"\nThay 'a' bang 'b': "<<endl;
        j=0;
        while(j<n)
        {
            if(*(p+j)=='a')
                *(p+j)='b';
                j++;
        }
            j=0;
        while(j<n)
        {
            cout<<*(p+j);
            j++;
        }
    }
    
    Xây dựng hàm nhập, xuất, sắp xếp mảng bất kỳ bằng cách sử dụng biến con trỏ làm tham số hình thức của hàm. Sử dụng các hàm trên để viết chương trình nhập các giá trị vào cho mảng sau đó xuất ra màn hình các giá trị của mảng trước và sau khi sắp xếp
    Mã:
    #include<iostream>
    #define max 1000
    using namespace std;
    void nhap(int **p,int n)
    {
        int *q;
        cout<<"\nNhap mang: "<<endl;
        q=new int[n];
        for(int i=0; i<n; i++)
            cin>>*(q+i);
        *p=q;
    }
    void xuat(int *p,int n)
    {
        cout<<"\nXuat: "<<endl;
        for(int i=0; i<n; i++)
            cout<<"\t"<<*(p+i);
    }
    void sxchon(int *p,int n)
    {
        int i,j,m,x;
        for(i=0; i<n; i++)
        {
            m=i;
            for(j=i+1; j<n; j++)
                if(*(p+j)<*(p+m))
                    m=j;
            if(m!=i)
                {
                    x=*(p+i);
                    *(p+i)=*(p+m);
                    *(p+m)=x;
                }
        }
    }
    main()
    {
        int n,*p;
        cout<<"\nNhap n: " ;
        cin>>n;
        nhap(&p,n);
        xuat(p,n);
        sxchon(p,n);
        xuat(p,n);
    }
    
    
    Bài về chương chuỗi
    Mã:
    #include<iostream>
    #include<string.h>
    using namespace std;
    main()
    {
        //Nhap xuat ho ten cua minh
        char c[100],tmp[100],u[100],l[100];
        cout<<"\nNhap xau: ";
        cin.getline(c,100);
        //xuat ho ten cua minh
        cout<<"\nChuoi vua nhap: "<<c;
        strcpy(tmp,c);
        strcpy(u,c);
        strcpy(l,c);
        strupr(u);
        strlwr(l);
        //toan chu hoa
        cout<<"\nUpper: "<<strupr(tmp);
        //toan chu thuong
        cout<<"\nLower: "<<strlwr(tmp);
        //nghich dao ten
        cout<<"\nNghich dao: ";
        for(int i=strlen(c); i>=0; i--)
            cout<<c[i];
        //dem ky tu hoa, thuong
        int lw=0,up=0;
        for(int i=0; i<strlen(c); i++)
        {
            if((c[i]!=' ')&&(c[i]==l[i]))
                lw++;
            else if((c[i]!=' ' )&&(c[i]==u[i]))
                up++;
        }
        cout<<"\nCharacter Upper: "<<up;
        cout<<"\nCharacter Lower: "<<lw;
        //dem so tu trong chuoi
        int count=0;
        for(int i=0; i<strlen(c)-1; i++)
        {
            if(c[i]==' ' && c[i+1]!=' ')
                count++;
        }
        if(c[0]!=' ')
            count++;
        cout<<"\nSo tu: "<<count;
        //thay cac ky tu a=b;
        for(int i=0; i<strlen(c); i++)
        {
            if(tmp[i]=='a')
                tmp[i]='b';
        }
        cout<<"\nThay ky tu 'a' = 'b': "<<tmp;
    }
    
    Những bài trên đều có người hỏi nên mình post lên. Các bạn tham khảo !
  2. Offline

    trsa

    • Thành Viên Mới

    Số bài viết:
    180
    Đã được thích:
    15
    Điểm thành tích:
    0
    Mình mới đọc 3 câu 1, 2, 3. mình xin góp y tí. câu 1,2 thì ok, nhưng nếu khai báo mảng bằng con trỏ thì càng ok hơn.
    Riêng câu 3: cộng trừ nhân chia 2 phân số thì có 1 số điểm chưa được. chẳng hạn: hàm rút gọn, nếu phân số 25/15 thì chương trình của bạn ko rút gọn (vì 25%15 khác 0 và 15%25 khác 0). Lỗi thứ 2 ở hàm chia, c.tu=a.tu*b.mau -> ok, c.mau=a.mau*b.tu -> ko ok (vì phân số thì mẫu phải khác 0, nên nếu b.tu = 0 thì ==> c.mau = 0 (phân số ko đúng) ).
    integer thích bài này.
  3. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Uh, chỗ này mới xét cách rút gọn bằng tử % mẫu ==0 || mẫu % tử ==0. Quên mấy trường hợp như cùng chia hết cho 2,3,5,7,11...
    là các số nguyên tố đó.
    bổ sung tính số nguyên tố :
    Mã:
    {
      int n, i, j;
    
      printf("\nNhap gia tri N : ");
      scanf("%d", &n);
      printf("\nCac so nguyen to nho hon n la : ");
      for (i=2; i<n; i++)
      {
        for (j=2; j<i; j++)
          if (i%j == 0)
            break;
        if (j == i)
          printf("%d ", i);
      }
    
    }
    
    Bạn có thể sửa lại giùm mình. thanks
  4. Offline

    hoekaka

    • Windows 95

    Số bài viết:
    359
    Đã được thích:
    114
    Điểm thành tích:
    90
    sao ko lấy ucln rồi chia cho nhanh nhỉ :D
    integer thích bài này.
  5. Offline

    trsa

    • Thành Viên Mới

    Số bài viết:
    180
    Đã được thích:
    15
    Điểm thành tích:
    0
    chính xác là lấy ucln.

    Mã:
    {
          while(a!=b)
           {
             if(a>b)
                  a=a-b;
                  else 
                      b=b-a;
             }
        return a;
    }
    
    integer thích bài này.
  6. Offline

    lyvinhr00m

    • cụ lý

    Số bài viết:
    1.234
    Đã được thích:
    930
    Điểm thành tích:
    900
    Mã:
    #include<iostream>
    #define max 50
    using namespace std;
    
    void nhap(int a[max][max],int d,int c)
    {
    	int i,j;
    	for(i=0;i<d;i++)
    		for(j=0;j<c;j++)
    		{
    			cout<<"a["<<i<<"]["<<j<<"]=";
    			cin>>a[i][j];
    		}
    }
    void xuat(int a[max][max], int d, int c)
    {
    	int i,j;
    	for(i=0;i<d;i++)
    	{
    		cout<<endl;
    		for(j=0;j<c;j++)
    		{
    			cout<<a[i][j]<<"\t";
    		}
    	}
    }
    
    void tich(int a[max][max], int b[max][max], int c[max][max], int da, int ca, int cb)
    {
    	int i,j,k;
    	for(i=0; i<da; i++)
    		for(j=0; j<cb; j++)
    		{
    			c[i][j]=0;
    			for(k=0;k<ca;k++)
    			{
    				c[i][j]=c[i][j]+a[i][k]*b[k][j];
    			}
    			cout<<"Tich 2 ma tran vua nhap..."<<endl;
    			for(i=0;i<da;i++)
    			{
    				cout<<endl;
    				for(j=0;j<cb;j++)
    					cout<<c[i][j]<<"\t";
    			}
    		}
    }
    
    void main()
    {
    	int a[max][max], b[max][max], c[max][max];
    	int da,ca,db,cb;
    	cout<<"Nhap so dong ma tran a"<<endl;
    	cin>>da;
    	cout<<"Nhap so cot ma tran a"<<endl;
    	cin>>ca;
    	nhap(a,da,ca);
    	cout<<"Nhap so dong ma tran b"<<endl;
    	cin>>db;
    	cout<<"Nhap so cot ma tran b"<<endl;
    	cin>>cb;
    	nhap(b,db,cb);
    	cout<<"Hai ma tran vua nhap..."<<endl;
    	cout<<"Ma tra a"<<endl;
    	xuat(a,da,ca);
    	cout<<"Ma tra c"<<endl;
    	xuat(b,db,cb);
    	tich(a,b,c,da,ca,cb);
    
    	
    }
    
    Mấy bác sửa giúp em bài này với
  7. Offline

    trsa

    • Thành Viên Mới

    Số bài viết:
    180
    Đã được thích:
    15
    Điểm thành tích:
    0
    Bài trên thì ok rồi, nhưng chỗ hàm tích bạn phải xét đk để 2 ma trận có thể nhân với nhau được (số dòng ma trận a phải bằng số cột ma trận b).
    Mà bài trên bạn nên khai báo theo kiểu cấu trúc(struct) thì sẽ làm gọn hơn nhiều đó
    lyvinhr00m thích bài này.
  8. Offline

    lyvinhr00m

    • cụ lý

    Số bài viết:
    1.234
    Đã được thích:
    930
    Điểm thành tích:
    900
    chỗ này hình như lộn thì phải:
    c.vir=(a.rea*(float)b.vir)+((float)a.vir*b.rea);
  9. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    UCLN làm rồi nên làm cách khác. UCLN đây. số dương thôi.
    Mã:
    int UCLN(phanso a)
    {
        while(a.tu != a.mau)
            if(a.tu>a.mau)
                a.tu-=a.mau;
            else
                a.mau-=a.tu;
        return a.tu;
    }
    //Rut gon
    int rutgon(phanso &a)
    {
        int u=UCLN(a);
        a.tu/=u;
        a.mau/=u;
    }
    
  10. Offline

    trieuvan.n01

    • Windows 1.0

    Số bài viết:
    8
    Đã được thích:
    13
    Điểm thành tích:
    10
    bác admin làm thế này tuy là co tinh thần phát triển cho forum nhưng lại làm cho mấy bạn đang học tính ỉ lại thì cũng không nên có chăng chỉ nên ra đề và một vài gợi ý cho các bạn tham khảo rồi tụ làm thì vẫn tốt hơn
  11. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Quan trọng là dùng code để tham khảo hay chạy lấy kết quả để nộp bài thôi. Với lại code đâu có chính xác 100%. Lấy về test có thể phát sinh lỗi, sửa được là hiểu được mà.
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí