| Đăng nhập qua LiketLy 

trả lời
  • include<iostream.h>

    #include<conio.h>

    #include<iomanip.h>

    void ktra(int a[],int k);

    void ktra(int a[],int k)

    {
    int i,dem=0;

    a[0]=1;

    a[1]=1;

    for(i=2;i<100;i++)

    a[i]=a[i-1]+a[i-2];

    for(i=0;i<100;i++)

    if(k==a[i])dem++;

    if(dem==1)cout<<"\n"<<k<<" la so Fibonaci";

    else cout<<"\n"<<k<< " khong phai la so Fibonaci";



    }

    main()

    {
    int a[100],k;

    char ch;

    while(1)

    {

    cout<<"\nNhap gia tri ban can kiem tra:";

    cin>>k;

    ktra(a,k);

    cout<<"\nBan muon tiep tuc kiem tra khong:(C/K)?";

    ch=getch();

    if(ch=='k'||ch=='K';)break;

    }

    getch();

    }

    Hãy thank nếu cảm thấy có ích bạn nhá

    Trả lời bởi nicky_nick
    ăm trước
    0 0
  • Câu trả lời được chấp nhận

    cho 2 cái code đều có thể kiểm tra số vừa nhập có phải là số Fibonacci

    đây là 2 hàm con vì vậy hãy tự viết hàm main nha; chú ý nên kiểm soát luôn số n nhập vào

    VD: buộc phải nhập vào số 0<=n<=max của kiểu số int hoặc double cái này nên có sẽ tránh đc việc phải kiểm tra số âm mà chắc chắn số âm ko phải là số Fibonacci hoặc vượt quá khả năng tính toán của kiểu số dẫn đến tràn bộ nhớ hoặc sai kết quả

    code 1:

    int kiem_tra(int n)

    {
    int f0=0,f1=1,f2,kq=0;//kq=0 la so fibonacci; nguoc lai

    if(n==0||n==1)

    kq=0;

    else

    {while(f0+f1<=n)

    {

    f2=f0+f1;

    f0=f1;

    f1=f2;

    }

    if(f2==n)

    kq=0;

    else

    kq=1;}

    return kq;

    }

    code 2:

    void kiem_tra(int n)

    {
    int *f,i=2,kq=0;

    f=new int [n];

    f[0]=0;f[1]=1;

    do{

    f[i]=f[i-1]+f[i-2];

    if(f[i]==n)

    {kq=0; break; }

    if(f[i]<n)

    {kq=1; i++; }

    }while(f[i]<=n);

    if(kq==0)

    cout<<"\n Day la so Fibonacci";

    else

    cout<<"\n Day khong phai la so Fibonacci";

    }

    Trả lời bởi chy_yeu
    ăm trước
    0 0
Những câu hỏi tương tự
Câu hỏi từ Thể loại Lập trình - Coding