Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Dùng mảng một chiều để tạo thư viện lưu trữ các số vô cùng lớn

  1. #1
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Mặc định Dùng mảng một chiều để tạo thư viện lưu trữ các số vô cùng lớn

    Mình đang phải làm một cái assaigment về tạo cái thư viện tính toán. Trong đó có thể tính toán được các số cực lớn mà các kiểu dữ liệu thông thường không lưu trữ được. Mình nghĩ chắc phải dùng mảng mới làm được,nhưng thật toán cụ thể không rành lắm, hôm qua xem qua cái thư viện viết trong pascal,thực sự là không hiểu gì :(.Ai biết cái này chỉ giúp với!

  2. #2
    Ngày gia nhập
    09 2011
    Bài viết
    84

    tính số cực lớn nên dùng thư viện gmp.h
    thư viện đó hỗ trợ tính toán số tới đâu cũng được
    RISC better than CISC
    phamthechung0@gmail.com

  3. #3
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Ý mình không phải là dùng cái thư viện nào,mà là tự tạo một thư viện để tính toán (vd: cộng trừ nhân chia).Mình nghĩ là phải tạo ra hai mảng a[],b[](tối đa 1000 số,vd thế ) để lưu trữ a va b.Nhưng mình không biết cách biểu diễn để a(gồm i chữ số) cộng b(gồm j chữ số) và in ra kết quả.Mình mới học C,và cũng vừa học qua mảng nên nhiều chỗ không hiểu lắm :(.Mong mọi người giúp đỡ.

  4. #4
    Ngày gia nhập
    09 2011
    Bài viết
    84

    C Code:
    1. struct mp{
    2.   char sign;
    3.   int exponent;
    4.   void *limp;
    5. };
    dùng cấu trúc trên để làm số lớn
    RISC better than CISC
    phamthechung0@gmail.com

  5. #5
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Cảm ơn Hardwire nhiểu! Mình vừa làm xong hàm cộng rồi,nhưng đến hàm trừ nó lại báo lỗi phân đoạn,có ai từng gặp lỗi này chưa,chếch hộ mình với.
    Code:
    #include <stdio.h>
    int m,n,dem,nho=0,s,i,j,a[1000],b[1000],c[1000]; //Gia su so nguyen lon co 1000 chu so; tuy y!
    void nhap()
    {
        printf("Nhap so chu so cua so nguyen a, m= ");
        scanf("%d",&m);
        printf("Nhap lan luot cac chu so cua a:\n");
        for(i=m-1;i>=0;i--)
            scanf("%d",&a[i]);
        printf("\n\nNhap so chu so cua so nguyen b, n= ");
        scanf("%d",&n);
        printf("Nhap lan luot cac chu so cua b:\n");
        for(i=n-1;i>=0;i--)
            scanf("%d",&b[i]);
        //Buoc 1: Loai bo cac chu so 0 vo nghia o mang a va b
        while((a[m-1]==0)&&(m>0))
            m--;
        if(m==0)
            a[m++]=0;
        while((b[n-1]==0)&&(n>0))
            n--;
        if(n==0)
            b[n++]=0;
        //Buoc 2: Them cac chu so 0 vao dau cua mang co so phan tu be hon
        if(m<n)
            for(i=1;i<=n-m;i++)
                a[m-1+i]=0;
        else 
            for(i=1;i<=m-n;i++)
                b[n-1+i]=0;
        if(m<n)m=n;
        else 
            n=m;
    }
    //buoc 3 tinh ham tru
    int tru () 
    {//xet th mang a nho hon mang b
      if(m<n)
        {
        for(i=0;i<=n-1;i++)
    	{//xet nguoc tu so cuoi cua 2 day de tinh phep tru co nho
    	   if(b[i]<a[i])
    	     {
    		c[i]=b[i]+10-a[i];
    		c[i]=b[i+1]-1-a[i+1];
    	      }
    	   else
    	        c[i]=b[i]-a[i];
    	}
        }
    //th hai mang co so phan tu bang nhau
      else if(m=n)
         {
         for(i=m-1;i>=0;i--)
    	{//tim so lon hon(a[]>b[])
    	   if(a[i]>b[i])
    	     {     
    		 for(j=0;j<m-1;j++)
    		    {//phep tru co nho
    			if(a[j]<b[j])
    			{
    			  c[j]=a[j]+10-b[j];
    			  c[j+1]=a[j+1]-1-b[j-1];
    			}
    			else
    			   c[j]=a[j]-b[j];
    		    }
    	     }
    	//tim so lon hon(b[]>a[])
    	   else if(b[i]>a[i])
    	      {  for(j=0;j>=0;j++)
    		    {//phep tru co nho
    			if(b[j]<a[j])
    			{
    			  c[j]=b[j]+10-a[j];
    			  c[j+1]=b[j+1]-1-a[j-1];
    			}
    			else
    			   c[j]=b[j]-a[j];
    		    }
    	     }
    	   else if(a[i]=b[i])
    		c[i]=0;
    	}
        }
    //xet th mang a lon hon mang b
        else if(m>n)
         {
           for(i=0;i<=n-1;i++)
    	{//phep tru co du
    	   if(a[i]<b[i])
    	     {
    		c[i]=a[i]+10-b[i];
    		c[i]=a[i+1]-1-b[i+1];
    	      }
    	   else
    	        c[i]=a[i]-b[i];
    	}
        }		
    	
    }
    int main()
    {
        nhap();
        tru(a,b);
        printf("\n\nTong la: \n");    
        for(i=m-1;i>=0;i--)    //Buoc 4: Xuat ket qua
            printf("%d\n",c[i]);
        
        return 0;
    }

  6. #6
    Ngày gia nhập
    09 2011
    Bài viết
    84

    Mặc định Dùng mảng một chiều để tạo thư viện lưu trữ các số vô cùng lớn

    bạn cố tách ra thành module giùm mình vì mình không đọc được code của bạn
    RISC better than CISC
    phamthechung0@gmail.com

  7. #7
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    703

    Có hẳn 1 topic về tính toán số lớn trên diễn đàn rồi mà.
    Với lại bạn bị lỗi thế nào thì phải cho mọi người biết là bạn test với a=?, b=? và cụ thể cái mã lỗi nó như thế nào chứ.

  8. #8
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Trích dẫn Nguyên bản được gửi bởi G.Perelman Xem bài viết
    Có hẳn 1 topic về tính toán số lớn trên diễn đàn rồi mà.
    Với lại bạn bị lỗi thế nào thì phải cho mọi người biết là bạn test với a=?, b=? và cụ thể cái mã lỗi nó như thế nào chứ.
    Mình vừa đọc mấy bài đấy rồi,thank nhiều!
    Còn cái lỗi của mình khi chạy chương trình là "segmentation fault". Sau khi tham khảo mình đã sửa được bài và chạy được chương trình, mặc dù nguyên nhân của lỗi trên thì mình vẫn chưa hiểu lắm

Các đề tài tương tự

  1. Chia sẻ bí quyết nấu ăn cùng tấm đá muối
    Gửi bởi dietmoigayhai trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 16-11-2012, 10:13 AM
  2. Trả lời: 3
    Bài viết cuối: 11-01-2012, 03:09 PM
  3. Bài tập C++ Tìm tổng những số trong dãy chia hết cho 3 và tận cùng là 5?
    Gửi bởi monkey_92 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 19
    Bài viết cuối: 21-10-2011, 02:18 AM
  4. Mảng 2 chiều, cộng 2 ma trận cùng cấp bất kì?
    Gửi bởi Cloud Strife trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 08-04-2009, 12:08 AM
  5. Cùng chia sẻ bookmark firefox
    Gửi bởi chuong01 trong diễn đàn Giải trí - Thư giãn
    Trả lời: 3
    Bài viết cuối: 06-03-2009, 08:38 AM

Quyền hạn của bạn

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