24.02.2010, 15:03
общий
это ответ
Здравствуйте, Ананьев Рудольф Олегович.
Программа для стандарта ANSI в приложении.
Приложение:
#include <stdio.h>
#include <math.h>
// функция расчёта максимального индекса. вход: количество бит числа, выход: максимальный индекс
unsigned int getMaxFibbonachi(int m)
{
double fi = 1.6180339887;
unsigned maxi = floor(log((pow(2.0, m) - 1)*sqrt(5.0))/log(fi));
return maxi;
}
int main()
{
unsigned long int i = 0;
unsigned long int Fi;
unsigned long int u, v, k;
FILE* in = fopen("input.txt", "r"); // открытие входного файла
if (in)
{
fscanf(in, "%u", &i);
fclose(in);
}
printf("Index: %u\n", i);
// вывод максимальных индексов (для знаковых чисел отнимаем один бит)
printf("Max index for int: %u\n", getMaxFibbonachi(sizeof(int)*8 - 1));
printf("Max index for long: %u\n", getMaxFibbonachi(sizeof(long)*8 - 1));
printf("Max index for unsigned long: %u\n", getMaxFibbonachi(sizeof(unsigned long)*8));
if (i <= getMaxFibbonachi(sizeof(i)*8))
{
// расчёт i-го числа Фиббоначи
Fi = 1;
u = 1;
v = 1;
for (k = 2; k < i; ++k)
{
u = Fi;
Fi = v;
v = u;
Fi = Fi + u;
}
// вывод рассчитанного значения
printf("F(%u) = %u\n", i, Fi);
FILE* out = fopen("output.txt", "w"); // открытие выходного файла
if (out != 0)
{
fprintf(out, "%u", Fi);
fclose(out);
}
}
return 0;
}