Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: vấn đề về độ lớn bộ nhớ của mảng

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    0

    Mặc định vấn đề về độ lớn bộ nhớ của mảng

    có ai chỉ cho tui biết làm thế nào tạo ra 1 cái mảng 1 chiều có thể lấy 10 triệu phần tử nhập từ file được ko ,dùng bộ nhớ động rồi cũng ko được lấy được có 10000 phần tử à ,ai chỉ giúp đi (dùng BORLANDC) làm sao cấp phát bộ nhớ cho nó được

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    có ai chỉ cho tui biết làm thế nào tạo ra 1 cái mảng 1 chiều có thể lấy 10 triệu phần tử nhập từ file được ko ,dùng bộ nhớ động rồi cũng ko được lấy được có 10000 phần tử à ,ai chỉ giúp đi (dùng BORLANDC) làm sao cấp phát bộ nhớ cho nó được
    Bạn dùng làm gì mà lấy nhiều thế, không dùng mảng được đâu, cập phát động cũng không ổn. Bạn dùng danh sách liên kết chắc được đó. Chắc chỉ cần liên kết 1000 cái mảng trên lại là OK. ^^

  3. #3
    Ngày gia nhập
    09 2008
    Bài viết
    0

    mình cần để làm chương trình các thuật toán sắp sếp ,ổng kêu là phải sắp sếp tới 10 triệu phần tử lận

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    ông thầy bạn ra đề vậy là cố tình ko cho bạn dùng nhiều bộ nhớ mà đòi hỏi bạn phải tìm thuật giải thích hợp để giải quyết. Bạn ko nêu bài toán cụ thề nên mình chỉ góp ý được tới đây thôi.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    09 2008
    Bài viết
    0

    dùng thuật toán sắp sếp VD SELECTION_SORT để sắp sếp 10 triệu phần tử lấy từ file, mình bị tắc ở chỗ ko tạo được mảng đủ lớn để chứa 10 triệu phần tử

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định vấn đề về độ lớn bộ nhớ của mảng

    Mỗi phần tử trong mảng của bạn có miền giá trị giới hạn từ bao nhiêu đến bao nhiêu ?
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  7. #7
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    10.000.000 phần tử kiểu int * 4 bytes = 40.000.000 => 40 MB, không tệ với một chương trình để làm bài tập
    None!

  8. #8
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi Xcross87 Xem bài viết
    10.000.000 phần tử kiểu int * 4 bytes = 40.000.000 => 40 MB, không tệ với một chương trình để làm bài tập
    Nhưng BC31 có 640K thôi thì làm sao cấp 40mb được. Mình nghĩ nếu số có miền giới hạn thì ta dùng phương pháp đếm, nếu miền giới hạn lớn quá thì đọc file lại nhiều lần.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  9. #9
    Ngày gia nhập
    09 2008
    Bài viết
    0

    mình dùng code này để tạo 10 triệu phần tử
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<string.h>
    #include <dos.h>
    #include<alloc.h>
     #define MAX 10000
    void main()
    	{       clrscr();
    		FILE *MANG;
    		MANG=fopen("C:\\matran.txt","w");
    		unsigned long a,n,i;
    		scanf("%ld",&n);
    		randomize();
    		fprintf(MANG,"%ld\n",n);
    		for(i=0;i<n;i++)
    		{a=random(MAX);
    		fprintf(MANG,"%5ld",a);
    		
    		}
    		
    	       }
    rồi ko biết làm sao để nhập 10 tiệu phần tử đó vào trong mảng để chay thuật toan được
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<string.h>
    #include <dos.h>
    #include<alloc.h>
    void Swap( unsigned long &x, unsigned long &y);
    void SelectionSort_sapgiam( unsigned long a[], unsigned long n);
    void ReadData();
    unsigned long *a,n;
    void ReadData()
    {	
    
    		
    	FILE *f;
    	f=fopen("C:\\matran.txt","rt");
    	fscanf(f,"%d",&n);
          	a(unsigned long*)calooc(n,sizeof(int));
    	for( long i=1;i<=n;i++){
    		fscanf(f,"%d",&a[i]);
    	}
    	fclose(f);
    
    }
    
    void Swap( unsigned long &x, unsigned long&y)
    {
    	unsigned long bien_tam=x;
    	x=y;
    	y=bien_tam;
    }
    void SelectionSort_sapgiam( unsigned longa[],unsigned long n)
    {
    	for(unsigned long i=0;i<n-1;i++)
    	{
    		unsigned long max=i;
    
    		for(unsigned long j=i+1;j<n;j++)
    			if(a[max]<a[j])
    				max=j;
    
    		Swap(a[max],a[i]);
    	}
    	
    }
    void main()
    	{       clrscr();
    		
    		ReadData();
    		SelectionSort_sapgiam(a,n);
    		 unsigned long i;
    		FILE *MANG;
    		MANG=fopen("C:\\output.txt","w");
    		fprintf(MANG,"%ld\n",n);
    		for(i=0;i<n;i++)
    		{
    		fprintf(MANG,"%5ld",a[i]);
    		}
    		fclose(MANG);	
    		
    	       }
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 30-09-2008 lúc 11:21 PM.

  10. #10
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Cái đề này chắc là bắt làm bằng phương pháp sắp xếp ngoại như Merge sort.

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