Форум программистов, компьютерный форум CyberForum.ru

Красная бактерия - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
crazygor1
 Аватар для crazygor1
6 / 6 / 1
Регистрация: 06.02.2010
Сообщений: 131
27.10.2011, 19:50     Красная бактерия #1
Доброго времени суток! Ребят помогите плизик с задачей:
Имеется n бактерий красного цвета. Через 1 такт времени красная бактерия меняется на зелёную, затем через 1 такт времени делится на красную и зелёную. Сколько будет всех бактерий через k тактов времени?
В консольном приложении.
Заранее благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2011, 19:50     Красная бактерия
Посмотрите здесь:

C++ Иероглифы вместо русских букв и Красная строка
Web Красная кнопка
Каждая бактерия делится на 4 в течение одной минуты,в начальный момент имеется одна бактерия.Сколько станет бактерий через 10 минут? Turbo Pascal
Каждая бактерия ежеминутно делится на 2. Если в нечале у нас была одна бактерия, то сколько бактерий появится через 5,7,9,11,13,15 минут? Turbo Pascal
Lisp Красная линия
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
27.10.2011, 19:53     Красная бактерия #2
Через рекурсионную функцию
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.10.2011, 21:42     Красная бактерия #3
Цитата Сообщение от crazygor1 Посмотреть сообщение
Имеется n бактерий красного цвета. Через 1 такт времени красная бактерия меняется на зелёную, затем через 1 такт времени делится на красную и зелёную. Сколько будет всех бактерий через k тактов времени?
Я немного перефразирую задание. Если оно Вас устроит то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
 
int main()
{
    int i, k, r, g=0, t;
    cin>>r;
    cin>>k;
    for(i=0; i<k; i++)
    {
        t=g;
        g+=r;
        r=t;
    }
    cout<<g+r;
    return 0;
}
Имеется n бактерий красного цвета. Через 1 такт времени красная бактерия меняется на зелёную, затем через 1 такт времени делится на красную и зелёную. Зеленая бактерия делится на красную и зелёную каждый такт. Сколько будет всех бактерий через k тактов времени?
crazygor1
 Аватар для crazygor1
6 / 6 / 1
Регистрация: 06.02.2010
Сообщений: 131
27.10.2011, 23:47  [ТС]     Красная бактерия #4
Спасибо, а как эту задачу реализовать через рекурсию?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
28.10.2011, 06:03     Красная бактерия #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
void rec(int r, int g, int i)
{
    if(i==0)
        cout<<r+g;
    rec(g, r+g, i-1);
}
int main()
{
        int k, r;
        cin>>r;
        cin>>k;
        rec(r, 0, k);
        return 0;
}
vndtta
66 / 43 / 5
Регистрация: 17.10.2011
Сообщений: 146
Завершенные тесты: 1
28.10.2011, 09:19     Красная бактерия #6
Цитата Сообщение от crazygor1 Посмотреть сообщение
Доброго времени суток! Ребят помогите плизик с задачей:
Имеется n бактерий красного цвета. Через 1 такт времени красная бактерия меняется на зелёную, затем через 1 такт времени делится на красную и зелёную. Сколько будет всех бактерий через k тактов времени?
В консольном приложении.
Заранее благодарен!
это последовательность фибоначчи в чистом виде
m-такты, k- красные бактерии, z- зеленые бактерии
z[m]=k[m-1]+z[m-1]=S[m-1]
k[m]=z[m-1]=S[m-2]
S[m]=k[m]+z[m]=S[m-1]+S[m-2]

ну а для этой последовательности есть формула Бине, по которой любой элемент вычисляется
http://ru.wikipedia.org/wiki/Числа_Фибоначчи
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2011, 09:51     Красная бактерия
Еще ссылки по теме:

C++ Каждая бактерия делится на две в течении одной минуты
Каждая бактерия делится на две в течении одной минуты Turbo Pascal
HTML, CSS Красная строка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
28.10.2011, 09:51     Красная бактерия #7
crazygor1, в моем коде рек функцией функцию rec() напишите так:
C++
1
2
3
4
5
6
7
8
9
void rec(int r, int g, int i)
{
        if(i==0)
        {
                cout<<r+g;
                return;
        }
        rec(g, r+g, i-1);
}
Yandex
Объявления
28.10.2011, 09:51     Красная бактерия
Ответ Создать тему
Опции темы

Текущее время: 08:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru