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

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

Восстановить пароль Регистрация
 
Sh@dow777
11 / 11 / 3
Регистрация: 10.12.2013
Сообщений: 645
10.05.2014, 06:48     Сформировать массив из N чисел Фибоначчи #1
Привет всем. Нужно написать программу,формирующую массив из 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. В чем причина? Заранее спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 06:48     Сформировать массив из N чисел Фибоначчи
Посмотрите здесь:

C++ Сформировать одномерный массив целых чисел, используя датчик случайных чисел
C++ Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
C++ Для заданного значения n сформировать массив X(n), являющийся последовательностью чисел Фибоначчи
C++ Сформировать n чисел Фибоначчи (a1=1, a2=1,ai=ai-1+ai-2)
Сформировать одномерный массив целых чисел, используя датчик случайных чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
10.05.2014, 07:11     Сформировать массив из N чисел Фибоначчи #2
Sh@dow777, вы за пределы массива выходите
Sh@dow777
11 / 11 / 3
Регистрация: 10.12.2013
Сообщений: 645
10.05.2014, 08:37  [ТС]     Сформировать массив из N чисел Фибоначчи #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)
. Но все равно опять выводит бред.
daert
1 / 1 / 2
Регистрация: 09.05.2014
Сообщений: 41
10.05.2014, 10:24     Сформировать массив из N чисел Фибоначчи #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]);
Sh@dow777
11 / 11 / 3
Регистрация: 10.12.2013
Сообщений: 645
10.05.2014, 11:33  [ТС]     Сформировать массив из N чисел Фибоначчи #5
Цитата Сообщение от daert Посмотреть сообщение
кто изначально будет инициировать переменную n до создания динамического массива?
спасибо, буду знать. программа заработала.
Yandex
Объявления
10.05.2014, 11:33     Сформировать массив из N чисел Фибоначчи
Ответ Создать тему
Опции темы

Текущее время: 23:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru