Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2013, 23:54   #1
slava5170
Пользователь
 
Регистрация: 01.12.2010
Сообщений: 10
По умолчанию Не заходит в цикл (программа нахождения предела отношения двух последовательных чисел ряда Фибоначчи с заданной точностью)

Разработайте программу, которая позволяет найти предел отношения двух последовательных чисел ряда Фибоначчи с заданной точностью.
Ряд Фибоначчи: 1 1 2 3 5 8 13 21 и т.д.
При разработке данной программы и во всех последующих лабораторных работах используйте технологию структурного программирования.

Разработайте функцию вычисления n-го члена рада Фибоначчи, которую будете использовать для определения предела.

Предел отношения двух последовательных чисел ряда Фибоначчи равен коэффициенту "золотого сечения". Программа должна находить этот предел с заданной точностью.

Считают, что значение определено с заданной точностью, если абсолютная величина разности двух последовательных приближений результата, полученных при различных значениях n, не превышает заданной погрешности. Таким образом, в программе необходимо задавать значение погрешности.

Код:
#include <stdio.h>
#include <math.h>

int input()
{
    float E;
    printf ("Ââåäèòå E: ");
    while (scanf ("%f", &E) != 1 )
    {
        while (getchar()!='\n');
        printf ("erorr ");
    }
    return E;
}

int fib (int k)
{
    int f1, f2, t, i;
    for (i=1, f1=0, f2=1; i<k; i++)
    {
        t=f1;
        f1=f2;
        f2+=t;
    }
    return f2;
}

float lim ()
{
    int n;
    float E,S;
    E=input();
    n = 0;
    while (abs(fib(n+2)/fib(n+1)-fib(n+1)/fib(n))<E)
    {
          printf("%d", n);
          S = (fib(n+1))/(fib(n));
          printf("%f",S);
          n=n+1;
    }
          

int main ()
{
    int n,a;
    a=lim();
    getch();
return 0;
}
в чем проблема?
и если кто может помогите дописать код



___________
1) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)

2) Название темы должно адекватно отражать суть решаемой задачи/проблемы.

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.10.2013 в 09:13.
slava5170 вне форума Ответить с цитированием
Старый 07.10.2013, 09:15   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Функция lim(), выдаёт значение float. Результат вычислений Вы передаёте типу int. Возможно ошибка кроется в этом.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить графический алгоритм и программу для нахождения суммы ряда с заданной точностью ginfix Помощь студентам 1 30.03.2011 23:39
Сумма ряда с заданной точностью MarchZM Общие вопросы C/C++ 0 09.10.2010 16:10
нахождения суммы ряда с заданной точностью E pinch000 Общие вопросы C/C++ 1 06.11.2009 13:03