如何将一个值与整个数组进行比较?

时间:2018-01-29 16:18:32

标签: c++

#include <iostream>
using namespace std;
int main () {
int n;
cin >> n;
int arr[n];
arr[0] = arr[1] = 1;
for (int i = 2; i < n; i++){
    arr[i] = arr[i-1] + arr[i-2];
}

for (int i = 1; i <= n; i++){
   if (i==arr[i])
    cout <<"F";
   else
    cout <<"f";

}
return 0;
} 

此程序必须采用(整数),然后打印由大写和小写字母'F','f'组成的名称。名称中的字母从1到n编号。从1到n它将搜索第i个数字是否在Fibonacci系列中它将打印'F'否则它将打印'f'。
I.E输入:8个预期输出:FFFfFffF(从1到n)我的输出:FFFfffff
我试图这样做,但我陷入了第五次循环迭代。

2 个答案:

答案 0 :(得分:0)

作为评论中的状态,你的情况是错误的:

void fibo(int n) {
    std::vector<int> arr(n); // Vector instead of VLA.

    arr[0] = arr[1] = 1;
    for (int i = 2; i < n; i++){
        arr[i] = arr[i-1] + arr[i-2];
    }

    for (int i = 1; i <= n; i++){
        if (std::find(arr.begin(), arr.end(), i) != arr.end()) { // Does arr contains i
            std::cout << "F";
        } else {
            std::cout << "f";
        }
    }
}

当fibo正在增加序列时,你甚至可以摆脱数组:

void fibo(int n) {
    int a = 1;
    int b = 1;

    for (int i = 1; i <= n; i++){
        if (i == b)
        {
            int c = a + b;
            a = b;
            b = c;
            std::cout <<"F";
        } else {
            std::cout <<"f";
        }
    }
}

Demo

答案 1 :(得分:0)

我快速对此进行了编码,但它完成了工作。您应该尝试正确格式化代码(空格和注释)作为开始。如果您正在接受用户输入,那么您需要非常小心他们提供您期望的内容。在上面的代码中,我可以传入一个负数,字符串或我选择的任何内容,其余代码将执行!

您的代码也需要开始在table.useAllAvailableWidth() 上循环,因为Fibonacci序列也是为此值定义的。

i = 0