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

Đề tài: In dãy Fibonaci vào tệp

  1. #1
    Ngày gia nhập
    03 2008
    Nơi ở
    Nhà tù
    Bài viết
    37

    Mặc định In dãy Fibonaci vào tệp

    Input:

    Tệp văn bản P11.INP bao gồm nhiều dòng. Mỗi dòng ghi một số tự nhiên.

    O utput:

    Tệp P11.OUT ghi kết quả của chương trình: trên mỗi dòng ghi lại biểu diễn Fibonaci của các số tự nhiên tương ứng trong tệp P11.INP. Mỗi dòng biểu diễn một dãy.

    Đay là code của mình không biết sai chỗ nào mà khi mình mở file P11.OUT thì thấy trống không:
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <conio.h>
    4.  
    5. int main()
    6. {
    7.    int N,i=1,j=1,S=1;
    8.    FILE *f,*h;
    9.  
    10.     f=fopen("NP","ab");
    11.     h=fopen("ngu","a");
    12.       clrscr();
    13.      while((N=fgetc(f))!=EOF)
    14.       {
    15.  
    16.     do
    17.     {
    18.       S=i+j;
    19.      i=j;
    20.      j=S;
    21.       fputc(S,h);
    22.     }while((i+j)<=N);
    23.  
    24.  
    25.       i=1;
    26.       j=1;
    27.       }
    28.     return 0;
    29.     fclose(f);
    30.     fclose(h);
    31. }


    File P11.INP của mình gồm:
    Code:
    56
     7
     8

  2. #2
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Nếu bạn tự mình nhập liệu vào file P11.INP như trên mình thấy thì nó sẽ có kiểu là kiểu file text bạn mở nó ra đọc theo kiểu đọc nhị phân dữ liệu đọc sẽ không chính xác . Hơn nữa bạn mở file để ghi tiếp "a" nên con trỏ file lúc mới mở sẽ ở cuối file nếu không dịch nó về đầu file sẽ không đọc được dữ liệu gì cả nên ra rỗng là phải .
    Code tạm một bài dùng nhập xuất file text :
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main() {
    4.     FILE *fi,*fo;
    5.     int fib1,fib2,fib,n;
    6.     fi = fopen("P11.INP","r");
    7.     fo = fopen("P11.OUT","w");
    8.     if (fi == 0) {
    9.         printf("\nERROR OPEN FILE!!");
    10.         exit(1);
    11.     }
    12.     while ((fscanf(fi,"%d",&n)) != EOF) {
    13.         fib1 = fib2 = 1;
    14.         do {
    15.             fib = fib1 + fib2;
    16.             fib1 = fib2;
    17.             fib2 = fib;
    18.             fprintf(fo,"%d ",fib);
    19.         }
    20.         while (fib1 + fib2 <= n);
    21.         fprintf(fo,"%c",'\n');
    22.     }
    23.     fclose(fi);
    24.     fclose(fo);
    25.     return 0;
    26. }
    I'm superman

  3. #3
    Ngày gia nhập
    03 2008
    Nơi ở
    Nhà tù
    Bài viết
    37

    Hơn nữa bạn mở file để ghi tiếp "a" nên con trỏ file lúc mới mở sẽ ở cuối file nếu không dịch nó về đầu file sẽ không đọc được dữ liệu gì cả nên ra rỗng là phải .
    Mở file để ghi tiếp "a" thì có liên quan gì tới với đọc đâu

  4. #4
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Sao lại không liên quan chứ nhìn lại Code của bạn :
    C Code:
    1. f=fopen("NP","ab"); //Mở file bằng "ab" --> con trỏ file sẽ ở cuối file để thực hiện việc ghi tiếp cho dù là bạn đọc hay ghi dữ liệu vào file cần dùng fseek hay rewind để chuyển con trỏ về đầu file nếu không sẽ không đọc được dữ liệu gì cả .
    2. h=fopen("ngu","a");
    Như Code của bạn ở trên sẽ không đọc được dữ liệu đầu vào từ file input vì mở kiểu "ab" con trỏ tệp lúc đầu ở cuối tệp --> không đọc được dữ liệu đầu vào --> không có dữ liệu xuất ra file output --> file output rỗng . Mình muốn nói chỗ đó chứ việc mở file kết quả để ghi thì "w" hay "a" không ảnh hưởng gì .
    Đã được chỉnh sửa lần cuối bởi trung_dk070384 : 08-12-2008 lúc 08:33 PM.
    I'm superman

  5. #5
    Ngày gia nhập
    03 2008
    Nơi ở
    Nhà tù
    Bài viết
    37

    uh,đúng rồi.Cảm ơn bạn !

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

  1. Bài tập C In ra các số fibonaci nhỏ hơn n?
    Gửi bởi depzai trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 17-10-2010, 12:58 PM
  2. Tìm giá trị số fibonaci thứ n bằng đệ quy????
    Gửi bởi blue_23 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 09-08-2010, 02:22 AM
  3. Dãy Fibonaci
    Gửi bởi pannaruto trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 02-01-2010, 11:30 AM
  4. Bài tập C | Tìm số Fibonaci thứ n!
    Gửi bởi nqpbvh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 14
    Bài viết cuối: 25-06-2009, 05:18 PM
  5. tìm dãy fibonaci với số lớn???
    Gửi bởi #include# trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 11-04-2008, 12:45 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