Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 676
#1

Сформировать массив из N чисел Фибоначчи - C++

10.05.2014, 06:48. Просмотров 391. Ответов 4
Метки нет (Все метки)

Привет всем. Нужно написать программу,формирующую массив из n чисел фибоначчи. Вот мой код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int n, i;
int *a = new int[n];
 
int main()
{
    scanf("%d", &n);
    for (i = 0; i <= n; i++){
        if (i <= 2)
            a[i] = 1;
        else(a[i] = a[i - 2] + a[i - 1]);
        printf("%d\n", a[i]);
    }
    return 0;
}
После числа 144 выводит бред и потом пишет Debug Assertion Failed. В чем причина? Заранее спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 06:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сформировать массив из N чисел Фибоначчи (C++):

Для заданного значения n сформировать массив X(n), являющийся последовательностью чисел Фибоначчи - C++
Для заданного значения n сформировать массив X(n) , являющийся последовательностью чисел Фибоначчи. Определить, насколько...

Сформировать n чисел Фибоначчи (a1=1, a2=1,ai=ai-1+ai-2) - C++
помогите пожалуйста

Сформировать n чисел Фибоначчи - C++
Помогите пожалуйста Сформировать n чисел Фибоначчи (a1=1, a2=1,ai=ai-1+ai-2).

Сформировать одномерный массив целых чисел, используя датчик случайных чисел - C++
Условие такое 1.Сформировать одномерный массив целых чисел, используя датчик случайных чисел. Распечатать полученный массив. ...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел - C++
1)Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2)Распечатать полученный массив. 3)Перевернуть массив...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел - C++
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.Распечатать полученный массив. Удалить 5 первых элементов...

4
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
10.05.2014, 07:11 #2
Sh@dow777, вы за пределы массива выходите
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 676
10.05.2014, 08:37  [ТС] #3
UnsKneD, Да, действительно. Не увидел. Спасибо. Я исправил код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int n, i;
int *a = new int[n];
 
int main()
{
    scanf("%d", &n);
    for (i = 0; i < n; i++){
        if (i <= 2)
            a[i] = 1;
        else(a[i] = a[i - 2] + a[i - 1]);
        printf("%Ld\n", a[i]);
    }
    return 0;
}
Теперь выводит числа правильно, даже если n=31, но все равно показывает ошибку Debug Assertion Failed. И система проверки пишет "Ошибка компиляции". В чем теперь проблема?

Добавлено через 26 минут
Извините, не
C++
1
if(i<=2)
а
C++
1
if(i<=1)
. Но все равно опять выводит бред.
0
daert
1 / 1 / 2
Регистрация: 09.05.2014
Сообщений: 47
10.05.2014, 10:24 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
кто изначально будет инициировать переменную n до создания динамического массива?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main()
{
    int n, i;
    scanf("%d", &n);
    int *a = new int[n];
    for (i = 0; i < n; i++){
        if (i <= 2)
            a[i] = 1;
        else(a[i] = a[i - 2] + a[i - 1]);
        printf("%Ld\n", a[i]);
    }
    return 0;
}
кроме того у тебя последовательность неправильная: нулевой член последовательности равен 0, а у тебя 1
должно быть так
C++
1
2
3
if(i==0) a[i]=0;
     else if(i==1) a[i]=1;
        else(a[i] = a[i - 2] + a[i - 1]);
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 676
10.05.2014, 11:33  [ТС] #5
Цитата Сообщение от daert Посмотреть сообщение
кто изначально будет инициировать переменную n до создания динамического массива?
спасибо, буду знать. программа заработала.
0
10.05.2014, 11:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2014, 11:33
Привет! Вот еще темы с ответами:

Сформировать одномерный массив целых чисел, используя датчик случайных чисел - C++
1) Сформировать одномерный массив целых чисел, используя датчик случайных чи-сел. 2) Распечатать полученный массив. 3) Удалить элементы...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел. - C++
Сформировать одномерный массив целых чисел, используя датчик случайных чисел. Удалить 5 последних элементов массива. Добавить в...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел - C++
Удалить элементы кратные 7. Добавить после каждого нечетного элемента массива элемент со значением 0.

Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду Фибоначчи - C++
Помогите с задачкой Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru