Trang 2 / 2 FirstFirst 12
Hiển thị kết quả từ 11 đến 16 / 16
  1. #11
    Tham gia
    18-01-2009
    Location
    fdgdfg
    Bài viết
    125
    Like
    0
    Thanked 1 Time in 1 Post
    Quote Được gửi bởi k2cdtin View Post
    các bạn co thể tham khảo bai nay cua mình.no chay đúng đấy:

    #include<stdio.h>
    #include<conio.h>
    unsigned int ucln_2so(unsigned int a, unsigned int b)
    { unsigned int ucln;
    ucln=1;
    while(a!=b)
    if(a>b) a=a-b; else b=b-a;
    ucln=a;
    return ucln;
    }
    void main()
    { unsigned int a,b;
    clrscr();
    printf("KIEM TRA PHAN SO TOI GIAN CHUA?\n");
    printf("Ban nhap tu so: "); scanf("%u",&a);
    printf("Ban nhap mau so: "); scanf("%u",&b);
    if(ucln_2so(a,b)>1)
    printf("Phan so chua toi gian. Phan so duoc toi gian thanh: %u/%u ",a/ucln_2so(a,b),b/ucln_2so(a,b));
    else printf("Phan so da toi gian");
    getch();
    }

    có gì cho mình ý kiến nhé. mình làm nó chạy đúng rồi. co bạn nào có cách khác tốt hơn ko?
    cho tôi góp ý với bạn 1 chút nha bài của bạn chạy chính xác nhưng nó ko thể thao tác trên số âm, cách khắc phục là dùng abs() của math.h . Thứ hai, nếu mẫu số bằng 1 thì ko lẽ in ra a/1 và cuối cùng là in kq ra chính xác bất kể a và b âm hay dương.Đây là code của mình ( dựa theo code của bạn ). Tất nhiên đây ko phải là tối ưu nhất vì nó quá dài.
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    int ucln_2so(unsigned int a, unsigned int b)
    { 
    	int ucln;
    	ucln=1;
    	while(a!=b)
    	if(a>b) 
    		a=a-b; 
    	else 
    		b=b-a;
    	ucln=a;
    	return ucln;
    }
    void main()
    { 
    	int a,b,r;
    	printf("KIEM TRA PHAN SO TOI GIAN CHUA?\n");
    	printf("Ban nhap tu so: "); scanf("%d",&a);
    	printf("Ban nhap mau so: "); scanf("%d",&b);
    	r=ucln_2so(abs(a),abs(b));
    	if(r>1)
    		{
    			printf("Phan so chua toi gian."); 
    		if(abs(b)==r)
    			{
    				if(a>0 && b<0)	
    					printf("\nPhan so duoc toi gian thanh: -%d ",abs(a)/r);
    				if(a>0 && b>0)
    					printf("\nPhan so duoc toi gian thanh: %d ",a/r);
    				if(a<0 && b<0)
    					printf("\nPhan so duoc toi gian thanh: %d ",abs(a)/r);
    				if(a<0 && b>0)
    					printf("\nPhan so duoc toi gian thanh: -%d ",abs(a)/r);
    			}
    		else
    			{
    				if(a>0 && b<0)	
    					printf("\nPhan so duoc toi gian thanh: -%d/%d ",abs(a)/r,abs(b)/r);
    				if(a>0 && b>0)
    					printf("\nPhan so duoc toi gian thanh: %d/%d ",a/r,b/r);
    				if(a<0 && b<0)
    					printf("\nPhan so duoc toi gian thanh: %d/%d ",abs(a)/r,abs(b)/r);
    				if(a<0 && b>0)
    					printf("\nPhan so duoc toi gian thanh: -%d/%d ",abs(a)/r,abs(b)/r);
    			}
    			
    		}
    	else 
    		printf("Phan so da toi gian");
    getch();
    }
    lần sau bạn viết code để trong
    Code:
     chương trình
    để anh em dễ text hơn.

  2. #12
    Tham gia
    05-09-2009
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts
    dùng lệnh cout,cin làm đi.dùng những lệnh này em kô bít gì hết a.
    các anh chị ghi rõ ý nghĩa của mỗi lệnh luôn cho em nha.Thank

  3. #13
    Tham gia
    07-08-2009
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts
    bài bạn làm trong C phải không?Mình làm cấu trúc dữ liệu trong C, còn lập trình hường đối tượng trong C++.
    bài này dùng thuật toán oclit la nhanh nhat va ngắn nhất, thầy mình có dạy dùng quá tải cho nhanh hơn, có đi cùng là struct nua, mà chưa viết được.
    cảm ơn các bạn đã gửi code này, để mình thử xem rùi gửi trao đổi nghen

  4. #14
    Tham gia
    15-03-2007
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts
    int USCLN(int a,int b)
    {
    int x = abs(a),y = abs(b),tam;
    int n = x<y?x:y;
    for(int i = n; i > 0; --i)
    if((x%i==0) &&(y%i) == 0)
    {
    tam = i;
    break;
    }
    return (tam);
    }

  5. #15
    Tham gia
    15-11-2005
    Location
    Hà Nội
    Bài viết
    696
    Like
    0
    Thanked 14 Times in 12 Posts
    Xem cái bài thảo luận này xem:
    Tối giản phân số trên C

    Chúc may mắn!

  6. #16
    Tham gia
    19-03-2009
    Bài viết
    10
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi mylinhnguyen.hvt View Post
    . Trong một chương trình, viết các hàm tìm ước số chung lớn nhất và bội số chung nhỏ nhất của hai số a, b và sử dụng trong các bài toán:
    a. Tối giản một phân số
    b. Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của dãy n số nguyên dương nhập từ bàn phím
    b. tim UCLN

    int UCLN( int a; int b)
    {
    if(a<b)
    {
    int c=a;a=b;b=c;
    };
    else
    if(a>=b)
    {
    if((a mod b)==0) return b;
    else
    return UCLN(b; a mod b);
    };
    };
    void main()
    {
    int n,a[1000];
    printf("nhap so phan tu n= ");scanf("%d",&n);
    printf("nhap gia tri cho tung phan tu:\n");
    for(int i=1;i<=n;i++)
    {
    printf("\na["%d"]:=",i); scanf("%d",&a[i]);
    };
    int uc=UCLN(a[1];a[2]);
    for(i=1;i<n;i++)uc=UCLN(uc;a[i+1])
    printf("uoc chung lon nhat cua day so la:%d",uc);
    int bc=1;
    for(i=1;i<=n;i++)bc*=a[i];
    for(i=1;i<n;i++)bc/=uc;
    printf("boi chung nho nhat la: %d",bc);
    };

Trang 2 / 2 FirstFirst 12

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •