Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка invalid types 'int[int]' for array subscript на с++

Иван Рубанов Ученик (131), на голосовании 3 месяца назад
В коде для вывода последовательности чисел Фибоначчи до n #include <iostream>
#include <vector>
using namespace std;
vector<int> phi(int n)
{
int k = n, now = 0;
vector <int> fib;
fib.push_back(1);
fib.push_back(1);
for (int i = 2; i < n ; ++i){
now = n[i-1] + n[i-2];
fib.push_back(now);
}
return fib;
}
int main()
{
int n;
cin >> n;
vector<int> res = phi(n);
for (int i = 0; i < res.size(); ++i){
cout << res[i] << " ";
}
return 0;
}

Выводит ошибку invalid types 'int[int]' for array subscript
Дополнен 4 месяца назад
в строке 11. now = n[i-1] + n[i-2];
Голосование за лучший ответ
Rayn Winston Профи (607) 4 месяца назад
Про инвалида не соврали
Даниил Кондрашов Ученик (165) 4 месяца назад
Ошибка "invalid types 'int[int]' for array subscript" в вашем коде на C++ происходит потому, что вы пытаетесь использовать индексацию массива на переменную n, которая является целым числом, а не массивом. В строке now = n[i-1] + n[i-2]; вы пытаетесь получить доступ к элементам массива n, но n не является массивом.
Чтобы исправить эту ошибку, вам нужно использовать вектор fib вместо n для доступа к предыдущим числам Фибоначчи. Вот исправленный код:

#include <iostream>
#include <vector>
using namespace std;

vector<int> phi(int n)
{
vector <int> fib;
fib.push_back(1);
fib.push_back(1);
for (int i = 2; i < n ; ++i){
int now = fib[i-1] + fib[i-2];
fib.push_back(now);
}
return fib;
}

int main()
{
int n;
cin >> n;
vector<int> res = phi(n);
for (int i = 0; i < res.size(); ++i){
cout << res[i] << " ";
}
return 0;
}

Этот код будет корректно генерировать и выводить последовательность Фибоначчи до n терминов.
Иван РубановУченик (131) 4 месяца назад
Спасибо большое
Похожие вопросы