0 / 0 / 0
Регистрация: 16.03.2018
Сообщений: 13
1

Заполнить массив числами Фибоначчи

24.03.2018, 09:38. Показов 3631. Ответов 4
Метки нет (Все метки)

Задание: создать массив и заполнить его числами Фибоначчи, которые будут создаваться рекурсией.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstdlib>
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    int i;
    int mas[50];
    mas[0]=1;
    mas[1]=1;
    for (i==2; i<50; i++);
    mas[i]=mas[i-2]+mas[i-1];
    for (i==0; i<50; i++);
    cout << 'massiv= ' << mas[i] ;
    system ("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2018, 09:38
Ответы с готовыми решениями:

Заполнить массив числами фибоначчи
Задачка С++ : Заполнить массив числами фибоначчи (в которой каждое последующее число равно сумме...

Заполнить массив числами Фибоначчи, добавить к элементам с нечетными индексами заданное число
Заполнить массив числами фибоначи (в которой каждое последующее число равно сумме двух предыдущих...

Заполнить матрицу числами Фибоначчи
Заполнить двумерный массив размерностью n x n следующим образом: первый ряд - числа Фибоначчи, а...

Создать список и заполнить его 10 числами из ряда Фибоначчи
Создать список и заполнить его 10 числами из ряда Фибоначчи (1,1,2,3,5,...)и вывести на экран. ...

4
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
24.03.2018, 09:44 2
Цитата Сообщение от danilovadana Посмотреть сообщение
i==2
Здесь вы сравниваете i с 2
Оператор присваивания =
math.h вам не нужен
И здесь нет рекурсии. Тут скорее динамическое программирование

Добавлено через 1 минуту
Цитата Сообщение от danilovadana Посмотреть сообщение
cout << 'massiv= ' << mas[i] ;
И даже при успешной компиляции будет бардак, т.к. не переходя на новую строку вы выводите massiv=1massiv=1massiv=2massiv=3 ..
C++
1
2
3
4
for(int i = 0; i < 50; i++)
{
cout<<i+1<<"-th number is "<<mas[i]<<endl;
}
0
0 / 0 / 0
Регистрация: 16.03.2018
Сообщений: 13
24.03.2018, 10:19  [ТС] 3
Всё исправила, но программа выводит большое число: 176935657650
почему?

Добавлено через 25 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream> 
#include <cstdlib>
 
using namespace std; 
 
int main() 
{ 
int i; 
int mas[50]; 
mas[0]=1; 
mas[1]=1; 
for (i=2; i<50; i++); 
mas[i]=mas[i-2]+mas[i-1]; 
for (i=0; i<50; i++); 
cout  << mas[i] << endl; 
system ("pause"); 
return 0; 
}
Прога выводит 50.
как сделать так, чтоб выводила мне ряд Фибоначчи?
0
Модератор
Эксперт С++
12455 / 10016 / 6028
Регистрация: 18.12.2011
Сообщений: 26,813
24.03.2018, 11:03 4
Цитата Сообщение от danilovadana Посмотреть сообщение
for (i=2; i<50; i++);
Вы написали
C++
1
2
for (i=2; i<50; i++)
    ;// пустой оператор
C++
1
2
3
4
5
6
for (i=2; i<50; i++)
{ 
     mas[i]=mas[i-2]+mas[i-1]; 
}
for (i=0; i<50; i++) // Тут тоже не надо ;
    cout  << mas[i] << endl;
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
24.03.2018, 17:23 5
danilovadana, числа Фибоначчи через рекурсию:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream> 
using namespace std;
 
int f(int n) 
{
    if ( n == 1 || n == 2) return (n -1); 
    return f(n-1) + f(n-2); 
}
 
int main()
{
    int n;    
    cout << "n="; cin >> n;     
    for (int i=1; i <=n; i++ )   
    cout <<f(i)<<" ";    
    cout <<endl;
system("pause");
return 0;
}
включите в этот код объявление массива (только не статического как у Вас а динамического - это обязательно, т.к. n изначально не определено) и заполните элементы этого массива значениями f(i) т.е. a[i-1]=f(i) в цикле.

и ряд Фибоначчи вроде не с нуля начинается (ноль нужно не включать ИМХО) - хотя не обязательно - уже посмотрел что может и с нуля начинаться

Добавлено через 9 минут
лучше всё же сам добавлю (чтоб не напутали чего ):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream> 
using namespace std;
 
int f(int n) 
{
    if ( n == 1 || n == 2) return (n -1); 
    return f(n-1) + f(n-2); 
}
 
int main()
{
    int n;    
    cout << "n="; cin >> n;
    int*a = new int[n];
    for (int i=1; i <=n; i++ )
    {
    a[i-1]=f(i);    
    cout <<a[i-1]<<" ";
    }
    cout <<endl;
    delete[]a;
system("pause");
return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2018, 17:23
Помогаю со студенческими работами здесь

Заполнить массив двенадцатью первыми членами последовательности Фибоначчи
Заполнить массив двенадцатью первыми членами последовательности Фибоначчи (последовательность, в...

Заполнить массив первыми ста простыми числами, и вывести массив на экран
Объявите одномерный целочисленный массив в котором не более 100 элементов выполните генерацию...

Заполнить массив случайными числами и отобрать в другой массив все простые числа
заполнить массив случайными числами в интервале и отобрать в другой массив все простые числа....

Считать файл в массив и вывести те элементы, которые являются числами Фибоначчи
Написать программу, которая считывает линейный массив натуральных чисел из файла, имя которого...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru