Grub
Вот задание:
___________________________________________________________
Условие.
Последовательность чисел Фибоначчи u0,u1....un образуется по закону u(0)=0;u(1)=1;u(i)=u(i-1)+u(i-2); i=1,2,3....
Дано натуральное число n>1 . Получить u0,u1....u.
____________________________________________________________
вот решение:
Решение.
В программу вводится количество элементов массива в диапазоне 1 <n<46 (т.к. 47 член последовательности превышает допустимое значение для типа данных int). Осуществляется проверка введённых значений. Выделяется оперативная память под массив с помощью функции malloc(). В цикле производим заполнение массива по формуле u(i)=u(i-1)+u(i-2). Затем с помощью функции printf() все элементы массива выводится на экран.
Код:
#include <conio.h>;
#include <stdio.h>;
#include <alloc.h>;
void main ()
{
int n,i,*u; //n-количество элементов последовательности, i - счётчик, *u- указатель на массив
do{
printf(" Warning! Max value n<=46 \n Input n="); // "введите кол-во элементов последовательности"
scanf("%d",&n); // вводим n
clrscr();
}while(n>46); //если n>46, то повторяем цикл do-while
u =(int *)malloc(n*sizeof(int)); // выделяем динамически память под массив
u[0]=0; // задаём значение первых двух элементов
u[1]=1;
printf("\n for u0=%d; \n for u1=%d;",u[0],u[1]); //выводим первые два эл-та на экран
for(i=2;i<n;i++)
{
u[i]=u[i-1]+u[i-2];
printf("\n for u%d=%d;",i,u[i]); // и далее в цикле, согласно формуле все остальные эл-ты выводим
}
getch();
free(u); // очищаем отведённую под массив память
}