Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 79
Благодарности: 1

Профиль | Отправить PM | Цитировать


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);         // очищаем отведённую под массив память
 }

Отправлено: 11:35, 06-06-2006 | #5