Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Cách xử lý với tệp trong C

    Chào các bạn , mình là mem mới
    Mong các bạn giúp mình tìm lỗi sai trong chương trình này,mình đã tìm suốt mấy hôm nay nhưng không ra.Đây là đề bài :


    Trong hệ thống NTFS, bộ nhớ phân phối cho các file theo đơn vị cluster, mỗi cluster là 4KB (tức là 4096 byte). Như vậy dù file của bạn có kích thước là 1 byte nó vẫn chiếm bộ nhớ 4KB trên đĩa từ.
    Yêu cầu:Cho sốnguyên dương là kích thước của file trong đơn vị byte. Hãy xác định số KB mà file đó chiếm trên đĩa từ trong hệ thống NTFS

    Dữ liệu: Vào từ file văn bản NTFS.INP: gồm một dòng chứa số nguyên n
    Kết quả: Đưa ra file văn bản NTFS.OUT một sốnguyên là số KB mà file đó chiếm trên đĩa từ trong hệ thống NTFS
    Đây là bài làm của mình :
    Mã:
    #include<stdlib.h>
    #include<math.h>
    #include<stdio.h>
    //int i,KB;
    int main()
     {
       FILE *f1,*f2;
       int i,KB;
      // clrscr();
       f1 = fopen("D:\\C_Project\\Bai1_OlympicChuyen\\NTFS.INP","r");
       if(f1 ==NULL)
              { 	
    		  		printf("Loi");
                    return 1;
              }
       fscanf(f1,"%d",&i);
       if(i<=4096)
              KB =4;
       else
              KB =4*(i/4096+1);
       f2 = fopen("D:\\C_Project\\Bai1_OlympicChuyen\\NTFS.OUT","w");
       if(f2==NULL)
              { 	
    		  		printf("Loi");
                    return 1;
              }
       fprintf(f2,"%d",KB);
       fclose(f1);
       fclose(f2);
       getch();
       return 0;
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    KB =4*(i/4096+1);
    "+1" là "gần đúng" vì vd với i = 8192, KB = 4*(2+1) = 12 KB là sai, vì chỉ cần 8KB là đủ rồi. Lỗi ở chỗ nếu i chia hết cho 4096 thì +0, còn i ko chia hết cho 4096 thì +1.

    nếu chỉ +1 thì đúng với 4095/4096 trường hợp. 1/4096 trường hợp thì sai.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • 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
  •