Задача на фибоначчи. помогите решить.

Тема в разделе "Общие вопросы по С и С++", создана пользователем Mcicool, 9 окт 2006.

  1. Mcicool

    Mcicool Гость

    Написать функцию без параметров, без массивов в теле функции
    и без глобальных переменных, возвращающую при каждом обращении
    ссылку на переменную, содержащую значение очередного члена ряда
    Фибоначчи:
    a[0]=1, a[1]=1,..., a=a[i-1]+a[1-2] для i>1.
    В основной программе ввести с клавиатуры размер динамически
    формируемого массива и определить массив. Используя функцию,
    присвоить элементам массива значения членов ряда Фибоначчи и
    вывести их в обратном порядке, определив соответствующий
    макрос.
    Написать вторую функцию, "разыскивающую" в массиве "самый левый"
    элемент с заданным свойством. Свойство выберите самостоятельно.
    Функция должна возвращать указатель (адрес) на найденный элемент
    либо 0, если элементов с заданным свойством в массиве нет.
    Используя функцию, так измените значения найденных элементов
    в созданном ранее массиве, чтобы они утратили искомое свойство.
    Выведите измененный массив.
     
  2. pushkin

    pushkin Гость

    Условие задачи очень "пахнет" олимпиадностью. По крайней мере мне пока не очень понятно, как можно выдавать каждый раз разные значения на выходе из функции (Random я не рассматриваю), если негде хранить промежуточные данные (два предыдущих числа из последовательности). Конечно, можно извратнуться и хранить эти два числа в файле или передавать их Web сервису, написанному специально для этой цели - в этих случаях все условия будут соблюдены.

    Словом, все вышеперечисленное заставляет меня усомниться в корректности условия задачи. Может быть имелось в виду, что нужно написать функцию-член класса, среди полей которого могут быть переменные (в таком случае они уже не будут глобальными).

    Короче, я пока пас. Если что-нить придумаю - обязательно сюда напишу.

    P. S. Все остальные требования вообще простые относительно первого: функция без параметров, без массивов в теле (без возвращаемого значения:)), которая при каждом обращении возвращает следующее число в последовательности Фибоначи.
     
  3. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    Задача совсем не олимпиадная, скорее на знание языка. Скорее всего предпологается использование статических переменных(для не реитерабельной функции)

    Код (Text):
    int fenob()
    {
    static int f=1;
    static int s=1;
    int t=f+s;
    f=s;
    s=t;
    return t;
    }
    такой вот набросок. не совсем правильный так как выдает члены начиная с третьего, но думаю суть понятна
     
  4. pushkin

    pushkin Гость

    Опана - тут я и накололся - действительно так возможно, но статические переменные - те же глобальные, только у них область видимости ограничена телом функции. А я и забыл про них - спасибо за напоминание :)))
     
  5. Slavon76

    Slavon76 Гость

    Привет, посмотри этот код - может быть подойдёт :
    #include <conio.h>
    #include <stdio.h>

    long fib (int n)
    {
    if ((n == 0) || (n ==1))
    return 1;
    else
    return (fib (n-1) + fib (n-2));
    }

    void main()
    {
    int n = 0;
    for ( ; n <= 20; n++)
    printf ("Fibunachi (%d): %ld\n\r", n, fib(n));
    }
     
  6. pushkin

    pushkin Гость

    Код, конечно, работает, но, к сожалению, не проходит по условию задачи - нужно было написать функцию без параметров. То, что проходит по условию уже привел г-н Kmet. Спасибо ему большое.
     
  7. Mcicool

    Mcicool Гость

    Спасибо всем большое ) Я, правда уже сам все давно сделал ))
     
Загрузка...
Похожие Темы - Задача на фибоначчи
  1. sasha465
    Ответов:
    2
    Просмотров:
    6.075
  2. elzim
    Ответов:
    0
    Просмотров:
    929
  3. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.117
  4. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.105
  5. MonteCristo
    Ответов:
    1
    Просмотров:
    852

Поделиться этой страницей